Sharding是近几年提出的概念,可以做分表,分库切割,通过hash值定位。但都存在一个问题,数据连续性,索引无法跨表。
Oracle 在8.x中就支持分区功能,MySQL在5.1.x中也是闲类似功能,PostgreSQL 因存储结构设计的较好,基本不需要做分区。
ALTER TABLE `goods` DROP INDEX `goods_sn_2`; ALTER TABLE goods PARTITION BY RANGE (goods_id) ( PARTITION p0 VALUES LESS THAN (10000), PARTITION p1 VALUES LESS THAN (20000), PARTITION p2 VALUES LESS THAN (30000), PARTITION p3 VALUES LESS THAN (40000), PARTITION p4 VALUES LESS THAN MAXVALUE ); ALTER TABLE goods PARTITION BY HASH(goods_id) PARTITIONS 10; ALTER TABLE goods PARTITION BY KEY (is_on_sale) PARTITIONS 2; ALTER TABLE goods PARTITION BY HASH(YEAR(FROM_UNIXTIME(add_time))) PARTITIONS 4;
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。