0 0

mysql中update导致表锁定的问题3

update a set ID=(select ID from b where a.Code = b.Code);

表b的ID是主键,表a的ID和code都不是主键。

表A约有35W行数据。表B34W行。

执行很慢,超过10分钟,导致表b访问也巨慢,被锁定。

刚刚尝试将表b的id和code,做索引,得晚上再测试。

在网上找找,怀疑可能是子查询中的select导致了表b的表锁定,这种情况,该如何解决?


问题补充:
andilyliao 写道
mysql就这个问题 如果不换数据库就得想办法用程序把sql拆开吧。

那update100多W的数据,是否也得拆分处理?
DAO 
2010年2月03日 15:08

1个答案 按时间排序 按投票排序

0 0

mysql就这个问题 如果不换数据库就得想办法用程序把sql拆开吧。

2010年2月03日 15:30

相关推荐

    MySQL锁类型以及子查询锁表问题、解锁1

    如描述中所示,如果一个事务在更新时对子查询中的表进行锁定,可能导致其他事务尝试获取已被锁定的资源,从而引发死锁。MySQL在检测到死锁时会回滚其中一个事务以解决死锁。通过`SHOW ENGINE INNODB STATUS`可以查看...

    浅析MYSQL中的并发操作与锁定

    浅析MYSQL中的并发操作与锁定 MYSQL中的并发操作和锁定是数据库管理系统...但是,如果不正确地使用锁定机制,可能会导致锁竞争的问题。因此,在实际应用中,需要小心地设计和实施锁定机制,以确保数据库的高效和安全。

    MYSQL锁表问题的解决方法

    本文将介绍几种解决MySQL锁表问题的方法。 1. **查看并杀死锁定进程** 使用`SHOW PROCESSLIST`命令可以查看当前所有正在执行的SQL语句及其状态,包括是否被锁定。如果发现有锁定的进程,可以使用`KILL`命令来终止...

    MySQL 5.1中文手冊

    5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL...

    Mysql 数据库死锁过程分析(select for update)

    MySQL数据库中的死锁是数据库管理系统中常见的问题,特别是在并发环境下,多事务操作可能导致死锁的发生。本文主要讨论了在使用`SELECT ... FOR UPDATE`语句时遇到的死锁情况,并通过具体的例子深入分析了死锁的原因...

    MySQL 中如何优化表释放表空间

    在MySQL数据库管理中,释放表空间是维护数据库性能和存储效率的重要环节,特别是对于大型数据库而言。本篇文章将深入探讨两种常见的优化表以释放表空间的方法,并提供相关的注意事项和实践技巧。 方法一:`OPTIMIZE...

    mysql官方中文参考手册

    5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL...

    [mysql]mysql通过on duplicate key update实现批量插入或更新(csdn)————程.pdf

    在MySQL数据库中,`ON DUPLICATE KEY UPDATE` 是一个非常实用的特性,它允许你在执行INSERT语句时,如果插入的数据违反了...但在高并发或频繁更新的场景下,需要注意其可能带来的锁表问题,并考虑采取相应的优化策略。

    MySQL中SELECT+UPDATE处理并发更新问题解决方案分享

    在MySQL数据库环境中,处理并发更新问题是一个常见的挑战,特别是在高流量的应用中。本文将深入探讨如何使用`SELECT+UPDATE`策略解决这个问题,并分享两种具体的解决方案。 首先,让我们回顾一下问题的背景。假设...

    MySQL 5.1官方简体中文参考手册

    5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL...

    mysql锁定单个表的方法

    本文将深入探讨如何在 MySQL 中锁定单个表,并分析不同级别的锁(表级锁、页级锁和行级锁)的优缺点。 首先,锁定单个表的基本方法是使用 `LOCK TABLES` 和 `UNLOCK TABLES` 命令。例如: ```sql mysql> LOCK ...

    生产中使用和管理MySQL分区表

    MyISAM存储引擎在MySQL 5.6.5之前的版本中会锁定整个表直到操作完成。从MySQL 5.7开始,分区锁可以裁剪不需要的锁,仅锁定受影响的分区,从而提高并发性能。而对于InnoDB分区表,由于使用行级别锁,不存在锁的分区...

    MySQL中UPDATE语句使用的实例教程

    跨表更新可能导致锁定和性能问题。如果必须更新多个表,考虑先找到需要更新的记录,然后逐个更新,或者使用JOIN操作来一次性更新。 4. 分批更新: 对于大规模数据,可以将更新操作分批进行,例如每次更新一定数量...

    MYSQL中文手册

    5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA ...

    MySQL Innodb锁解决并发问题

    在本例中,当两个用户尝试同时领取同一活动的第1000张优惠券时,如果没有适当的锁机制,可能会导致超发的问题。此时可以通过添加额外的字段来记录当前已领取的优惠券数量,并利用行级锁来避免并发冲突。 #### 三、...

    mysql5.1中文手册

    mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. ...

    mysql基础知识和mysql优化整理

    1. 数据库与表:MySQL中的数据库是一个逻辑存储单元,用于组织相关数据。表是数据库中的基本元素,由列和行构成,用来存储具体的数据。 2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、...

    MySQL 5.1参考手册中文版

    5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA ...

    MySQL悲观锁总结和实践

    - **表级锁(Table Lock)**:如果SQL语句没有明确指定主键或唯一索引,MySQL可能会执行表级锁,即锁定整个数据表。 **示例**: ```sql -- 行级锁示例 SELECT * FROM t_goods WHERE id = 1 FOR UPDATE; -- 表级锁...

    MySQL 5.1参考手册

    5.4. mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. LOAD DATA LOCAL...

Global site tag (gtag.js) - Google Analytics