MySQL 5.5 表分区功能增强
2013-06-08 08:01
531 查看
MySQL5.1 引入表分区功能,使得MySQL在处理大表的能力上得到增强。使用过表分区功能的朋友应该知道,MySQL5.1中使用表分区的时候,对字段是有要求的,那就是必须是整数型,或者可以将其他类型的字段通过函数转换成整数型才可以。
/* with MySQL 5.1 ivan @ MySQL实验室(mysqlab.net/blog/) */
CREATE TABLE mysqlab_net
(
ivan DATE
)
PARTITION BY RANGE (TO_DAYS(ivan))
(
PARTITION p01 VALUES LESS THAN (TO_DAYS(’2007-08-08′)),
PARTITION p02 VALUES LESS THAN (TO_DAYS(’2008-08-08′)),
PARTITION p03 VALUES LESS THAN (TO_DAYS(’2009-08-08′)),
PARTITION p04 VALUES LESS THAN (MAXVALUE));
SHOW CREATE TABLE mysqlab_net\G
*************************** 1. row ***************************
TABLE: mysqlab_net
CREATE TABLE: CREATE TABLE `mysqlab_net` (
`ivan` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (TO_DAYS(ivan))
(PARTITION p01 VALUES LESS THAN (733261) ENGINE = InnoDB,
PARTITION p02 VALUES LESS THAN (733627) ENGINE = InnoDB,
PARTITION p03 VALUES LESS THAN (733992) ENGINE = InnoDB,
PARTITION p04 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
怎么样?读取的时候谁知道那个数字是多少?(不过也可以通过自定义函数实现还原)
MySQL5.5中加入了columns关键字,使得可读性好多了。看例子
/* with MySQL 5.5 ivan @ MySQL实验室(mysqlab.net/blog/) */
CREATE TABLE `mysqlab.net`
(
ivan DATE
)
PARTITION BY RANGE COLUMNS(ivan)
(
PARTITION p01 VALUES LESS THAN (’2007-08-08′),
PARTITION p02 VALUES LESS THAN (’2008-08-08′),
PARTITION p03 VALUES LESS THAN (’2009-08-08′),
PARTITION p04 VALUES LESS THAN (MAXVALUE);
SHOW CREATE TABLE `mysqlab.net`\G
*************************** 1. row ***************************
TABLE: mysqlab.net
CREATE TABLE: CREATE TABLE `mysqlab.net` (
`ivan` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE COLUMNS(ivan)
(PARTITION p01 VALUES LESS THAN (’2007-08-08′) ENGINE = InnoDB,
PARTITION p02 VALUES LESS THAN (’2008-08-08′) ENGINE = InnoDB,
PARTITION p03 VALUES LESS THAN (’2009-08-08′) ENGINE = InnoDB,
PARTITION p04 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB) */
另外MySQL5.5表分区(partition) columns关键字还支持多字段,比如 partition by range columns(a,b);将支持清空指定的分区TRUNCATE PARTITION。MySQL5.5有望在明年(2010)夏季GA。另外MySQL5.5支持的半同步功能在高可用上的使用,让人非常期待!
Reference: MySQL 5.5 partitioning enhancements
Note:在使用表分区的时候,并不是分区越多越好,要根据情况而定,因为会出现意想不到的问题。
/* with MySQL 5.1 ivan @ MySQL实验室(mysqlab.net/blog/) */
CREATE TABLE mysqlab_net
(
ivan DATE
)
PARTITION BY RANGE (TO_DAYS(ivan))
(
PARTITION p01 VALUES LESS THAN (TO_DAYS(’2007-08-08′)),
PARTITION p02 VALUES LESS THAN (TO_DAYS(’2008-08-08′)),
PARTITION p03 VALUES LESS THAN (TO_DAYS(’2009-08-08′)),
PARTITION p04 VALUES LESS THAN (MAXVALUE));
SHOW CREATE TABLE mysqlab_net\G
*************************** 1. row ***************************
TABLE: mysqlab_net
CREATE TABLE: CREATE TABLE `mysqlab_net` (
`ivan` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (TO_DAYS(ivan))
(PARTITION p01 VALUES LESS THAN (733261) ENGINE = InnoDB,
PARTITION p02 VALUES LESS THAN (733627) ENGINE = InnoDB,
PARTITION p03 VALUES LESS THAN (733992) ENGINE = InnoDB,
PARTITION p04 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
怎么样?读取的时候谁知道那个数字是多少?(不过也可以通过自定义函数实现还原)
MySQL5.5中加入了columns关键字,使得可读性好多了。看例子
/* with MySQL 5.5 ivan @ MySQL实验室(mysqlab.net/blog/) */
CREATE TABLE `mysqlab.net`
(
ivan DATE
)
PARTITION BY RANGE COLUMNS(ivan)
(
PARTITION p01 VALUES LESS THAN (’2007-08-08′),
PARTITION p02 VALUES LESS THAN (’2008-08-08′),
PARTITION p03 VALUES LESS THAN (’2009-08-08′),
PARTITION p04 VALUES LESS THAN (MAXVALUE);
SHOW CREATE TABLE `mysqlab.net`\G
*************************** 1. row ***************************
TABLE: mysqlab.net
CREATE TABLE: CREATE TABLE `mysqlab.net` (
`ivan` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE COLUMNS(ivan)
(PARTITION p01 VALUES LESS THAN (’2007-08-08′) ENGINE = InnoDB,
PARTITION p02 VALUES LESS THAN (’2008-08-08′) ENGINE = InnoDB,
PARTITION p03 VALUES LESS THAN (’2009-08-08′) ENGINE = InnoDB,
PARTITION p04 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB) */
另外MySQL5.5表分区(partition) columns关键字还支持多字段,比如 partition by range columns(a,b);将支持清空指定的分区TRUNCATE PARTITION。MySQL5.5有望在明年(2010)夏季GA。另外MySQL5.5支持的半同步功能在高可用上的使用,让人非常期待!
Reference: MySQL 5.5 partitioning enhancements
Note:在使用表分区的时候,并不是分区越多越好,要根据情况而定,因为会出现意想不到的问题。
相关文章推荐
- 深入了解MySQL 5.5分区功能增强
- 深入了解MySQL 5.5分区功能增强
- 深入了解MySQL 5.5分区功能增强
- Mysql 5.5分区特性增强深度解析
- Mysql 5.5分区特性增强深度解析
- mysql 5.1新功能 -- 按日期分区
- MySQL5.5 performance_schema数据库功能介绍
- Atitit.mysql 5.0 5.5 5.6 5.7 新特性 新功能
- [MySQL优化案例]系列 -- 在5.1的分区功能中混用InnoDB和MyISAM
- 读书笔记整理九:与分区和存储相关的增强功能
- MySQL5.5 performance_schema数据库功能介绍
- mysql 5.5 分区
- Mysql 5.1分区特性及5.5的关于分区的升级
- MySQL5.5 自动分区脚本
- InnoSQL HA Suite的实现原理与配置说明 InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync replicaiton)的功能 MySQL 5.6支持了crash safe功能
- MySQL 5.5开启慢查询功能
- MySQL5.5 自动分区脚本
- MySQL慢日志功能分析及优化增强
- mysql(5.6)分区(三)与功能有关的分区限制
- MySQL5.5 RANGE分区增加删除处理