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

问无锁表MySQL
EN

Stack Overflow用户
提问于 2012-03-19 08:38:15
回答 2查看 2.1K关注 0票数 2

我正在运行一个存储过程,它涉及放置在联接中的更多表。我的存储过程读取INNODB表上的操作,写入以这种方式创建的临时表。

代码语言:javascript
复制
CREATE TEMPORARY TABLE IF NOT EXISTS tmpDate
(
dates TIMESTAMP,
values INT,
ids INT
);

最后,对表(INNODB)的一个列(INNODB)进行更新操作,其中肯定是,没有冲突的操作,因为我只对它执行插入操作(选择和更新仅在该StoredProcedure中)。

每次运行它时,都会收到以下错误消息:

超过锁定等待超时;尝试重新启动事务

我立即认为是由于对一个独占锁的搁置。您知道如何不为存储过程执行锁表或允许我执行SP吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-21 15:09:44

这个错误:"Lock wait timeout exceeded; try restarting transaction" --这是MySQL数据库的问题。我重新启动了它,我的存储过程运行良好。我还没有找到完整存储程序的锁表.

票数 0
EN

Stack Overflow用户

发布于 2012-03-21 15:23:04

不应使用InnoDB创建临时表。关于这件事有一份过去的错误报告。

代码语言:javascript
复制
DROP TABLE IF EXISTS tmpDate;
CREATE TEMPORARY TABLE tmpDate 
( 
   date s TIMESTAMP, 
    values INT, 
    ids INT 
) ENGINE=MyISAM; 

Tmp表最好用作自MyISAM以来的全表锁是强制的,但本质上是不阻塞的。。

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

https://stackoverflow.com/questions/9767081

复制
相关文章

相似问题

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