MySQL 指定各分区路径
200 ? "200px" : this.width)!important;}
-->
介绍
可以针对分区表的每个分区指定各自的存储路径,对于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 ()
- (
- 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 ()
- (
- 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'
- )
- );
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 ()
- 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 ()
- 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存储引擎只能定义数据路径
分区系列文章:
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——并行数据库与分区(Partition)
1.并行数据库 1.1.并行数据库的体系结构并行机的出现,催生了并行数据库的出现,不对,应该是关系运算本来就是高度可并行的.对数据库系统性能的度量主要有两种方式:(1)吞吐量(Throughput), ...
- mysql中的分区
第18章:分区 目录 18.1. MySQL中的分区概述 18.2. 分区类型 18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 ...
- MySQL的表分区详解
这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysq ...
- MySQL的表分区(转载)
MySQL的表分区(转载) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表 ...
- MySQL 横向表分区之RANGE分区小结
MySQL 横向表分区之RANGE分区小结 by:授客 QQ:1033553122 目录 简介 1 RANGE分区 1 创建分区表 1 查看表分区 2 新增表分区 2 新增数据 3 分区表查询 3 删 ...
- mysql之数据分区
一:概述 通过把表分成多几区间,每个区间存储符合特定表达式的数据(即在我们创建分区表时指定每个分区存储的条件例如:PARTITION p0 VALUES LESS THAN (100) 即p0区间存 ...
- mysql的partition分区
前言:当一个表里面存储的数据特别多的时候,比如单个.myd数据都已经达到10G了的话,必然导致读取的效率很低,这个时候我们可以采用把数据分到几张表里面来解决问题.方式一:通过业务逻辑根据数据的大小通过 ...
- MySQL数据库表分区功能详解
1.什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表 ...
- mysql 表的分区
如何判断当前MySQL是否支持分区 命令:show variables like '%partition%' 运行结果: mysql> show variables like '%partiti ...
随机推荐
- 你不知道的CSS背景—css背景属性全解
CSS背景在网页设计中使用频率非常高,然而对于这个开发人员很熟悉的CSS属性,却隐藏着许多不为初级开发人员熟知的细节,这篇文章尝试扒开这层不为人知的面纱. 首先列举一下CSS中关于元素背景的所有属性并 ...
- AOJ 0121: Seven Puzzle【BFS】
From: AOJ 0121 思路:与前几题的bfs不同,这次的bfs没有明确的移动对象,看似任意一个数都可以当成对象移动.这时我们只需要抓住一个格子就行,比如我们把0作为移动对象,那么0在地图中漫游 ...
- KeyedPriorityQueue
// <copyright file="KeyedPriorityQueue.cs" company="Microsoft">Copyright ( ...
- 运用泛型,冒泡排序实现JDK引用类型数组的排序
public class Utils { public static <T extends Comparable<T>> void sortList(List<T> ...
- npm 基础
npm账户 npm adduser npm whoami 初始化项目: npm init --scope=<username> 项目必要文件 README.md pageage.json: ...
- python tkinter
1. 在python3中使用 import tkinter 异常:no module named _tkinter apt-get install python-tk
- 一致性hash算法详解
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- 织梦cms更新新建的栏目提示:DedeTag Engine Create File False:C:/phpStudy/WWW/
这个问题怎么解决呢?只是更换了一下栏目名称.增加了新的栏目,结果就不行了. 问题原因: 新建的栏目没有"列表命名规则",导致cms解析的时候,出现解析错误. 解决办法 在下图填入: ...
- tomcat发布脚本
#!/bin/bash #发布相关目录Tomcat_log='/home/CodePub/tomcatlog'dev_package='/home/CodePub/package'old_packag ...
- python 编码问题
参考原文:http://www.crifan.com/eclipse_pydev_console_messy_char_for_console_is_utf8/ 通用 rq = urllib.urlo ...