MySQL分区路径子分区再分区


Posted in MySQL onApril 13, 2022

介绍

可以针对分区表的每个分区指定各自的存储路径,对于innodb存储引擎的表只能指定数据路径,因为数据和索引是存储在一个文件当中,对于MYISAM存储引擎可以分别指定数据文件和索引文件,一般也只有RANGE、LIST分区、sub子分区才有可能需要单独指定各个分区的路径,HASH和KEY分区的所有分区的路径都是一样。RANGE分区指定路径和LIST分区是一样的,这里就拿LIST分区来做讲解。

一、MYISAM存储引擎

CREATE TABLE th (id INT, adate DATE)
engine='MyISAM'
PARTITION BY LIST(YEAR(adate))
(
  PARTITION p1999 VALUES IN (1995, 1999, 2003)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx',
  PARTITION p2000 VALUES IN (1996, 2000, 2004)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx',
  PARTITION p2001 VALUES IN (1997, 2001, 2005)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx',
  PARTITION p2002 VALUES IN (1998, 2002, 2006)
    DATA DIRECTORY = '/data/data'
    INDEX DIRECTORY = '/data/idx'
);

注意:MYISAM存储引擎的数据文件和索引文件是分库存储所以可以为数据文件和索引文件定义各自的路径,INNODB存储引擎只能定义数据路径。

二、INNODB存储引擎

CREATE TABLE thex (id INT, adate DATE)
engine='InnoDB'
PARTITION BY LIST(YEAR(adate))
(
  PARTITION p1999 VALUES IN (1995, 1999, 2003)
    DATA DIRECTORY = '/data/data',
    
  PARTITION p2000 VALUES IN (1996, 2000, 2004)
    DATA DIRECTORY = '/data/data',
   
  PARTITION p2001 VALUES IN (1997, 2001, 2005)
    DATA DIRECTORY = '/data/data',
    
  PARTITION p2002 VALUES IN (1998, 2002, 2006)
    DATA DIRECTORY = '/data/data'
  
);

MySQL分区路径子分区再分区

指定路径之后在原来的路径中innodb生成了4个指向数据存储的路径文件,myisam生成了一个th.par文件指明该表是分区表,同时数据文件和索引文件指向了实际的存储路径。

三、子分区

1.子分区

CREATE TABLE tb_sub_dir (id INT, purchased DATE)
ENGINE='MYISAM'
    PARTITION BY RANGE( YEAR(purchased) )
    SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
        PARTITION p0 VALUES LESS THAN (1990) 
        (
            SUBPARTITION s0
                DATA DIRECTORY = '/data/data_sub1'
                INDEX DIRECTORY = '/data/idx_sub1',
            SUBPARTITION s1
                DATA DIRECTORY = '/data/data_sub1'
                INDEX DIRECTORY = '/data/idx_sub1'
        ),
        PARTITION p1 VALUES LESS THAN (2000) 
        (
            SUBPARTITION s2
                DATA DIRECTORY = '/data/data_sub2'
                INDEX DIRECTORY = '/data/idx_sub2',
            SUBPARTITION s3
                DATA DIRECTORY = '/data/data_sub2'
                INDEX DIRECTORY = '/data/idx_sub2'
        ),
        PARTITION p2 VALUES LESS THAN MAXVALUE 
        (
            SUBPARTITION s4
                DATA DIRECTORY = '/data/data_sub3'
                INDEX DIRECTORY = '/data/idx_sub3',
            SUBPARTITION s5
                DATA DIRECTORY = '/data/data_sub3'
                INDEX DIRECTORY = '/data/idx_sub3'
        )
    );

MySQL分区路径子分区再分区

2.子分区再分

CREATE TABLE tb_sub_dirnew (id INT, purchased DATE)
ENGINE='MYISAM'
    PARTITION BY RANGE( YEAR(purchased) )
    SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
        PARTITION p0 VALUES LESS THAN (1990) 
        DATA DIRECTORY = '/data/data'
        INDEX DIRECTORY = '/data/idx'
        (
            SUBPARTITION s0
                DATA DIRECTORY = '/data/data_sub1'
                INDEX DIRECTORY = '/data/idx_sub1',
            SUBPARTITION s1
                DATA DIRECTORY = '/data/data_sub1'
                INDEX DIRECTORY = '/data/idx_sub1'
        ),
        PARTITION p1 VALUES LESS THAN (2000)
        DATA DIRECTORY = '/data/data'
        INDEX DIRECTORY = '/data/idx'
        (
            SUBPARTITION s2
                DATA DIRECTORY = '/data/data_sub2'
                INDEX DIRECTORY = '/data/idx_sub2',
            SUBPARTITION s3
                DATA DIRECTORY = '/data/data_sub2'
                INDEX DIRECTORY = '/data/idx_sub2'
        ),
        PARTITION p2 VALUES LESS THAN MAXVALUE
        DATA DIRECTORY = '/data/data'
        INDEX DIRECTORY = '/data/idx'
        (
            SUBPARTITION s4
                DATA DIRECTORY = '/data/data_sub3'
                INDEX DIRECTORY = '/data/idx_sub3',
            SUBPARTITION s5
                DATA DIRECTORY = '/data/data_sub3'
                INDEX DIRECTORY = '/data/idx_sub3'
        )
    );

也可以给个分区指定路径后再给子分区指定路径,但是这样没有意义,因为数据的存在都是由子分区决定的。

注意:

1.指定的路径必须存在,否则分区无法创建成功

2.MYISAM存储引擎的数据文件和索引文件是分库存储所以可以为数据文件和索引文件定义各自的路径,INNODB存储引擎只能定义数据路径

总结

通过给各个分区指定各自的磁盘可以有效的提高读写性能,在条件允许的情况下是一个不错的方法。

到此这篇关于MySQL分区之指定各分区路径的文章就介绍到这了!

MySQL 相关文章推荐
MySQL 如何分析查询性能
May 12 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 MySQL
MySQL深分页问题解决思路
Dec 24 MySQL
MySQL创建管理子分区
Apr 13 #MySQL
MySQL创建管理KEY分区
Apr 13 #MySQL
MySQL创建管理HASH分区
Apr 13 #MySQL
MySQL创建管理RANGE分区
Apr 13 #MySQL
MySQL创建管理LIST分区
Apr 13 #MySQL
MySql分区类型及创建分区的方法
Apr 13 #MySQL
深入理解mysql事务隔离级别和存储引擎
You might like
php中的一个中文字符串截取函数
2007/02/14 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
微信支付扫码支付php版
2016/07/22 PHP
jQuery 表格工具集
2010/04/25 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
py2exe 编译ico图标的代码
2013/03/08 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
Python 函数list&read&seek详解
2019/08/28 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Python更换pip源方法过程解析
2020/05/19 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
想学画画?python满足你!
2020/12/24 Python
当当网软件测试笔试题
2015/11/24 面试题
介绍一下如何优化MySql
2016/12/20 面试题
求职简历推荐信范文
2013/12/02 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
如何写辞职信
2015/05/13 职场文书
班主任开场白
2015/06/01 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL