前言:
当数据库表中的数据过大时,查询速度变慢,会影响整个业务模块的性能。
解决方案:
首先考虑:缓存、加索引、优化sql语句。若数据量极大,且持续增长可考虑水平分表、水平分库。
与水平分库、水平分表对应的还有,垂直分库、垂直分表。垂直分库、垂直分表一般来说在系统设计阶段的时候根据业务情况来确定如何分。
相关概念:
垂直分表:把一个表中的字段,按访问频次、是否是大字段的原则拆分多个表。(注意:拆分后,尽量从业务角度方面避免联合查询,否则性能方面得不偿失)
垂直分库:把多个表按业务耦合松紧,分别存放在不同的库,这些库可以分布在不同的服务器上。
水平分表:把一个表中的数据分摊到同库相同结构的表中。
水平分库:把一个表中的数据分摊到不同库相同结构的表中。
其它方案:
系统业务的基础数据和该业务的不同维度的查询数据分开,基础数据保证核心功能正常运转。查询所需数据可用定时任务从基础数据中收集出来。
不同方案带来的性能提升不同,可按实际情况而定。