当表的数据量达到一定数量时(如单个.myd文件都达到10G,myd 是mysql的数据文件),这时候读取起来必然效率很低。
         1、从业务角度可以解决(分表)
              比如,通过 id %10,user0、user1.... 根据不同的余数插入不同的表。但是较麻烦
              保证不了数据的唯一性。            
 
         2、通过 mysql 的分区功能
             ①create table topic(                                                                //范围内分区
                  tid int primary key auto_increment,
                  title char(20) not null default ''
                  )engine myisam charset utf8
                  partition by range(tid)(                                                     //根据那个字段分区
                  partition t0 values less than(10),                                       //小于10的在第一个区
                  partition t1 values less than(20),                                       //小于20的在第二个区
                  partition t2 values less than(MAXVALUE)                                      //大于20的在第三个区
                  );
              好处是:打开的线程数更多、读取效率更高(不会因为读取同一个 MYD 文件而锁住)
 
             alter table topic drop partition  t2                                           #删除分区。
   
             alter table topic add partition(                                                #增加分区【增加前要先删除之前指定的最大值】
                  partition t0 values less than(30),                                       #小于30的在第一个区

                  partition t1 values less than(40),                                       #小于40的在第二个区
                  partition t2 values less than(MAXVALUE)                                      #大于40的在第三个区
             )
 
            ②create table user(                                                               #根据散列值分区
                     uid int,
                     uname char(6),
                     aid int
                )engine myisam charset utf8
                partition by list(aid)(
                   partition bj values in (1),                                   #如果 aid=1 插入到 bj 分区文件
                   partition hb values in (2),                                   #如果 aid=2 插入到 hb 分区文件
                   partition xs values in (3),                                   #如果 aid=3 插入到 xs 分区文件
                   partition ah values in (4)                                    #如果 aid=4 插入到 ah 分区文件
                );
 
             注意:使用分区的使用,分区的那一列值不要为null(如果不小心为null,mysql 理解为0 尽量去执行)。
                      也可以用表达式返回值,但是不如值来的快。比如:partition by rang(year(regtime)) 用注册年分来区分。
                      innodb 在高并发下分区的增删改优于 myisam
                      mysql 有自带的并发检测程序:mysqllasp
                      还有 hash、hashkey、list 分区

                      不能给之前没有分区的表修改添加分区。
 
 
 
 
 
              cd /var/lib/mysql/
              ls                                      //显示当前所有的数据库
              cd  itool/                           //进入到某个数据库
              ls                                      //显示当前库的所有文件
                         .frm                     //表的结构文件
                         .MYD                    //表的数据文件
                         .MYI                     //表的索引文件

mysql优化篇之表分区的更多相关文章

  1. MySQL优化篇系列文章(二)——MyISAM表锁与InnoDB锁问题

    我可以和面试官多聊几句吗?只是想... MySQL优化篇系列文章(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. 面试官:咦,小伙子,又来啦 ...

  2. MySQL优化篇(一),我可以和面试官多聊几句吗?——SQL优化流程与优化数据库对象

    我可以和面试官多聊几句吗?只是想偷点技能过来.MySQL优化篇(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. MyISAM表锁和InnoD ...

  3. mysql优化篇(基于索引)

    在上一篇文章:Mysql索引(一篇就够le) 中介绍了索引的基本使用,分类和原理,也强烈建议先读Mysql索引(一篇就够le),然后继续本文的阅读 我们也知道mysql的优化可以从很多的方面进行,比如 ...

  4. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  5. 【mysql优化1】表的优化与列类型选择

    数据类型及字节数参考http://www.cnblogs.com/qlqwjy/p/8590639.html -------------------------表的优化:--------------- ...

  6. Mysql优化系列之表设计规范和优化

    一.范式 如果详细的讲范式,要写大大大篇文章来讲,这里假设大家知道一些基本的范式规则,我用简洁的语句和例子说明 第一范式:列不可再分,譬如地址字段,可以再细分为省市区门牌号等等(其实还是看需求怎么整) ...

  7. MySQL优化篇(未完待续)

    一.优化SQL语句的一般步骤 1.通过 show status命令了解各种sql的执行频率 mysql客户端连接成功后,通过show[session|global] status命令,可以查看服务器的 ...

  8. MySQL数据库篇之表的增删改查

    主要内容: 一.表介绍 二.创建表 三.查看表结构 四.修改表结构 五.复制表 六.删除表 1️⃣ 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称 ...

  9. mysql优化: 内存表和临时表

    由于直接使用临时表来创建中间表,其速度不如人意,因而就有了把临时表建成内存表的想法.但内存表和临时表的区别且并不熟悉,需要查找资料了.一开始以为临时表是创建后存在,当连接断开时临时表就会被删除,即临时 ...

随机推荐

  1. C#中的CSP(Communicating sequential processes)

    说起Golang(后面统称为Go),就想到他的高并发特性,在深入一些就是 Goroutine.在大家被它优雅的语法和简洁的代码实现的高并发程序所折服时,其实C#/.NET也可以很容易的做到.今天我们来 ...

  2. sicily 1091 Maximum Sum (动规)

    //1091.Maximum Sum //b(i,j) = max{b(i,j-1)+a[j], max(b(i-1,t)+a[j])} (t<j) #include <iostream& ...

  3. 关于PageRank的总结

    好久不用CSDN,最近想给带的本科生实验课开个期末习题专题页,发现CSDN的博客忽然要绑定之类.只好弃用回博客园写学习总结了.塞翁失马焉知非福. *************************** ...

  4. Codeforces 987B. High School: Become Human

    解题思路: 1.题意:判断x^y和y^x谁大谁小. 2.由于x^y和y^x太大了,时间复杂度也不允许,所以做同等变换,比较e^(ylnx)和e^(xlny). 3.即为比较ylnx和xlny的大小. ...

  5. iF.svnadmin 安装遇到的坑

    iF.svnadmin 官网:http://svnadmin.insanefactory.com/ 安装配置iF.svnadmin : http://blog.linhere.com/archives ...

  6. SPA SEO SSR三者有什么区别

    SPA通俗的说就是单页面应用(single page application) 优点 页面之间的切换非常快 一定程度减少了后端服务器的压力 后端程序只需要提供api,不需要客户端到底是web端还是手机 ...

  7. webpack中optimization 的 runtimeChunk 是干嘛的

    结论:把runtime部分的代码抽离出来单独打包 https://developers.google.com/web/fundamentals/performance/webpack/use-long ...

  8. [codevs3269]混合背包

    题目大意:一道混合背包模板. 解题思路:分三种情况讨论,01和完全没什么问题,多重背包需要把物品分成$\log W[i]$件,然后01即可,分成W[i]件01会TLE. 读优大法好! C++ Code ...

  9. 05003_Linux的基本命令

    1.目录结构 Linux的目录结构:Linux各目录及每个目录的详细介绍 链接:Linux各目录及每个目录的详细介绍 密码:84ab 2.LInux的基本命令 (1)目录切换命令 ①root是超级管理 ...

  10. inux 虚拟机桥接模式 静态ip设置,桥接才是王道

    修改/etc/sysconfig/network-scripts  目录下的 ifcfg-eth0 [root@yangcb network-scripts]# cat ifcfg-eth0 DEVI ...