nim*_*odm 3 mysql innodb isolation-level
问题是关于 MySQL InnoDB 表中同时 SELECT 和 UPDATE 的行为:
我们有一个相对较大的表,我们定期扫描读取多个字段,包括名为 LastUpdate 的字段。在扫描期间,我们更新先前扫描的行。更新在后台线程中批处理和执行 - 使用不同的连接。需要注意的是,我们更新已读取的行。
三个问题:
SELECT
它仍在进行中?READ-UNCOMMITTED
用于SELECT
帮助吗?InnoDB 总是保存行的先前版本。一切都是在写入时复制,因此每次更新都是选择 -> 复制 -> 写入。保存多久取决于
清除行为在最近的版本中得到了很大改善。如果您有兴趣,请查看 dev.mysql.com 以获取更多信息。
我不确定你说的帮助是什么意思。你先阅读然后更新,所以我看不到太多好处。您很可能不想低于 READ-COMMITTED 隔离级别。这已经消除了很多锁定问题(间隙锁定和下一键锁定)。
InnoDB 重做日志包含innodb 表空间中发生的所有更改,以便在系统故障时能够恢复。格式为:页指针偏移量和改变的字节数。因此,如果先前版本被写入撤消空间(它是),那么要回答显式用例,那么 InnoDB 也会将该更改写入日志文件。
我希望这有帮助!
如果您想查看更多细节,我总是建议人们使用innodb_ruby,这是一个非常方便的工具,可以查看 innodb 文件并了解操作的基本原理。
归档时间: |
|
查看次数: |
830 次 |
最近记录: |