mysql数据库的存储会随着数据的增加而出现不同的性能瓶颈,如果继续采用关系型的数据库将要采取分库分表的策略。
分库:分库是最简单的操作,我们举个例子来说,一个网站的用户,同时面对的是企业和个人,我们可以采用企业和个人的不同类型来使用不同的数据库。前期是整体数据量比较大,如果网站根本没有分库的需要就不要做相关的设计,将出现分库后的其他问题。
分表:分表的策略有两种,一种是当前数据的均匀分布存储,一种是数据的后期动态延展的分表。同样以上面的用户信息为例,假设我们的用户量是2亿,为了提高性能,我们预设定mysql的单表存储在500万时进行分库操作。分库操作有两个前提,一种是非增量增长的数据,我们可以采用简单的取模算法来平均到各个数据库表(前提我们用户的取模算法的基础是用户主键是序列的数据,会均匀分布);还有一种是增量的数据增长,需要我们后期要动态的扩展表来存储后续的数据,此时我们常用的法则是区间的增量算法,0-500万是user_001,500万-1000万是user_002,等等,后期可以继续扩展新增的用户信息。
各个业务系统不同采用的策略和算法会有所不同,根据业务的需求有可能要冗余一些表或者数据,这都是服务于业务的,不能纯粹以技术来处理。