-
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的数据,是否也得拆分处理?
2010年2月03日 15:08
相关推荐
如描述中所示,如果一个事务在更新时对子查询中的表进行锁定,可能导致其他事务尝试获取已被锁定的资源,从而引发死锁。MySQL在检测到死锁时会回滚其中一个事务以解决死锁。通过`SHOW ENGINE INNODB STATUS`可以查看...
浅析MYSQL中的并发操作与锁定 MYSQL中的并发操作和锁定是数据库管理系统...但是,如果不正确地使用锁定机制,可能会导致锁竞争的问题。因此,在实际应用中,需要小心地设计和实施锁定机制,以确保数据库的高效和安全。
本文将介绍几种解决MySQL锁表问题的方法。 1. **查看并杀死锁定进程** 使用`SHOW PROCESSLIST`命令可以查看当前所有正在执行的SQL语句及其状态,包括是否被锁定。如果发现有锁定的进程,可以使用`KILL`命令来终止...
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数据库管理中,释放表空间是维护数据库性能和存储效率的重要环节,特别是对于大型数据库而言。本篇文章将深入探讨两种常见的优化表以释放表空间的方法,并提供相关的注意事项和实践技巧。 方法一:`OPTIMIZE...
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数据库中,`ON DUPLICATE KEY UPDATE` 是一个非常实用的特性,它允许你在执行INSERT语句时,如果插入的数据违反了...但在高并发或频繁更新的场景下,需要注意其可能带来的锁表问题,并考虑采取相应的优化策略。
在MySQL数据库环境中,处理并发更新问题是一个常见的挑战,特别是在高流量的应用中。本文将深入探讨如何使用`SELECT+UPDATE`策略解决这个问题,并分享两种具体的解决方案。 首先,让我们回顾一下问题的背景。假设...
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 中锁定单个表,并分析不同级别的锁(表级锁、页级锁和行级锁)的优缺点。 首先,锁定单个表的基本方法是使用 `LOCK TABLES` 和 `UNLOCK TABLES` 命令。例如: ```sql mysql> LOCK ...
MyISAM存储引擎在MySQL 5.6.5之前的版本中会锁定整个表直到操作完成。从MySQL 5.7开始,分区锁可以裁剪不需要的锁,仅锁定受影响的分区,从而提高并发性能。而对于InnoDB分区表,由于使用行级别锁,不存在锁的分区...
跨表更新可能导致锁定和性能问题。如果必须更新多个表,考虑先找到需要更新的记录,然后逐个更新,或者使用JOIN操作来一次性更新。 4. 分批更新: 对于大规模数据,可以将更新操作分批进行,例如每次更新一定数量...
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 ...
在本例中,当两个用户尝试同时领取同一活动的第1000张优惠券时,如果没有适当的锁机制,可能会导致超发的问题。此时可以通过添加额外的字段来记录当前已领取的优惠券数量,并利用行级锁来避免并发冲突。 #### 三、...
mysql_fix_privilege_tables:升级MySQL系统表 5.5. MySQL服务器关机进程 5.6. 一般安全问题 5.6.1. 通用安全指南 5.6.2. 使MySQL在攻击者面前保持安全 5.6.3. Mysqld安全相关启动选项 5.6.4. ...
1. 数据库与表:MySQL中的数据库是一个逻辑存储单元,用于组织相关数据。表是数据库中的基本元素,由列和行构成,用来存储具体的数据。 2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、...
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 ...
- **表级锁(Table Lock)**:如果SQL语句没有明确指定主键或唯一索引,MySQL可能会执行表级锁,即锁定整个数据表。 **示例**: ```sql -- 行级锁示例 SELECT * FROM t_goods WHERE id = 1 FOR UPDATE; -- 表级锁...
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...