MySQL分區之分區概述
環境: www.2cto.com
[html]
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.28 |
+-----------+
1 row in set (0.00 sec)
分區是一種表的設計模式
分區,分而治之,其重點在於高可用(管理),而附屬價值才是性能的提高
而且:
對存儲引擎層透明
對應用程序層透明
支持的分區類型:
對於表:
▼ 水平分區 → 同一表中不同行的記錄分配到不同的物理文件
對於索引:
▼ 局部分區索引 → 一個分區既存放數據又存放索引
可以用下列命令查詢當前數據庫是否啟用了分區功能:
[sql]
mysql> show variables like '%partition%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| have_partitioning | YES |
+-------------------+-------+
1 row in set (0.00 sec)
MySQL分區類型:
● RANGE 分區
● LIST 分區
● HASH 分區
● KEY 分區
不論創建何種類型的分區,如果表存在主鍵或者唯一性索引時,分區列必須是唯一性索引的一個組成部分。
[sql]
mysql> create table t( col1 int not null,
-> col2 int not null,
-> col3 int not null,
-> col4 int not null,
-> unique key (col1,col2)
-> )
-> partition by hash(col3)
-> partitions 4;
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
mysql> create table t( col1 int not null,
-> col2 int not null,
-> col3 int not null,
-> col4 int not null,
-> unique key (col1,col2)
-> )
-> partition by hash(col2)
-> partitions 4;
Query OK, 0 rows affected (0.08 sec)