美文网首页
MySQL只查一行语句,为什么慢?

MySQL只查一行语句,为什么慢?

作者: 森林中大鸟 | 来源:发表于2020-07-01 13:14 被阅读0次

    硬件压力

    1. 数据库本身压力过大, 磁盘io利用率太高

    等待

    1. 锁等待

    等待MDL锁, 使用show proceslist 查询当前SQL执行的状态可发现是否被其他语句堵塞.
    MySQL启动时设置 performance_scheme=on (有10%左右性能损失) 然后 查询sys.scheme_table_lock_waits表得到阻塞的process id ,kill id即可解锁

    1. 等flush

    flush tables t read lock 指定表名的话表代表之关闭表 t
    flush tables read lock 表示关闭所有打开的表.这两个语句执行很快,但可能被其他操作堵塞.从而堵住我们的查询语句
    可通过 show processlist 查询出堵塞的原因.

    1. 等行锁
      写锁会堵塞查询语句获得读锁,读锁不会阻塞.

    可通过show processlist 查询到占有锁的操作, MySQL5.7可通过sys.innodb_lock_waits表查询到.
    然后kill 掉 processId 对应的操作即可.

    查询慢

    慢查询日志开启 set long_query_time = 0

    当一致性读遇到大量的更新语句时, 需要执行完大量的undo log 才会返回查询结果.
    可开启慢查询日志观察.
    举个例子:
    todo

    相关文章

      网友评论

          本文标题:MySQL只查一行语句,为什么慢?

          本文链接:https://www.haomeiwen.com/subject/vppcqktx.html