数据库优化最大的坑就是一上来就分库分表、读写分离,还有数据库连接池的优化等等,这个是很不对的。
杀鸡用牛刀耗精力不说,很容易把整个团队带到沟里面,并不是说一有数据库性能问题,就要上读写分离,90%以上的优化场景是用不到这些高端的操作的,大部分的场景还是在做一些简单的优化。
比如建索引,尤其是一些关联查询,或者是一些单表数据量比较大的情况下的查询,索引的优化是至关重要的,可能建一个索引,查询的速度就会快几秒甚至一个数量级。
再比如我们去优化MySQL,一定要用好慢查询日志,身边有很多小伙伴甚至都不知道有这个东西,这个是一定要掌握的,我们通过它可以去发现一些执行比较慢的sql语句,一些不合理的业务逻辑,甚至有一些不合理的嵌套查询、关键字的滥用,也都能通过慢日志来分析出来,这些同样会给性能带来灭顶之灾。
再比如我们可以引入缓存,可以使用redis去缓存一些热点数据,这样就能够缓解数据库的压力。
还有可以引入消息队列,像Kafka,我们可以做一些削峰填谷的事情,对于一些响应要求不是那么高的场景,我们可以先排队,等数据库闲下来的时候我们再慢慢执行,这在一定程度上也能够缓解数据库的压力等等。
这些操作很简单,但是却能够解决90%以上的优化场景,只有确定系统没有优化空间之后,我们才会去考虑读写分离、集群、分库分表、连接池优化等等这些高端操作,能用一些简单的方式来解决90%以上的场景,也比复杂的方案来解决95%的场景的方式要优先。
本文由《MySql教程网》原创,转载请注明出处!https://mysql360.com