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 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
Mysql - 常用函数 每天积极向上
Apr 05 MySQL
将图片保存到mysql数据库并展示在前端页面的实现代码
May 02 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
解读MySQL的客户端和服务端协议
May 10 MySQL
MySQL 分页查询的优化技巧
May 12 MySQL
MySQL 存储过程的优缺点分析
May 20 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL日期时间函数知识汇总
Mar 17 MySQL
mysql性能优化以及配置连接参数设置
May 06 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实现分页工具类分享
2014/01/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
PHP输出日历表代码实例
2015/03/27 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
js+jquery实现图片裁剪功能
2015/01/02 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
使用Python脚本操作MongoDB的教程
2015/04/16 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
Python 性能优化技巧总结
2016/11/01 Python
Python基于WordCloud制作词云图
2019/11/29 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
组织关系转移介绍信
2014/01/16 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
合作协议书范本
2014/04/17 职场文书
公司授权委托书样本
2014/09/15 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript