当表的数据量达到一定数量时(如单个.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. Linux xhost命令详解

    xhost 命令用途 控制什么人可以访问当前主机上的增强 X-Windows. 语法 xhost [ + | - ] [ Name ] "+"表示增加,"-"表 ...

  2. Linux就该这么学 20181003(第三章管道符)

    参考链接https://www.linuxprobe.com/ 输入输出重定向 标准输入重定向STDIN 文件描述符0 默认键盘输入 标准输出重定向STOUT 文件描述符1 默认输出到屏幕 错误输出重 ...

  3. POJ 2502 Dijkstra OR spfa

    思路: 建完了图就是模板水题了 -.. 但是建图很坑. 首先要把出发点向地铁站&终点 连一条边 地铁站之间要连无向边 地铁站向终点连一条边 以上的边权要*0.006 两个地铁站之间要连无向边 ...

  4. Win7 利用批处理文件结束进程

    @echo offtitle 结束进程正在进行... ::结束进程TeamViewer.exewmic process where name="TeamViewer.exe" ca ...

  5. 洛谷P1339 [USACO09OCT]热浪Heat Wave(最短路)

    题目描述 The good folks in Texas are having a heatwave this summer. Their Texas Longhorn cows make for g ...

  6. X86 X64 X86_64 AMD64 区别

    X86:32位(一般i386是32位CPU的统称) X64:64位(代表CPU:IA64,现在几乎没有这样纯粹的64位CPU,都是兼容32位的64位CPU,如下) X86_64:兼容32位的64位CP ...

  7. Java事件处理机制1

    实现一个小程序,怎样通过点击不同的按钮,让面板的背景色发生相应的变化,如图: public class Demo2 extends JFrame implements ActionListener{ ...

  8. HttpWebRequest WebExcepton: The remote server returned an error: (407) Proxy Authentication Required.

    1. Supply the credentials of the Currently Logged on User to the Proxy object similar to this: // Be ...

  9. H5中嵌入flash

    <object height="900px" width="100%" classid="clsid:D27CDB6E-AE6D-11cf-96 ...

  10. SP1487 PT07J - Query on a tree III 主席树+dfs序

    Code: #include<iostream> #include<cstdio> #include<algorithm> #include<string&g ...