zoukankan      html  css  js  c++  java
  • mysql中两表更新时产生的奇葩问题,产生死锁!

    如下一个两表更新语句

    UPDATE hzxm201610 a,xmhzylb1201610 b SET a.gk07_1_6=b.gk04_11,a.gk07_2_6=b.f06_1,a.gk07_3_6=b.f07_1,a.gk07_4_6=b.f08_1  where   substring(a.gk01,1,4) in ('5323') and a.gk01=b.gk01 and dqdm='532300'

    如果漏掉了where会怎么样:

    UPDATE hzxm201610 a,xmhzylb1201610 b SET a.gk07_1_6=b.gk04_11,a.gk07_2_6=b.f06_1,a.gk07_3_6=b.f07_1,a.gk07_4_6=b.f08_1  substring(a.gk01,1,4) in ('5323') and a.gk01=b.gk01 and dqdm='532300'

    一般以为是会报错。其实不然,这个语句正常执行!而且对两个表全扫描,最后什么也不做!但是会锁定两个表很长时间,导致应用系统无法工作!

    查询mysql死锁的语句:

    #Show PROCESSLIST;
    SELECT * FROM information_schema.INNODB_TRX;
    SELECT * FROM information_schema.INNODB_LOCKS;
    SELECT * FROM information_schema.INNODB_LOCK_WAITS;
    SHOW VARIABLES LIKE '%lock%';

  • 相关阅读:
    C/C++内存对齐
    Fibonacci
    Count 1 in Binary
    Hash Function
    Fast Power
    Update Bits
    Unique Binary Search Trees
    Java知识体系(持续更新)
    如何发现牛股
    OpenResty究竟解决了什么痛点
  • 原文地址:https://www.cnblogs.com/wxb-km/p/5999852.html
Copyright © 2011-2022 走看看