何时在SQL查询中使用FOR UPDATE?

时间:2013-06-05 12:46:08

标签: php mysql

任何人都可以告诉以下sql,

之间的区别
SELECT * FROM TABLE

VS

SELECT * FROM TABLE FOR UPDATE

何时以及在什么情况下我需要使用更新

如果我使用更新并停止,则需要更多时间来获取数据。在更新上发生了什么以增加时间。请告诉我整个过程正在发生。

2 个答案:

答案 0 :(得分:8)

我认为MariaDB / MySQL手册中的句子不言自明:

If you use FOR UPDATE with a storage engine that uses page or row locks, rows examined by the query are write-locked until the end of the current transaction.

答案 1 :(得分:0)

SELECT ... FOR UPDATE获取对象(行,页面,取决于引擎)的写锁定。这涉及一些开销。此外,数据库(大多数情况下为InnoDB引擎)需要为多版本并发控制(MVCC)执行额外的簿记。

有关详细信息和示例,请参阅MySQL documentation on SELECT ... FOR UPDATE