美文网首页
Mysql死锁分析

Mysql死锁分析

作者: luncene_e110 | 来源:发表于2020-11-25 11:54 被阅读0次

事务1:

UPDATE vh_product_price

SET update_time=now(),update_person='zhaolingjun',sales_cvc_code='C6M02020AC16CGC1000003010',status='1',dealer_id=1255469042005170269,dealer_guide_price=148800,market_guide_price=108800,dealer_lowest_price=97800

WHERE (sales_cvc_code = 'C6M02020AC16CGC1000003010' and dealer_id = 1255469042005170269 and dr = 0)

事务2:

UPDATE vh_product_price

SET update_time=now(),update_person='zhaoyazhong',sales_cvc_code='C6M02020AC16CGC1000003010',status='1',dealer_id=1254231378003189822,dealer_guide_price=148800,market_guide_price=108800,dealer_lowest_price=89800

WHERE (sales_cvc_code = 'C6M02020AC16CGC1000003010' and dealer_id = 1254231378003189822 and dr = 0)

执行计划如下:

mysql> explain select count(*) from vh_product_price WHERE (sales_cvc_code = 'C6M02020AC16CGC1000003010' and dealer_id = 1254231378003189822 and dr = 0);

+----+-------------+------------------+------------+-------------+----------------------------------------------------+----------------------------------------------------+---------+------+------+----------+----------------------------------------------------------------------------------+

| id | select_type | table            | partitions | type        | possible_keys                                      | key                                                | key_len | ref  | rows | filtered | Extra                                                                            |

+----+-------------+------------------+------------+-------------+----------------------------------------------------+----------------------------------------------------+---------+------+------+----------+----------------------------------------------------------------------------------+

|  1 | SIMPLE      | vh_product_price | NULL       | index_merge | IDX_vh_prodice_sales_code,IDX_vh_prodice_dealer_id | IDX_vh_prodice_dealer_id,IDX_vh_prodice_sales_code | 8,802   | NULL | 5220 |    10.00 | Using intersect(IDX_vh_prodice_dealer_id,IDX_vh_prodice_sales_code); Using where |

+----+-------------+------------------+------------+-------------+----------------------------------------------------+----------------------------------------------------+---------+------+------+----------+----------------------------------------------------------------------------------+

表结构:

vh_product_price

CREATE TABLE `vh_product_price` (

  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',

  `dr` tinyint NOT NULL COMMENT '删除标记',

  `tenant_id` bigint NOT NULL COMMENT '租户ID',

  `instance_id` bigint NOT NULL COMMENT '实例ID',

  `create_person` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '创建人账户名称',

  `create_time` datetime NOT NULL COMMENT '创建时间',

  `update_person` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '修改人账户名称',

  `update_time` datetime NOT NULL COMMENT '更新时间',

  `extension` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '拓展字段内容',

  `sales_cvc_code` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '销售CVC代码',

  `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '1' COMMENT '状态(1启用 2停用)',

  `dealer_id` bigint NOT NULL COMMENT '经销商id',

  `dealer_guide_price` decimal(16,4) NOT NULL DEFAULT '0.0000' COMMENT '经销商指导价',

  `market_guide_price` decimal(16,4) NOT NULL DEFAULT '0.0000' COMMENT '市场指导价',

  `dealer_lowest_price` decimal(16,4) NOT NULL DEFAULT '0.0000' COMMENT '经销商最低销售价',

  `org_brand` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '组织品牌 读取到当前经销商的组织结构中的品牌,用于以后多品牌扩展',

  `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '描述',

  PRIMARY KEY (`id`) USING BTREE,

  KEY `IDX_vh_prodice_sales_code` (`sales_cvc_code`) USING BTREE,

  KEY `IDX_vh_prodice_dealer_id` (`dealer_id`) USING BTREE,

  KEY `IDX_vh_prodice_create_ime` (`create_time`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=1258548384653373474 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='车辆产品价格表';

场景1:

UPDATE vh_product_price

SET update_time=now(),update_person='zhaoyazhong',sales_cvc_code='C6M02020AC16CGC1000003010',status='1',dealer_id=1254231378003189822,dealer_guide_price=148800,market_guide_price=108800,dealer_lowest_price=89800

WHERE (sales_cvc_code = 'C6M02020AC16CGC1000003010' and dealer_id = 1254231378003189822 and dr = 0)

同样的sql语句不同的事物出现死锁。


场景2:

UPDATE vh_product_price

SET update_time=now(),update_person='zhaolingjun',sales_cvc_code='C6M02020AC16CGC1000003010',status='1',dealer_id=1255469042005170269,dealer_guide_price=148800,market_guide_price=108800,dealer_lowest_price=97800

WHERE (sales_cvc_code = 'C6M02020AC16CGC1000003010' and dealer_id = 1255469042005170269 and dr = 0)

事务2:

UPDATE vh_product_price

SET update_time=now(),update_person='zhaoyazhong',sales_cvc_code='C6M02020AC16CGC1000003010',status='1',dealer_id=1254231378003189822,dealer_guide_price=148800,market_guide_price=108800,dealer_lowest_price=89800

WHERE (sales_cvc_code = 'C6M02020AC16CGC1000003010' and dealer_id = 1254231378003189822 and dr = 0)

不同的sql出现死锁

相关文章

  • 一则由于索引导致的MySQL死锁分析

    涉及死锁的 authorized_user 表的 DDL 死锁日志 根据 MySQL 日志分析出来的涉及死锁的 S...

  • Mysql死锁分析

    事务1: UPDATE vh_product_price SET update_time=now(),update...

  • MySQL死锁分析

    一、表结构,死锁日志,事务隔离级别 表结构: 死锁日志: 事务隔离级别为读已提交。 二、insert on dup...

  • MySQL死锁分析

    死锁场景1:并发插入重复key 场景重现 表结构如下: 三个session按顺序执行下面的操作 Session 1...

  • MySQL死锁分析

    什么是死锁 MySQL的死锁指的是两个事务互相等待的场景,这种循环等待理论上不会有尽头。比如事务A持有行1的锁,事...

  • Mysql死锁如何排查:insert on duplicate死

    前言 遇到Mysql死锁问题,我们应该怎么排查分析呢?之前线上出现一个insert on duplicate死锁问...

  • MySQL锁之深入死锁分析

    1 死锁产生原因分析 点击此处了解MySQL各种锁分析[https://jingzh.blog.csdn.net/...

  • MySQL死锁case分析

    死锁发现 2018-01-18 14:10:03 线上环境批量更新库存的地方出现了死锁 2018-01-25 16...

  • MySQL UPDATE 死锁分析

    Table Update Analyse innodb update语句会执行以下步骤: 若1,2步骤之间有类似语...

  • MySQL8.0:死锁日志改进

    重要改进 MySQL8.0 的死锁日志可以看到事务1持有的锁信息了: 这对我们分析死锁无疑是个很好的帮助,而在 M...

网友评论

      本文标题:Mysql死锁分析

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