首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:独占锁

MySQL:独占锁
EN

Stack Overflow用户
提问于 2016-11-11 09:00:53
回答 1查看 2.3K关注 0票数 0

我有一个mysql错误,直到现在我还没有在互联网上找到答案:“等待一个锁因为一个悬而未决的独占锁而中止”,我在同一时间有很多事务。这些基于无害数据库表,其中有几个触发器。这些触发器读取和写入其他无害的表和myisam表。我知道什么是“等待锁”,但我没有关于“排他锁”的足够信息。我应该做些什么来终止这个错误,因为这些事务还没有完成,也没有更新这个表中的行。

我有一个Windows 2012 R2标准和一个MySQL 5.6.15。数据库位于SSD驱动器上,日志位于简单的HDD上。

这是我的ini文件:

代码语言:javascript
复制
[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

如果有人能帮我解决这个问题,我会同意的。非常感谢。

亲切的问候,安德拉斯

EN

回答 1

Stack Overflow用户

发布于 2016-11-11 09:26:32

排他锁在MySQL 术语表中描述。

防止任何其他事务锁定同一行的一种锁。根据事务隔离级别的不同,这种锁可能阻止其他事务写入同一行,也可能阻止其他事务读取同一行。默认的InnoDB隔离级别可重复读取,允许事务读取具有独占锁的行,这是一种称为一致读取的技术,从而实现了更高的并发性。

我们不能告诉您如何具体地避免此错误实例,我们只能提供关于如何调试它的一般性指导,以及哪些MySQL设置可以帮助您降低接收此类错误的风险。特定的解决方案可能需要对数据进行重组,或者更改应用程序逻辑,甚至升级您的hw --您必须进行调用。

要调试错误,请使用显示引擎INNODB状态语句(来自MySQL v5.7.4使用模式表,但问题适用于v5.6)。

LATEST DETECTED DEADLOCK部分中,您将找到有关哪些事务和语句导致死锁的信息。

在几十个MySQL设置中,超时对这类错误的影响最为直接,因为您可以给MySQL更多的时间等待情况得到解决。但是,您需要小心,因为增加这个超时设置可能会导致应用程序的减速,并且可能只是掩盖应用程序面临的问题。

索克·谢伦塞特!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40544406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档