原创转载请注明出处:http://agilestyle.iteye.com/blog/2358878
分区
分区是一种表的设计模式。正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误的使用分区,或者过于迷信分区,那么分区可能带来毁灭性的结果。
MySQL数据库在5.1版本时添加了对分区的支持。分区的过程是将一个表或者索引分解为多个更小、更可管理的部分。就访问数据库的应用而言,从逻辑上讲,只有一个表或一个索引,但是在物理上这个表或索引可能由数十个物理分区组成。每个分区都是独立的对象,可以独自处理,也可以作为一个更大对象的一部分进行处理。
MySQL数据库支持的分区类型为水平分区,并不支持垂直分区。
- 水平分区:指将同一个表中不同行的记录分配到不同的物理文件中
- 垂直分区:指将同一个表中不同列的记录分配到不同的物理文件中
此外MySQL的分区是局部分区索引,一个分区中既存放数据又存放索引。全局分区是指,数据存放各个分区中,但是所有数据的索引放在一个对象中。目前MySQL数据库暂时不支持全局分区。
当前MySQL数据库支持以下几种类型的分区
- RANGE分区:行数据基于一个给定连续区间的列值放入分区。MySQL5.5开始支持RANGE COLUMNS的分区
- LIST分区:和RANGE分区类型一样,只是LIST分区面向的离散的值。MySQL5.5开始支持LIST COLUMNS的分区
- HASH分区:根据用户自定义表达式的返回值来进行分区,返回值不能为负数。
- KEY分区:根据MySQL数据库提供的散列函数来进行分区
Reference
MySQL技术内幕:SQL编程 姜承尧 著