⼀、什么是分区表mysql
分区表就是按⼀定规则将⼀张表分割成多个部分,达到和物理分表一样的效果,但操做起来更简单,不一样于物理分表那样使⽤时还须要指定使⽤的数据表。对于使⽤者来讲和操做普通表⽆差异。sql
⼆、优点与限制数据库
一、优点服务器
二、限制函数
3、分区类型spa
一、RANGE分区code
基于⼀个给定连续区间范围,把数据分配到不一样的分区。blog
CREATE TABLE r1 ( a INT, b INT ) PARTITION BY RANGE (a) ( PARTITION p0 VALUES LESS THAN (5), PARTITION p1 VALUES LESS THAN (MAXVALUE) );
二、LIST分区索引
相似RANGE分区,区别在LIST分区是基于枚举出的值列表分区,RANGE是基于给定连续区间范 围分区。ci
CREATE TABLE customers_1 ( first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15), renewal DATE ) PARTITION BY LIST COLUMNS(city) ( PARTITION pRegion_1 VALUES IN('Oskarshamn', 'Högsby', 'Mönsterås'), PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'Västervik'), PARTITION pRegion_3 VALUES IN('Nässjö', 'Eksjö', 'Vetlanda'), PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'Växjo') );
三、HASH分区
基于⽤户定义的表达式返回值来选择分区,该表达式对要插⼊到表的⾏中列值操做。
PS:表达式必须返回整型数据。
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(store_id) PARTITIONS 4;
四、KEY分区
相似HASH分区,可是HASH分区容许使⽤⽤户⾃定义表达式,⽽KEY分区不容许,它须要使⽤ MySQL服务器提供的HASH函数,同时HASH分区只⽀持整数分区,⽽KEY分区⽀持除BLOB和 TEXT类型外其余列。
PS:KEY分区对列数据进⾏hash运算因此有时候数据分布会⾮常不均匀。若是不指定列,mysql会⾃动使⽤主键或者惟⼀健所在的列。
CREATE TABLE k1 ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20) ) PARTITION BY KEY() PARTITIONS 2;