当表的数据量达到一定数量时(如单个.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. kafka的使用

    kafka基于zookeeper. 需要安装kafka.zookeeper. 安装方法参考:http://tzz6.iteye.com/blog/2401197 启动zookeeper:点击zkSer ...

  2. Windows下安装和使用MongoDB

    支持平台:从2.2版本开始,MongoDB不再支持Windows XP.要使用新版本的MongoDB,请用更新版本的Windows系统. 重要:如果你正在使用Windows Server 2008 R ...

  3. C#.Net版本自动更新程序及3种策略实现

    C#.Net版本自动更新程序及3种策略实现 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上,然后建立一个XML文件,该文件列举最新程序文件的版本号及最后修改日期.如程序 ...

  4. jquery动态表格,动态添加表格行

    转载收藏于:https://www.cnblogs.com/zhangqs008/archive/2013/05/09/3618459.html 效果图:   Html:<html> &l ...

  5. 异步线程编程,线程池,线程组,后面涉及ThreadLocal在理解

    join模拟订单 package com.future.demo.future; /** * * * @author Administrator * */ public class NormalThr ...

  6. ztree连接数据库,实现下拉菜单

    $(document).ready(function(){ var treeObj = $("#treeDemo"); $.fn.zTree.init(treeObj, setti ...

  7. sudo不用在输入密码

    在任意的路径之下执行:sudo visudo 的命令对文件进行修改: 其中的: sudo ALL=(ALL) %admin ALL=(ALL) 这两个语句为: sudo ALL=(ALL) NOPAS ...

  8. PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql

    在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件.聊天服务器发送广播等.如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢. Swoole 的 TaskWorker 进程 ...

  9. pandas 4 处理缺失数据nan

    from __future__ import print_function import pandas as pd import numpy as np np.random.seed(1) dates ...

  10. 紫书 习题8-5 UVa 177 (找规律)

    参考了https://blog.csdn.net/weizhuwyzc000/article/details/47038989 我一开始看了很久, 拿纸折了很久, 还是折不出题目那样..一脸懵逼 后来 ...