
业务高峰期的性能问题
短连接风暴
max_connections限制。max_connections的值可能加剧系统负载,导致资源耗费在权限验证上。这里注意:权限验证可以关闭,但在生产上会导致问题产生。
kill connection命令主动踢掉不需要的连接。
 慢查询性能问题
force index来解决慢查询问题。这里注意:改写SQL语句是MySQL提供的功能。
QPS突增问题
临时救火措施的风险
处理占用连接但不工作的线程时,有一些安全处理这些线程的方法:
SHOW PROCESSLIST:这个命令可以显示当前MySQL中所有的线程,包括它们的ID、状态、执行的命令等信息。INFORMATION_SCHEMA.INNODB_TRX:这个表提供了当前正在进行的事务的详细信息,包括事务的状态。Sleep状态的线程,如果确定它们没有处于任何事务中,可以优先考虑断开这些连接。这是因为它们可能已经完成了任务,但由于某些原因没有正确关闭。
 wait_timeout
 通过调整wait_timeout参数,可以让MySQL自动断开空闲超过指定时间的连接。这样做的好处是不需要手动干预,MySQL会自动处理。
 KILL CONNECTION命令
 如果确定某个连接需要被终止,可以使用KILL CONNECTION命令。例如:
 --这个命令会关闭指定的连接,执行前需要确保不会中断正在执行的重要操作。
KILL CONNECTION connection_id;KILL CONNECTION
 如果在事务中使用KILL CONNECTION,可能会回滚事务,导致数据不一致。因此,在考虑使用KILL CONNECTION之前,应确保连接不在事务中,或者已经提交了事务。
 KILL QUERY
 如果你确定线程正在执行的查询可以被中断,而不会对数据完整性造成影响,可以使用KILL QUERY命令来停止查询而不中断连接。