Questions tagged «locked-objects»

3
跟踪,调试和修复行锁争用
迟到了,我遇到了很多行锁争用。争用的表似乎是特定的表。 通常就是这样- 开发人员1从Oracle Forms前端屏幕开始事务 开发人员2使用同一屏幕从不同的会话开始另一笔交易 大约5分钟后,前端似乎没有反应。检查会话显示行锁争用。每个人都抛出的“解决方案”是终止会话:/ 作为数据库开发人员 如何消除行锁争用? 是否有可能找出存储过程的哪一行引起这些行锁争用 减少/避免/消除此类问题的通用准则是什么? 如果您觉得此问题过于开放/信息不足,请随时进行编辑/让我知道-我会尽力补充一些其他信息。 有问题的表有很多插入和更新,我想说它是最繁忙的表之一。SP相当复杂-为简化起见-它从各种表中获取数据,将其填充到工作表中,在工作表上发生许多算术运算,并且将工作表的结果插入/更新到有问题的表中。 数据库版本为Oracle Database 10g企业版10.2.0.1.0版-64位。逻辑流在两个会话中以相同的顺序执行,事务未保持打开状态的时间过长(或至少我认为如此),并且在事务的主动执行过程中发生了锁定。 更新:表行数比我预期的要大,大约为310万行。另外,在跟踪会话后,我发现该表的几个更新语句没有利用索引。为什么会这样-我不确定。where子句中引用的列已建立索引。我目前正在重建索引。

2
无法解释的InnoDB超时
我最近看到一些非常基本的更新超时,并且无法确定原因。一个例子: //#查询时间:51锁定时间:0已发送的行数:0已检查的行数:0 UPDATE photos SET position = position + 1 WHERE (photo_album_id = 40470); 同一日志中没有Lock_time> 0的条目。运行show innodb status也不会显示任何相关的锁。根据我的应用服务器日志(显示Mysql::Error: Lock wait timeout exceeded与mysql-slow日志中的每个对应条目相关的错误),此问题似乎正在影响至少5个不同的表。 有什么想法从这里去吗?我四面八方。谢谢。 编辑: 创建表`照片`( `id` int(11)NOT NULL auto_increment, `type` varchar(255)NOT NULL, `photo_album_id` int(11)非空, `user_id` int(11)NOT NULL, `title` varchar(255)默认为'Untitled', `description`文字, `credit` varchar(255)默认为NULL, photo_file_name varchar(255)默认为NULL, `photo_content_type` varchar(255)默认为NULL, `photo_file_size` int(11)默认为NULL, `photo_updated_at`日期时间默认为NULL, `position` …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.