当表的数据量达到一定数量时(如单个.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. zzuoj--10399--Turing equation(模拟)

    Turing equation Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 152  Solved: 85 [Submit][Status][Web ...

  2. 11.使用boostregex遭遇无法打开libboost_regex-vc120-mt-sgd-1_62.lib的问题

    通过Boost库可以在C++项目中使用正则表达式,配置好环境后链接过程出现”无法打开libboost_regex-vc120-mt-sgd-1_62.lib”的错误.  原因是按照官方生成lib的方法 ...

  3. BZOJ 3339 线段树

    思路: 考虑离线处理 显然 l固定时 r越大 ans越大 那我们不妨按照l从小到大排序 l->l+1的时候 l到next[l]这段区间都跟a[l]取min就好了 搞颗线段树维护一下 //By S ...

  4. 【DNN】 安装问题

    http://blog.csdn.net/hwt0101/article/details/9153083 这是IIS 注册的问题  IIS 在安装VS 之前就装上了,所以 没有注册是上 F4 从新卸载 ...

  5. AndroidStudio EventBus报错解决方法its super classes have no public methods with the @Subscribe

    首先说明,以前我用eventBus的jar包写得项目demo,前几天就写了一个EventBus的实例,这次我没用jar包,直接用gradle引用的,可是demo写完了,报错: its super cl ...

  6. 004.ES2015和ES2016新特性--块级作用域变量

    其基本原理就是JavaScript的作用域链,下面以对比的方式来展示一下函数级作用域和块级作用域. 函数级作用域 var fns = []; for (var i = 0; i < 5 ; i+ ...

  7. <%=%>、<%%>、<%@%>、<%#%>的区别

    1.<%= %> 里面放变量名,获取后台的变量值,直接输入变量到页面上,里面放的变量名,未经过encode eg: 后台: seession["ab"]=ab; 前台: ...

  8. Concurrency pattern

    In software engineering, concurrency patterns are those types of design patterns that deal with the  ...

  9. FastDFS图片服务器搭建

    *FastDFS图片服务器搭建准备:1.需要libfastcommon安装包 选择最新稳定版(libfastcommon-1.0.36.tar.gz)2.需要FastDFS安装包 选择最新稳定版(fa ...

  10. 查看centos7启动项

    [root@k8s-master ~]# chkconfig Note: This output shows SysV services only and does not include nativ ...