MySQL 中的可序列化和基于行的锁定
Serializable and Row-based locking in MySQL
我正在尝试将数据库从 MsSQL 转换为 MySQL。
对于MsSQL中存在的Serializable隔离级别,在MySQL中具体应该如何配置事务呢?因为 MsSQL 关键字不起作用。
示例;
设置事务隔离级别可序列化
去
开始交易;
更新 table_name
SET column1 = value1, column2 = value2, ...
WHERE条件
去
提交交易;
去
除此之外;在事务开始和提交之间对 table 的一行进行事务时是否有基于行的锁定功能?
示例;
更新table_name
SET column1 = value1, column2 = value2, ...
WHERE条件
// 仅针对条件的基于行的锁定
如果默认是禁用的,我应该怎么做才能启用它?
谢谢。
您是否在设置隔离级别后启动事务?它将仅为下一个交易设置交易级别。您可以通过“SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;”为所有会话设置它。如果您想在创建与数据库服务器的连接期间执行此操作,您可以在连接字符串的末尾添加“?sessionVariables=transaction_isolation='SERIALIZABLE'”。或者您可以在连接后立即执行一次“SET SESSION TRA ... SERIALIZABLE”。
我正在尝试将数据库从 MsSQL 转换为 MySQL。
对于MsSQL中存在的Serializable隔离级别,在MySQL中具体应该如何配置事务呢?因为 MsSQL 关键字不起作用。
示例;
设置事务隔离级别可序列化
去
开始交易;
更新 table_name
SET column1 = value1, column2 = value2, ...
WHERE条件
去
提交交易;
去
除此之外;在事务开始和提交之间对 table 的一行进行事务时是否有基于行的锁定功能?
示例;
更新table_name SET column1 = value1, column2 = value2, ... WHERE条件
// 仅针对条件的基于行的锁定
如果默认是禁用的,我应该怎么做才能启用它?
谢谢。
您是否在设置隔离级别后启动事务?它将仅为下一个交易设置交易级别。您可以通过“SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;”为所有会话设置它。如果您想在创建与数据库服务器的连接期间执行此操作,您可以在连接字符串的末尾添加“?sessionVariables=transaction_isolation='SERIALIZABLE'”。或者您可以在连接后立即执行一次“SET SESSION TRA ... SERIALIZABLE”。