最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL复合分区_MySQL

来源:动视网 责编:小采 时间:2020-11-09 20:14:12
文档

MySQL复合分区_MySQL

MySQL复合分区_MySQL:到底还是开源软件,MySQL对复合分区的支持远远没有Oracle丰富。 在MySQL 5.6版本中,只支持RANGE和LIST的子分区,且子分区的类型只能为HASH和KEY。 譬如: CREATE TABLE ts (id INT, purchased DATE) PARTITION BY
推荐度:
导读MySQL复合分区_MySQL:到底还是开源软件,MySQL对复合分区的支持远远没有Oracle丰富。 在MySQL 5.6版本中,只支持RANGE和LIST的子分区,且子分区的类型只能为HASH和KEY。 譬如: CREATE TABLE ts (id INT, purchased DATE) PARTITION BY


到底还是开源软件,MySQL对复合分区的支持远远没有Oracle丰富。

在MySQL 5.6版本中,只支持RANGE和LIST的子分区,且子分区的类型只能为HASH和KEY。

譬如:

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
 );

上述创建语句中,最外层是RANGE分区,分为3个区,里面是HASH子分区,分为2个区,这样,该表一共分了3*2=6个分区。

当然,也可以用SUBPARTITION语句来显示定义子分区。


CREATE TABLE ts (id INT, purchased DATE)
 PARTITION BY RANGE( YEAR(purchased) )
 SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
 PARTITION p0 VALUES LESS THAN (1990) (
 SUBPARTITION s0,
 SUBPARTITION s1
 ),
 PARTITION p1 VALUES LESS THAN (2000) (
 SUBPARTITION s2,
 SUBPARTITION s3
 ),
 PARTITION p2 VALUES LESS THAN MAXVALUE (
 SUBPARTITION s4,
 SUBPARTITION s5
 )
 );

注意:

1> 如果你在分区中使用了SUBPARTITION语句,则每个分区中都必须定义,且每个分区中子分区的数量必须保持一致。譬如以下两种用法就会报错:

CREATE TABLE ts (id INT, purchased DATE)
 PARTITION BY RANGE( YEAR(purchased) )
 SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
 PARTITION p0 VALUES LESS THAN (1990) (
 SUBPARTITION s0,
 SUBPARTITION s1
 ),
 PARTITION p1 VALUES LESS THAN (2000) (
 SUBPARTITION s2
 ),
 PARTITION p2 VALUES LESS THAN MAXVALUE (
 SUBPARTITION s3,
 SUBPARTITION s4
 )
 );


CREATE TABLE ts (id INT, purchased DATE)
 PARTITION BY RANGE( YEAR(purchased) )
 SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
 PARTITION p0 VALUES LESS THAN (1990) (
 SUBPARTITION s0,
 SUBPARTITION s1
 ),
 PARTITION p1 VALUES LESS THAN (2000),
 PARTITION p2 VALUES LESS THAN MAXVALUE (
 SUBPARTITION s2,
 SUBPARTITION s3
 )
 );

2> 在SUBPARTITION语句中,可指定该分区的物理位置。譬如:

CREATE TABLE ts (id INT, purchased DATE)
 PARTITION BY RANGE(YEAR(purchased))
 SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
 PARTITION p0 VALUES LESS THAN (1990) (
 SUBPARTITION s0a
 DATA DIRECTORY = '/disk0'
 INDEX DIRECTORY = '/disk1',
 SUBPARTITION s0b
 DATA DIRECTORY = '/disk2'
 INDEX DIRECTORY = '/disk3'
 ),
 PARTITION p1 VALUES LESS THAN (2000) (
 SUBPARTITION s1a
 DATA DIRECTORY = '/disk4/data'
 INDEX DIRECTORY = '/disk4/idx',
 SUBPARTITION s1b
 DATA DIRECTORY = '/disk5/data'
 INDEX DIRECTORY = '/disk5/idx'
 ),
 PARTITION p2 VALUES LESS THAN MAXVALUE (
 SUBPARTITION s2a,
 SUBPARTITION s2b
 )
 );

以上这个创建语句,将不同的分区分布到不同的物理路径下,无疑会极大的分散IO,这一点还是蛮吸引人的。

可惜,在本机测试过程中,报“ERROR 1030 (HY000): Got error -1 from storage engine”错误,具体原因还不太清楚,怀疑是MySQL的bug。

文档

MySQL复合分区_MySQL

MySQL复合分区_MySQL:到底还是开源软件,MySQL对复合分区的支持远远没有Oracle丰富。 在MySQL 5.6版本中,只支持RANGE和LIST的子分区,且子分区的类型只能为HASH和KEY。 譬如: CREATE TABLE ts (id INT, purchased DATE) PARTITION BY
推荐度:
标签: 分区 mysql 复合
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top