我有一个mysql错误,直到现在我还没有在互联网上找到答案:“等待一个锁因为一个悬而未决的独占锁而中止”,我在同一时间有很多事务。这些基于无害数据库表,其中有几个触发器。这些触发器读取和写入其他无害的表和myisam表。我知道什么是“等待锁”,但我没有关于“排他锁”的足够信息。我应该做些什么来终止这个错误,因为这些事务还没有完成,也没有更新这个表中的行。
我有一个Windows 2012 R2标准和一个MySQL 5.6.15。数据库位于SSD驱动器上,日志位于简单的HDD上。
这是我的ini文件:
[mysqld]
port=3306
basedir="C:/MySQL/mysql-5.6.15-winx64/"
datadir="C:/DB/myCustomer/data"
innodb_data_home_dir="C:/DB/myCustomer/innodb/"
log-bin = "E:/Log/mysqldblog/myCustomer/mysql-bin/log"
log-error = "E:/Log/mysqldblog/myCustomer/errorlog/error"
tmpdir ="E:/MySQLTEMP/"
innodb_buffer_pool_size=1024M
join_buffer_size = 4M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
innodb_log_buffer_size = 4M
innodb_flush_log_at_trx_commit=1
max_allowed_packet = 100M
tmp_table_size=64M
max_heap_table_size=64M
innodb_log_file_size = 256M
innodb_thread_concurrency = 16
federated=1
default-storage-engine=INNODB
event-scheduler = ON
max_sp_recursion_depth = 50
character-set-server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
binlog_format=mixed
transaction-isolation = READ-COMMITTED
log-warnings = 0如果有人能帮我解决这个问题,我会同意的。非常感谢。
亲切的问候,安德拉斯
发布于 2016-11-11 09:26:32
排他锁在MySQL 术语表中描述。
防止任何其他事务锁定同一行的一种锁。根据事务隔离级别的不同,这种锁可能阻止其他事务写入同一行,也可能阻止其他事务读取同一行。默认的InnoDB隔离级别可重复读取,允许事务读取具有独占锁的行,这是一种称为一致读取的技术,从而实现了更高的并发性。
我们不能告诉您如何具体地避免此错误实例,我们只能提供关于如何调试它的一般性指导,以及哪些MySQL设置可以帮助您降低接收此类错误的风险。特定的解决方案可能需要对数据进行重组,或者更改应用程序逻辑,甚至升级您的hw --您必须进行调用。
要调试错误,请使用显示引擎INNODB状态语句(来自MySQL v5.7.4使用模式表,但问题适用于v5.6)。
在LATEST DETECTED DEADLOCK部分中,您将找到有关哪些事务和语句导致死锁的信息。
在几十个MySQL设置中,超时对这类错误的影响最为直接,因为您可以给MySQL更多的时间等待情况得到解决。但是,您需要小心,因为增加这个超时设置可能会导致应用程序的减速,并且可能只是掩盖应用程序面临的问题。
索克·谢伦塞特!
https://stackoverflow.com/questions/40544406
复制相似问题