mysql分片分区分库分表( 二 )


分区的适用场景
1. 一张表的查询速度已经慢到影响使用的时候 。
2.表中的数据是分段的
3.对数据的操作往往只涉及一部分数据,而不是所有的数据
CREATE TABLE sales (
id INT AUTO_INCREMENT,
amount DOUBLE NOT NULL,
order_day DATETIME NOT NULL,
PRIMARY KEY(id, order_day)
) ENGINE=Innodb
PARTITION BY RANGE(YEAR(order_day)) (
PARTITION p_2010 VALUES LESS THAN (2010),
PARTITION p_2011 VALUES LESS THAN (2011),
PARTITION p_2012 VALUES LESS THAN (2012),
PARTITION p_catchall VALUES LESS THAN MAXVALUE);
分表的适用场景
1. 一张表的查询速度已经慢到影响使用的时候 。
2.当频繁插入或者联合查询时,速度变慢 。
分表的实现需要业务结合实现和迁移,较为复杂 。
分表与分库
分表能够解决单表数据量过大带来的查询效率下降的问题,但是,却无法给数据库的并发处理能力带来质的提升 。面对高并发的读写访问,当数据库master服务器无法承载写操作压力时,不管如何扩展slave服务器,此时都没有意义了 。因此,我们必须换一种思路,对数据库进行拆分,从而提高数据库写入能力,这就是所谓的分库 。
与分表策略相似,分库可以采用通过一个关键字取模的方式,来对数据访问进行路由.




推荐阅读