zoukankan      html  css  js  c++  java
  • 如何来避免锁冲突

    锁冲突检测

      1、对于事务锁,可以查询相关视图,查询发现锁冲突以及顶端阻塞者

      2、对于表锁,无法查询阻塞者,无法确定阻塞关系,因此对于表锁,很难定位故障

    锁相关的视图

      innodb_locksinnodb_lock_waits

    锁相关的参数

      行锁超时参数:innodb_lock_wait_timeout

      表锁超时参数:lock_wait_timeout

      innodb有一个不好的地方,通过性能视图只能查看事务锁以及锁定关系,对于表锁不能确定锁定关系,因此对表锁不能进行阻塞者的查找和处理,对于行锁来说,可以查找到阻塞者,然后找到阻塞者对应的线程IDkill掉对应的线程就可以释放锁,注意innodb主要通过三个视图来处理锁定关系,innodb_locksinnodb_trxinnodb_lock_waits三个视图来联合查询锁定关系

    避免

      1、通过使用innodb table,避免使用MyISAM table

      2、监控行锁冲突(事务锁),为应用人员提供行锁冲突的信息(锁冲突对应的SQL语句、锁冲突对应的事务ID,然后通过binlog来查询事务对应的SQL语句),通过修改应用逻辑降低行锁冲突

      3、业务高峰期避免DDL,对于DDL操作一定要做好测试,对于锁表时间进行准确评估

      4、降低行锁冲突的超时时间

      5、监控大事务和长事务,将对应的SQL信息提供给开发人员

      6、提高DML语句对应的执行性能,尽量走索引

  • 相关阅读:
    GRUB引导界面背景图片制作完整教程
    git遇到问题 Flandre
    NOIP2021 比赛记录 Flandre
    一个不错的回车提交按钮
    防止SQL注入
    NLog 不能些日志
    ajax 加载partial view ,并且 附加validate验证
    linq 常用查询
    Android开发工具问题之ADTversion
    C# 实现一个简单的FTP服务器
  • 原文地址:https://www.cnblogs.com/5945yang/p/11301143.html
Copyright © 2011-2022 走看看