一、数据库性能瓶颈主要原因
1、数据库连接
MySQL数据库默认连接为100,我们可以通过配置initialSize、minIdle、maxActive等进行调优,但由于硬件资源的限制,数据库连接不可能无限制的增加,对大型单体应用单实例数据库可能会出现最大连接数不能满足实际需求的情况,这时就会系统业务阻塞。
2、表数据量大(空间存储问题)
普遍观点认为单表数据量超过1000万条时就是出现数据库读取性能瓶颈。从索引角度分析,如果索引未被命中,数据库系统就会全表扫描,数据量越大,扫描全表的时间就会越长;即使索引被命中了,由于B+TREE索引是存放在硬盘上的,数据量越大B+TREE层次越深,IO次数也就越多。
3、硬件资源限制
硬件资源直接影响QPS每秒查询数/TPS每秒事务数。
二、数据性能优化方案
常见的数据性能优化方案:SQL优化、缓存、创建索引、读写分离、分库分表等。
解决大数据量性能优化,真正有效方案是采用分布式数据存储,即上面所述读写分离和分库分表。
1、读写分离
读写分离基于主从复制,采用区别读、写多数据源方式进行数据的存储和加载。数据的存储(增删改)指定写数据源,数据的读取查询指定读数据源。
通过读写分离复制与master相同的数据源(一主多从),多数据源可以部署到不同主机上,从而可以解决数据里连接瓶颈和硬件资源限制问题。
2、分库分表
对数据的库表进行拆分,用分片的方式对数据进行管理。