作者: 弦乐之花 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明

mysql innodb之select for update nowait

习惯了oracle数据库的select for update nowait的同学,如果转在mysql环境开发的话,也许会不太适应——目前builtin版本的innodb不支持nowait句法的。早在08年已经被作为bug提了出来(http://bugs.mysql.com/bug.php?id=36285)。还好innodb plugin1.0.2开始支持bug文章里提及的session级innodb_lock_wait_timeout控制(http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-other-changes-innodb_lock_wait_timeout.html)

Before InnoDB Plugin 1.0.2, the only way to set this parameter was in the MySQL option file (my.cnf or my.ini), and changing it required shutting down and restarting the server. Beginning with the InnoDB Plugin 1.0.2, the configuration parameter innodb_lock_wait_timeout can be set at runtime with the SET GLOBAL or SET SESSION commands.

该问题的回复

[5 May 17:08] Bugs System

Pushed into 5.1.47 (revid:joro@sun.com-20100505145753-ivlt4hclbrjy8eye) (version source

revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46)

(pib:16)[6 May 16:58] Paul DuBois

Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug.

Re-closing.

看到该问题也是最终被close掉。值得一提的是目前看到的一些问题都说是5147做fix,mysql51系列啥时候是个头??50系列目前主流的是508X系列吧,最近facebook发布了5084的补丁包,而percona则已经发布了5190-b21版本,oracle则磨刀霍霍向55系列。。。

btw,作为对select for update nowait的实现,其实如果数据库实现不了,其实应用做个超时控制就可以了,把sql执行放到超时控制代码里,具体情况要看开发语言了。

测试:

-- builtin innodb

user@test 10:14:37>set innodb_lock_wait_timeout=1;

ERROR 1238 (HY000): Variable 'innodb_lock_wait_timeout' is a read only variable

-- plugin innodb 1.0.7

user@sbtest 10:15:35>select @@innodb_version;

+------------------+

| @@innodb_version |

+------------------+

| 1.0.7 |

+------------------+

1 row in set (0.00 sec)

user@sbtest 10:15:43>set session innodb_lock_wait_timeout=1;

Query OK, 0 rows affected (0.00 sec)

user@sbtest 10:15:54>show variables like 'innodb_lock_wait_timeout';

+--------------------------+-------+

| Variable_name | Value |

+--------------------------+-------+

| innodb_lock_wait_timeout | 1 |

+--------------------------+-------+

1 row in set (0.01 sec)

user@sbtest 10:16:02>show global variables like 'innodb_lock_wait_timeout';

+--------------------------+-------+

| Variable_name | Value |

+--------------------------+-------+

| innodb_lock_wait_timeout | 15 |

+--------------------------+-------+

1 row in set (0.00 sec)

mysql update nowait_mysql innodb之select for update nowait相关推荐

  1. SELECT... FOR UPDATE 排他锁

    SELECT- FOR UPDATE 排他锁 1. SELECT-FOR UPDATE 是什么?作用是什么? select for update 即排他锁,排他锁又称为写锁,简称X锁,顾名思义,排他锁 ...

  2. mysql事务模式怎么查_Mysql InnoDB中的查询事务模式与锁定select ..for update

    在 InnoDB 的行锁中使用所谓的 next-key locking.这就意味着,除了索引记录外,InnoDB 还可以锁定该索引记录前部"间隙" ('gap') 以阻塞其它用户在 ...

  3. MySQL 使用SELECT ... FOR UPDATE 做事务写入前的确认(转)

    Select-For Update语句的语法与select语句相同,只是在select语句的后面加FOR UPDATE [NOWAIT]子句. 该语句用来锁定特定的行(如果有where子句,就是满足w ...

  4. MySql事务select for update及数据的一致性处理讲解

    MySQL中的事务,默认是自动提交的,即autocommit = 1: 但是这样的话,在某些情形中就会出现问题:比如: 如果你想一次性插入了1000条数据,mysql会commit1000次的, 如果 ...

  5. mysql事务实现数据更新_MySql事务select for update及数据的一致性处理讲解

    MySQL中的事务,默认是自动提交的,即autocommit = 1: 但是这样的话,在某些情形中就会出现问题:比如: 如果你想一次性插入了1000条数据,mysql会commit1000次的, 如果 ...

  6. php mysql update语句_mysql SELECT FOR UPDATE 语句

    MySQL  使用SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE R ...

  7. mysql 事务 for update_mysql事务,select for update,及数据的一致性处理

    在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读) 在SELECT 的读取锁定主要分为两种方式: SELECT ... ...

  8. 【转】MySQL中select * for update锁表的问题

    MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例 ...

  9. mysql update nowait_MySQL 8.0新特性 -- nowait以及skip locked

    如果某行记录被事务锁住了,select ... for update.或select ... for share事务对相同的行加锁的时候必须等待,直到产生阻塞的事务释放锁. 为了避免等待事务释放锁定的 ...

最新文章

  1. 「十项全能」图神经网络能干嘛?
  2. Hibernate映射配置方法
  3. android 脚本引擎,GitHub - PassByYou888/zExpression: 脚本与编译器内部的语法引擎内核,也是一种op内核,zExpression可以轻松实现自己的脚本引擎...
  4. linux的系统移植——交叉编译器
  5. 猫都能学会的Unity3D Shader入门指南(二)
  6. 常用的免费Webservice接口(二)
  7. JSON与Delphi Object的互换
  8. c语言 k最近邻分类算法代码,实验二 K-近邻算法及应用
  9. 快速构建Windows 8风格应用34-构建Toast通知
  10. python txt文件 报文分析_Python读写txt文本文件的操作方法全解析
  11. [渝粤教育] 江西财经大学 实用英语演讲 参考 资料
  12. 以太坊 solidity 函数的完整声明格式
  13. 如何使用 OpManager 进行磁盘空间监控?
  14. 【常用传感器】DS18B20温度传感器原理详解及例程代码
  15. 国外网站视频下载方法通通告诉你
  16. proteus三输入与非门名字_三输入与非门的电路图是什么
  17. 在OpenJweb平台中实现微信刷卡支付(被动扫码)
  18. 苹果android系统版本,给Mac装上的Android系统?Remix OS PC版
  19. 大话西游手游服务器合服信息查询,大话西游手游2021年6月合区查询 6月最新合区列表...
  20. Hadoop系统中的单点故障解决方案总结

热门文章

  1. Kali Linux下安装VMware
  2. linux查看文件有多少行
  3. echarts label加边框_echarts 添加自定义label标签
  4. Simulink工作区无法保存To workspace模块的数据解决办法
  5. 如何使用sklearn优雅地进行数据挖掘?
  6. 大学生助学贷款如何还利息(本金+利息都可以)
  7. angular 数字逗号分隔_angular 实现的输入框数字千分位及保留几位小数点功能示例...
  8. 目录扫描工具dirsearch用法
  9. django mysql 表单_Python Django 表单提交数据到mysql并展示
  10. 移动端UC /QQ 浏览器的部分私有Meta 属性