MyRocks_zh_doc

行锁定

行锁(Row Locks)

MyRocks支持共享锁和排它锁(独占锁),MyRocks使用RocksDB库中的锁管理器来支持在事务更新期间锁定行
INSERT 和 UPDATE 语句自动获取独占行锁,这些所也可以通过获取。
   
* SELECT ... FOR UPDATE
* SELECT ... LOCK IN SHARE MODE

一旦MySQL客户端获得独占锁,它就可以阻止其他mysql客户端修改该行。
锁在事务期间保持,提交或回滚事务后,锁定全部被释放。

跳过行锁(Skipping Row Locks)

可以通过特定的客户端的系统变量 unique_check = 0 禁用行锁定和唯一键检查。这可能会导致批量加载新表的客户端的性能提高。
禁用唯一检查时插入的任何重复键将导致冲突行被更新。使用此选项应该注意,因为如果使用不当会导致表和索引损坏。

间隙锁(Gap Locks)

目前在MyRocks中不支持间隙锁定。在MyRocks上运行时依赖间隙锁定以支持可重复取隔离级别的事务可能导致基于Statement的复制master和slave不匹配。
系统变量gap_lock_raise_error可以设置为检测何时在现有事务上请求间隙锁定,并且可以将它们记录到gap_lock_write_log文件中。

对于复制,如果master服务器上使用MyRocks存储引擎,则需要启用基于ROW模式的复制