数据库的优化方案
mysql数据库的优化方案
-
sql与索引
因为sql语句是我们在应用端编写的,所以第一步,我们可以在程序中对sql语句进行优化,最终的目标是用到索引。 -
表与存储引擎
数据都是存放在表中的,表又是以不同的格式存放在存储引擎中的,所以我们可以选择特定的存储引擎,
或者对表进行分区,对表的结构进行拆分或者冗余处理,或者对表的结构比如字段的定义进行优化。 -
架构
对于数据库的服务,我们可以对它的架构进行优化。
如果只有一台数据库的服务器,我们可以运行多个实例,做集群的方案,做负载均衡。
或者基于主从复制实现读写分离,让写的服务都访问master(主)服务器,读的请求都访问slave(从)服务器,
slave服务器自动同步master服务器的数据。
或者在数据库前面加一层缓存,达到减轻数据库的压力,提升访问速度的目的。比如说rabbitmq。
为了分散数据库的存储压力和访问压力,我们也可以把不同的数据分不到不同的服务节点,也就是分表分库(scale out)。
注意主从(replicate)和分片(shard)的区别:
主从通过数据冗余实现高可用,和实现读写分离。
分片是通过拆分数据分散存储和访问压力。
4.配置
数据库配置的优化:比如说连接数、缓冲区大小等等,优化配置的目的就是为了更高效的利用硬件
5 操作系统和硬件的优化
从上往下,成本收益比慢慢的在增加。所以肯定不是查询一慢就堆硬件,堆硬件的叫向上的扩展。
什么时候才需要分库分表呢?我们的评判标准又是什么呢?
如果是数据量的话,一张表存储了多少数据的时候才需要分库分表?
如果是增长速度的话,每天产生了多少数据,才需要考虑到分库分表?
如果是应用的访问情况的话,查询超过了多少时间,有多少请求无法获取连接才需要分库分表?这是值得我们思考的问题。
所谓天才,只不过是把别人喝咖啡的功夫都用在工作上了。

浙公网安备 33010602011771号