mysql 41000_MySql错误>超出锁定等待超时;尝试重新启动事务SQLState:41000 VendorError:1205...
多年来我一直在研究这个问题,但从来没有能够深入到底.我不知道是什么原因导致这些锁定.错误是:超过锁定等待超时;尝试重新启动事务SQLState:41000 VendorError:1205SQL语句是在事务中运行的单个insert语句.所有刀片都是这种形式,所以没有批量插入,也没有混合模式插入等.INSERT INTO附件(id,entityid,entitytype,addeduserid,de
多年来我一直在研究这个问题,但从来没有能够深入到底.我不知道是什么原因导致这些锁定.
错误是:超过锁定等待超时;尝试重新启动事务SQLState:41000 VendorError:1205
SQL语句是在事务中运行的单个insert语句.所有刀片都是这种形式,所以没有批量插入,也没有混合模式插入等.
INSERT INTO附件(id,entityid,entitytype,addeduserid,deleteduserid,fullpath,filename,status,creationdate,lastupdated,deletiondate,hasfile,notes,history,type,mimeinfo,archivedby,archivedon,referencedate,changedby,changedon)values(0, 0,2,360,null,NULL,NULL,1,’2013-02-20 08:45:31′,’2013-02-20 08:45:31′,NULL,0,NULL,’20 / 02/2013 08:45:UserA:内部上传的文件.< br>‘,0,NULL,null,NULL,NULL,null,NULL);
系统配置:
Mysql版本:’服务器版:5.1.61源代码发布'(在Redhat上)
储存:INNODB
INNODB相关配置(部分由my.cnf编辑):
innodb_file_per_table=1
innodb_buffer_pool_size=3G
innodb_additional_mem_pool_size=20M
innodb_log_file_size=512M
innodb_log_files_in_group=2
innodb_log_buffer_size=16M
innodb_support_xa=1
innodb_doublewrite=1
innodb_thread_concurrency=0
innodb_flush_log_at_trx_commit=2
innodb_autoinc_lock_mode=2**
innodb_rollback_on_timeout=1
innodb_locks_unsafe_for_binlog=1**
thread_cache_size=8
query_cache_size=256M
query_cache_limit=4M
table_cache=2048
table_definition_cache=1024
tmp_table_size=512M
max_heap_table_size=512M
transaction-isolation=READ-COMMITTED**
innodb_table_locks=0**
innodb_lock_wait_timeout=50**
**这些都是针对这个问题专门添加的.
通常:
系统(即有6个应用程序实例,每个应用程序实例都具有相同的数据库结构,都在一个mysql实例上运行)可以运行好几天,然后可以运行Lock Waits开始发生,并且通常会让它们在这段时间内出现在组中当天每个错误都会重复出现,因为一旦失败,我会再次尝试,通常重新尝试将失败.我已配置重试4次.通常,锁只会出现在几个不同的表中.
今天特定的问题实例:
今天早上在附件表上,自昨晚以来一直没有在桌子上插入.自前一天晚上以来,桌面上也没有任何更新.
如果锁与执行更新和插入的其他用户无关,那么某些select语句是否会导致锁定?我试图确保所有select语句都使用attachment_general_index?
由于我主要是在几个不同的表上得到这个 – 这是这个表的结构.
CREATE TABLE `attachment` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`entityid` int(10) unsigned DEFAULT NULL,
`entitytype` tinyint(3) unsigned NOT NULL DEFAULT '0',
`addeduserid` int(10) unsigned NOT NULL,
`deleteduserid` int(10) unsigned DEFAULT NULL,
`fullpath` varchar(255) DEFAULT NULL,
`filename` varchar(255) DEFAULT NULL,
`status` tinyint(3) unsigned NOT NULL DEFAULT '0',
`creationdate` varchar(40) DEFAULT NULL,
`lastupdated` varchar(40) DEFAULT NULL,
`deletiondate` varchar(40) DEFAULT NULL,
`hasfile` tinyint(3) unsigned NOT NULL DEFAULT '0',
`notes` text,
`history` text,
`type` tinyint(3) unsigned DEFAULT '0',
`lastupdatedby` int(10) DEFAULT '0',
`lastupdatedinfo` varchar(255) DEFAULT NULL,
`mimeinfo` varchar(255) DEFAULT NULL,
`archivedby` int(10) unsigned DEFAULT NULL,
`archivedon` varchar(40) DEFAULT NULL,
`referencedate` varchar(40) DEFAULT NULL,
`changedby` int(10) unsigned DEFAULT NULL,
`changedon` varchar(40) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `attachment_addeduserid_fkey` (`addeduserid`),
KEY `attachment_deleteduserid_fkey` (`deleteduserid`),
KEY `attachment_archivedby_fkey` (`archivedby`),
KEY `attachment_changedby_fkey` (`changedby`),
KEY `attachment_general_index` (`entitytype`,`entityid`,`status`,`type`),
CONSTRAINT `attachment_ibfk_1` FOREIGN KEY (`addeduserid`) REFERENCES `user` (`id`),
CONSTRAINT `attachment_ibfk_2` FOREIGN KEY (`deleteduserid`) REFERENCES `user` (`id`),
CONSTRAINT `attachment_ibfk_3` FOREIGN KEY (`archivedby`) REFERENCES `user` (`id`),
CONSTRAINT `attachment_ibfk_4` FOREIGN KEY (`changedby`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3619 DEFAULT CHARSET=latin1$$
我已经附上了最近的SHOW INNODB状态,这是从今天起,从昨天起就没有锁定等待.我不明白所有这些输出,但主要的是锁似乎永远不会出现在这里.我假设他们没有归类为死锁?
这个问题只有死锁区才有意思吗?如果还有其他区域,我会尽力收集并提供.
任何帮助,将不胜感激.
缺口
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)