一个慢sql可能会成为害群之马

一条sql执行慢,不仅相关业务受影响,其他业务也可能影响。

数据库连接是有限的,一条慢sql执行慢,就意味着它会在较长时间内占用数据库连接; 如果并发执行慢sql, 很容易占用大量的数据库连接,其他的快sql获取不到连接,执行不了,快sql对应的sql也就受影响了,最终导致整个系统的可用性都出问题。

除了数据库连接,慢SQL(或者大规模数据处理如批量数据清理)还会占用数据库的其他资源。
比如过久占用锁、占用过多CPU/内存等,这些都有可能导致其他sql不能立即执行。

解决方案有:

1. 甄别、改进慢sql. 对于高并发的系统,sql rt应该维持在5ms以内

2. 数据库连接池互相隔离,比如让主干业务独享数据库连接池,其他业务若出现慢sql也不影响主业务。

3. 设置sql执行超时,一段时间内没有执行完强制释放数据库连接。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.