MySQL 指定各分区路径
介绍
可以针对分区表的每个分区指定各自的存储路径,对于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' );
指定路径之后在原来的路径中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 s0DATA DIRECTORY = '/data/data_sub1'INDEX DIRECTORY = '/data/idx_sub1',SUBPARTITION s1DATA DIRECTORY = '/data/data_sub1'INDEX DIRECTORY = '/data/idx_sub1'),PARTITION p1 VALUES LESS THAN (2000) (SUBPARTITION s2DATA DIRECTORY = '/data/data_sub2'INDEX DIRECTORY = '/data/idx_sub2',SUBPARTITION s3DATA DIRECTORY = '/data/data_sub2'INDEX DIRECTORY = '/data/idx_sub2'),PARTITION p2 VALUES LESS THAN MAXVALUE (SUBPARTITION s4DATA DIRECTORY = '/data/data_sub3'INDEX DIRECTORY = '/data/idx_sub3',SUBPARTITION s5DATA DIRECTORY = '/data/data_sub3'INDEX DIRECTORY = '/data/idx_sub3'));
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 s0DATA DIRECTORY = '/data/data_sub1'INDEX DIRECTORY = '/data/idx_sub1',SUBPARTITION s1DATA DIRECTORY = '/data/data_sub1'INDEX DIRECTORY = '/data/idx_sub1'),PARTITION p1 VALUES LESS THAN (2000)DATA DIRECTORY = '/data/data'INDEX DIRECTORY = '/data/idx'(SUBPARTITION s2DATA DIRECTORY = '/data/data_sub2'INDEX DIRECTORY = '/data/idx_sub2',SUBPARTITION s3DATA DIRECTORY = '/data/data_sub2'INDEX DIRECTORY = '/data/idx_sub2'),PARTITION p2 VALUES LESS THAN MAXVALUEDATA DIRECTORY = '/data/data'INDEX DIRECTORY = '/data/idx'(SUBPARTITION s4DATA DIRECTORY = '/data/data_sub3'INDEX DIRECTORY = '/data/idx_sub3',SUBPARTITION s5DATA DIRECTORY = '/data/data_sub3'INDEX DIRECTORY = '/data/idx_sub3'));
也可以给个分区指定路径后再给子分区指定路径,但是这样没有意义,因为数据的存在都是由子分区决定的。
注意:
1.指定的路径必须存在,否则分区无法创建成功
2.MYISAM存储引擎的数据文件和索引文件是分库存储所以可以为数据文件和索引文件定义各自的路径,INNODB存储引擎只能定义数据路径
分区系列文章:
RANGE分区:http://www.cnblogs.com/chenmh/p/5627912.html
LIST分区:http://www.cnblogs.com/chenmh/p/5643174.html
COLUMN分区:http://www.cnblogs.com/chenmh/p/5630834.html
HASH分区:http://www.cnblogs.com/chenmh/p/5644496.html
KEY分区:http://www.cnblogs.com/chenmh/p/5647210.html
子分区:http://www.cnblogs.com/chenmh/p/5649447.html
分区建索引:http://www.cnblogs.com/chenmh/p/5761995.html
分区介绍总结:http://www.cnblogs.com/chenmh/p/5623474.html
总结
通过给各个分区指定各自的磁盘可以有效的提高读写性能,在条件允许的情况下是一个不错的方法。
备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。 《欢迎交流讨论》 |
MySQL 指定各分区路径相关推荐
- mysql 分区指定路径_[数据库]MySQL 指定各分区路径
[数据库]MySQL 指定各分区路径 0 2016-11-08 18:00:44 介绍 可以针对分区表的每个分区指定各自的存储路径,对于innodb存储引擎的表只能指定数据路径,因为数据和索引是存储在 ...
- rpm mysql 指定目录_rpm 安装并配置MySQL(包含指定数据存储路径)
1.安装rpm包 rpm -ivh /home/mysql-rpms/*.rpm 2.拷贝配置文件 cp /usr/share/mysql/my-small.cnf /etc/my.cnf 3.修改/ ...
- 理解MySQL——并行数据库与分区(Partition)
1.并行数据库 1.1.并行数据库的体系结构 并行机的出现,催生了并行数据库的出现,不对,应该是关系运算本来就是高度可并行的.对数据库系统性能的度量主要有两种方式:(1)吞吐量(Throughput) ...
- 编译安装的mysql如何更改文件路径
介绍 场景:小张在巡检时发现公司一台数据库经常写不入数据,于是登录数据库所在的主机一看,原来是数据库对应的50G磁盘分区满了,而主机上还有另外一个500G的磁盘分区没在用,于是小张请示完领导后,准备将 ...
- 【MySQL】之分区、分库、分表
一.Mysql 分区 1.什么是 Mysql 分区(PARTITION) 如果一张表的数据量太大的话,那么 myd,myi 就会变的很大,查找数据就会变的很慢,这个时候我们可以利用 mysql 的分区 ...
- 理解MySQL——并行数据库与分区(Partion)
1.并行数据库 1.1.并行数据库的体系结构 并行机的出现,催生了并行数据库的出现,不对,应该是关系运算本来就是高度可并行的.对数据库系统性能的度量主要有两种方式:(1)吞吐量 (Throughput ...
- mysql的partition分区
前言:当一个表里面存储的数据特别多的时候,比如单个.myd数据都已经达到10G了的话,必然导致读取的效率很低,这个时候我们可以采用把数据分到几张表里面来解决问题. 方式一:通过业务逻辑根据数据的大小通 ...
- 【mysql分区分表】mysql 按时间分区 【partition】
大家好,我是烤鸭: 今天分享一下有关 mysql 分区. 需求: 按时间分区. 对千万数据左右的表,进行分区,数据的增加量大概千万/年. 代码实现: 模拟之前已经存在的表: DROP TABL ...
- mysql 字符串类型 分区_MySQL分区类型
博文大纲: 1.RANGE分区 2.LIST分区 3.HASH分区 4.key分区 5.MySQL分表和分区的区别 6.附加:如何实现将分区放在不同的目录下进行存储 MySQL分区类型如下: RANF ...
- mysql 5.5 分区_MySQL 5.5 表分区功能增强
MySQL5.1 引入表分区功能,使得MySQL在处理大表的能力上得到增强.使用过表分区功能的朋友应该知道,MySQL5.1中使用表分区的时候,对字段是有要求的,那就是必须是整数型,或者可以将其他类型 ...
最新文章
- 谷歌量子计算突破登Science封面!首次对化学反应进行量子模拟
- Liferay –简单主题开发
- 机器学习模型中step与epoch,batch_size之间的关系
- 钓鱼(信息学奥赛一本通-T1431)
- oracle sequence的用法
- python函数基本概念_python——函数的基本概念
- 动态模型之增压暂停【FunTester测试框架】
- ‘catkin_make‘ is currently not installed问题修复
- pdf编辑器怎么使用
- 计算机图形学(闫令琪博士课程答疑)-Shading(二)
- c语言 修正正弦曲线,[原创]正弦曲线
- 归档日志路径三个参数DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n
- Linux学习笔记Day01-03 Xshell,Xfpt下载安装,使用
- Oracle数据库各版本下载(迅雷复制粘贴直接下载,别进目录)
- 使用OneDNS完美解决办公网络优化问题
- 【分享】Xmind会默认安装在C盘,如何将Xmind安装在指定文件夹
- HTML背景图片和背景渐变
- java中的toArray()
- 图书管理系统1.0(当然是很简low的系统,没有华丽界面,但是很锻炼软件开发能力,只用到c++的面向对象知识)
- 漏洞复现-electron RCE命令执行CVE-2018-1000006