[Mysql]Mysql分区笔记
2012-05-06 07:57
381 查看
Mysql分区笔记
2 range分区 基于列值的分区(水平分区) less than 小于这个值得 建立
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY RANGE (YEAR(separated)) (
PARTITION p0 VALUES LESS THAN (1991),
PARTITION p1 VALUES LESS THAN (1996),
PARTITION p2 VALUES LESS THAN (2001),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
必须按顺序 写less than
3RANGE分区在如下场合特别有用:
· 当需要删除“旧的”数据时。如果你使用上面最近的那个例子给出的分区方案,你只需简单地使用 “ALTER TABLE employees DROP PARTITION p0;”
想要使用一个包含有日期或时间值,或包含有从一些其他级数开始增长的值的列。
经常运行直接依赖于用于分割表的列的查询。例如,当执行一个如“SELECT COUNT(*) FROM employees WHERE YEAR(separated) = 2000 GROUP BY store_id;”这样的查询时,MySQL可以很迅速地确定只有分区p2需要扫描,这是因为余下的分区不可能包含有符合该WHERE子句的任何记录
4LIST分区 同range分区一致 区别在于 list通过值得聚合 range通过连续区间的值
5CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY LIST(store_id)
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20),
PARTITION pWest VALUES IN (4,12,13,14,18),
PARTITION pCentral VALUES IN (7,8,15,16)
);如果不在表中的值 插入将发生错误
hash分区
6CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;
按照store_id字段分成四区
如果没有包括一个PARTITIONS子句,那么分区的数量将默认为1
7 例如,也许你想基于雇用雇员的年份来进行分区。这可以通过下面的语句来实现:
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(YEAR(hired))
PARTITIONS 4;
8 PARTITION BY (expr) 其中“expr”是一个返回一个整数的表达式。它可以仅仅是字段类型为MySQL 整型的一列的名字 每当插入或更新(或者可能删除)一行,这个表达式都要计算一次;
18.2.5. 子分区
子分区是分区表中每个分区的再次分割。例如,考虑下面的CREATE TABLE 语句:
CREATE TABLE ts (id INT, purchased DATE)
PARTITION BY RANGE(YEAR(purchased))
SUBPARTITION BY HASH(TO_DAYS(purchased))
SUBPARTITIONS 2
(
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
每个分区必须有相同数量的子分区
分区单独的
DATA DIRECTORY = '/disk0/data'
INDEX DIRECTORY = '/disk0/idx',
分区管理MySQL 5.1 提供了许多修改分区表的方式。添加、删除、重新定义、合并或拆分已经存在的分区是可能的。所有这些操作都可以通过使用ALTER TABLE
删除 ALTER TABLE tr DROP PARTITION p2;
添加高级 分区 ALTER TABLE ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
不丢失数据情况下 移动分区ALTER TABLE members REORGANIZE PARTITION p0 INTO (
PARTITION s0 VALUES LESS THAN (1960),
PARTITION s1 VALUES LESS THAN (1970)
);
合并分区ALTER TABLE members REORGANIZE PARTITION s0,s1 INTO (
PARTITION p0 VALUES LESS THAN (1970)
);
查看某表的分区 SHOW CREATE TABLE trb3\G
SHOW PARTITIONS 查看分区
SHOW PARTITION STATUS 分区详细状态
2 range分区 基于列值的分区(水平分区) less than 小于这个值得 建立
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY RANGE (YEAR(separated)) (
PARTITION p0 VALUES LESS THAN (1991),
PARTITION p1 VALUES LESS THAN (1996),
PARTITION p2 VALUES LESS THAN (2001),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
必须按顺序 写less than
3RANGE分区在如下场合特别有用:
· 当需要删除“旧的”数据时。如果你使用上面最近的那个例子给出的分区方案,你只需简单地使用 “ALTER TABLE employees DROP PARTITION p0;”
想要使用一个包含有日期或时间值,或包含有从一些其他级数开始增长的值的列。
经常运行直接依赖于用于分割表的列的查询。例如,当执行一个如“SELECT COUNT(*) FROM employees WHERE YEAR(separated) = 2000 GROUP BY store_id;”这样的查询时,MySQL可以很迅速地确定只有分区p2需要扫描,这是因为余下的分区不可能包含有符合该WHERE子句的任何记录
4LIST分区 同range分区一致 区别在于 list通过值得聚合 range通过连续区间的值
5CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY LIST(store_id)
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20),
PARTITION pWest VALUES IN (4,12,13,14,18),
PARTITION pCentral VALUES IN (7,8,15,16)
);如果不在表中的值 插入将发生错误
hash分区
6CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;
按照store_id字段分成四区
如果没有包括一个PARTITIONS子句,那么分区的数量将默认为1
7 例如,也许你想基于雇用雇员的年份来进行分区。这可以通过下面的语句来实现:
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(YEAR(hired))
PARTITIONS 4;
8 PARTITION BY (expr) 其中“expr”是一个返回一个整数的表达式。它可以仅仅是字段类型为MySQL 整型的一列的名字 每当插入或更新(或者可能删除)一行,这个表达式都要计算一次;
18.2.5. 子分区
子分区是分区表中每个分区的再次分割。例如,考虑下面的CREATE TABLE 语句:
CREATE TABLE ts (id INT, purchased DATE)
PARTITION BY RANGE(YEAR(purchased))
SUBPARTITION BY HASH(TO_DAYS(purchased))
SUBPARTITIONS 2
(
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
每个分区必须有相同数量的子分区
分区单独的
DATA DIRECTORY = '/disk0/data'
INDEX DIRECTORY = '/disk0/idx',
分区管理MySQL 5.1 提供了许多修改分区表的方式。添加、删除、重新定义、合并或拆分已经存在的分区是可能的。所有这些操作都可以通过使用ALTER TABLE
删除 ALTER TABLE tr DROP PARTITION p2;
添加高级 分区 ALTER TABLE ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
不丢失数据情况下 移动分区ALTER TABLE members REORGANIZE PARTITION p0 INTO (
PARTITION s0 VALUES LESS THAN (1960),
PARTITION s1 VALUES LESS THAN (1970)
);
合并分区ALTER TABLE members REORGANIZE PARTITION s0,s1 INTO (
PARTITION p0 VALUES LESS THAN (1970)
);
查看某表的分区 SHOW CREATE TABLE trb3\G
SHOW PARTITIONS 查看分区
SHOW PARTITION STATUS 分区详细状态
相关文章推荐
- 【MYSQL数据库】MYSQL学习笔记-mysql分区基本操作
- 【MYSQL数据库】MYSQL学习笔记-mysql分区基本操作
- MYSQL学习笔记-mysql分区基本操作
- MySQL 学习笔记 (范式)
- mysql初学笔记1(来自runoob.com)
- Mysql学习笔记
- mysql 语句 duplicate 使用笔记 2
- Mysql源码学习笔记——偷窥线程
- mysql学习笔记四
- MYSQL学习笔记(十一)联结
- MySql学习笔记
- Mysql知识点笔记
- MysQL自学笔记8--索引、存储过程
- mysql性能优化学习笔记-参数介绍及优化建议
- 菜鸟学Linux 第072篇笔记 MySQL source install
- Linux+Nginx+Apache+PHP+Mysql安装配置笔记
- mysql-java笔记
- 《PHP MySQL和WEB开发》第十章笔记
- mysql用户管理自学笔记二
- mysql 学习笔记