首先介绍一个数据库分区:数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。
*非分区表的缺点:数据的逻辑备份、查询产生了巨大的效率问题。
分区表的优点:当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。*
范围分区
*根据某一字段或者多个字段的值的范围来划分分区
partition by range(表字段)(
partition 分区表名 values less than(maxvalue 一个最大上限值,但是却小于且不等于这个值)tablespace 表空间名称 (需要设置一个表空间)
)*散列分区
*根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。
partition by hash(表字段)(
partition p1 tablespace USERS,
partition p2 tablespace USERS,
partition p3 tablespace USERS
) *列表分区
*指定了根据某字段的某个具体值进行分区
partition by list(表字段)(
partition p1 values(指定的一个值) tablespace USERS,
partition p2 values(指定的一个值) tablespace USERS,
partition p3 values(指定的一个值) tablespace USERS,
)*范围 - 散列分区
*partition by range(字段值)
subpartition by hash(字段值,可以多个来划分)(
partition p1 values less than(上限值)(
subpartition pc1 tablespace USERS ,
subpartition pc2 tablespace USERS
),
partition p2 values less than(上限值)(
subpartition pcc1 tablespace USERS,
subpartition pcc2 tablespace USERS
)
)*范围 - 列表分区
*partition by range(参数)
subpartition by list(可以精确定位的参数,或者基数小,无法创建多个)
(
partition pc1 values less than(上限值)(
subpartition pccc1 values(精确稳定的值);
)
)*