当表的数据量达到一定数量时(如单个.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. BZOJ 3339 线段树

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

  2. POJ 2184 DP

    思路: f[j]表示当ts的和为j的时候tf的最大值. 这时候要分情况讨论: (我把状态平移了101000) 若ts[i]>=0倒序循环 否则正序 (防止ts被用了多次) f[101000]=0 ...

  3. mysql导入数据,涉及到时间转换,乱码问题解决

    表结构: drop table if exists `qi_an_log`;CREATE TABLE `qian_log` (`dt` LONG NOT NULL COMMENT '产生日期,格式yy ...

  4. Java Servlet 3.0 新特性

    Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...

  5. 你不知道的JavaScript(二)数组

    作为一种线性数据结构,几乎每一种编程语言都支持数组类型.和c++.java这些强类型的语言相比,JavaScript数组有些不同,它可以存放任意类型的值.上节中有提到过JS中任意类型的值都可以赋值给任 ...

  6. 自定义pulltoRefresh的刷新和加载动画

    一:定义刷新动画的layout 共同的设置方法是 1:getDefaultDrawableResId() 2:refreshingImpl() 正在刷新时的回调方法,可以设置开始动画 3:resetI ...

  7. RocketMQ学习笔记(5)----RocketMQ监控平台rocketmq-console-ng的搭建

    1. 下载rocketmq-console-ng 官网地址:https://github.com/apache/rocketmq-externals 拉下来之后,使用idea打开rocketmq-co ...

  8. CF1029E Tree with Small Distances (贪心)

    题目大意:给你一棵边权为1的树,让你加入一些边,使得根节点(1号节点)到其他节点的最短距离不大于2 并没有想到贪心...... 正解的贪心思路是这样的 用一个堆维护当前距离最远的点,然后把根节点和它的 ...

  9. 紫书 习题 8-23 UVa 1623 (set妙用 + 贪心)

    这道题我是从样例中看出思路了 2 4 0 0 1 1 看这组数据, 输出的是No, 为什么呢?因为两个1之间没有神龙喝水, 所以一定会有水灾. 然后就启发了我,两次同一个湖的降水之间必须至少有一次神龙 ...

  10. 【POJ 3714】Raid

    [题目链接]:http://poj.org/problem?id=3714 [题意] 给你两类的点; 各n个; 然后让你求出2*n个点中的最近点对的距离; 这里的距离定义为不同类型的点之间的距离; [ ...