MySQL 分区技术(是mysql 5.1以版本后开始用->是甲骨文mysql技术团队维护人员以插件形式插入到mysql里面的技术)
1、概述
数据库单表到达一定量后,性能会有衰减,像mysql/sql server等犹为明显,所以需要把这些数据进行分区处理。同时有时候可能出现数据剥离什么的,分区表就更有用处了!
MySQL 5.1 中新增的分区(Partition)功能就开始增加,优势也越来越明显了:
2、分区技术支持
在5.6之前,使用这个参数查看当将配置是否支持分区:
mysql> SHOW VARIABLES LIKE '%partition%';+-----------------------+-------+|Variable_name | Value |+-----------------------+-------+| have_partition_engine | YES |+-----------------------+-------+ |
如果是yes表示你当前的配置支持分区。 在5.6及以采用后,则采用如下方式进行查看:
mysql> SHOW PLUGINS;+----------------------------+----------+--------------------+---------+---------+| Name | Status | Type | Library | License |+----------------------------+----------+--------------------+---------+---------+| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL || mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |..................................................................................| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL || INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL || partition | ACTIVE | STORAGE ENGINE | NULL | GPL |+----------------------------+----------+--------------------+---------+---------+ |
42 rows in set (0.00 sec) 最后一行,可以看到partition是ACTIVE的,表示支持分区。
3、分区类型及举例
3.1范围分区
RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。如时间,连续的常量值等 --按年分区
mysql> use mytest;Database changedmysql> create table range_p( -> perid int(11), -> pername char(12) not null, -> monsalary DECIMAL(10,2), -> credate datetime -> ) partition by range(year(credate))( -> partition p2011 values less than (2011), -> partition p2012 values less than (2012), -> partition p2013 values less than (2013), -> partition p2014 values less than (2014), -> partition p2015 values less than maxvalue -> );Query OK, 0 rows affected (0.12 sec) |