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 相关文章推荐
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
Mar 03 MySQL
pt-archiver 主键自增
Apr 26 MySQL
MySQL 数据表操作
May 04 MySQL
Mysql中常用的join连接方式
May 11 MySQL
Mysql中的触发器定义及语法介绍
Jun 25 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 MySQL
MySQL 原理与优化之Update 优化
Aug 14 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 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
UCenter 批量添加用户的php代码
2012/07/17 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
浅析PHP文件下载原理
2014/12/25 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
火山动力Java笔试题
2014/06/26 面试题
石油大学毕业生自荐信
2014/01/28 职场文书
工作说明书范文
2014/05/07 职场文书
三方股份合作协议书
2014/10/13 职场文书
三峡人家导游词
2015/01/31 职场文书
销售经理岗位职责
2015/01/31 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
Python OpenGL基本配置方式
2022/05/20 Python