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安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL时间设置注意事项的深入总结
May 06 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
Nov 17 MySQL
一文搞懂MySQL索引页结构
Feb 28 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 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
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
vue组件jsx语法的具体使用
2018/05/21 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
Python中random模块用法实例分析
2015/05/19 Python
python select.select模块通信全过程解析
2017/09/20 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
基于python-pptx库中文文档及使用详解
2020/02/14 Python
Django REST framwork的权限验证实例
2020/04/02 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
佳能英国官方网站:Canon UK
2017/08/08 全球购物
初中政治教学反思
2014/01/17 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
环境保护建议书
2014/08/26 职场文书
毕业生对母校寄语
2015/02/26 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
Python打包exe时各种异常处理方案总结
2021/05/18 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL