【问题标题】:Serializable and Row-based locking in MySQLMySQL 中的可序列化和基于行的锁定
【发布时间】:2022-01-15 23:16:13
【问题描述】:

我正在尝试将数据库从 MsSQL 转换为 MySQL。

在 MySQL 中,对于 MsSQL 中存在的 Serializable 隔离级别,究竟应该如何进行事务配置?因为 MsSQL 关键字不起作用。

示例;

设置事务隔离级别可序列化

开始交易;
更新表名 SET column1 = value1,column2 = value2,... WHERE 条件
提交交易;
去吧

除此之外;在事务开始和提交之间对表的一行进行事务时,是否有基于行的锁定功能?

示例;

更新表名 SET column1 = value1,column2 = value2,... WHERE 条件

// 仅针对条件的基于行的锁定

如果默认禁用,我应该怎么做才能启用它?

谢谢。

【问题讨论】:

  • 首先,这两个sql是transact sql,但它们在很多方面有所不同。您能否分享 DDL 以确定问题出在哪里。您还应该提供有关版本的一些详细信息。你可以检查它是如何工作的 mysql 的事务。 dev.mysql.com/doc/refman/8.0/en/…
  • 我正在研究与 MySQL 的 MSSQL 中的 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 语句完全等效的语句。

标签: mysql database isolation-level rowlocking


【解决方案1】:

您是否在设置隔离级别后开始事务?它只会为下一个事务设置事务级别。您可以通过“SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;”为所有会话设置它。如果您想在创建与数据库服务器的连接期间执行此操作,您可以在连接字符串的末尾添加“?sessionVariables=transaction_isolation='SERIALIZABLE'”。或者您可以在连接后立即执行一次“SET SESSION TRA...SERIALIZABLE”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2013-01-26
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多