我可以使用什么具体实现来隔离事务?例如,为了原子性,我可以将多个语句集中在 BEGIN TRAN 下,然后在某处调用 COMMIT。为了保持一致性,我可以设置列的类型以及约束。为了持久性,我可以设置触发器将记录存档到另一个表、安排备份作业或自己手动备份记录。我可以做些什么来隔离?锁定表是实现此目的的一种方法吗?我是否需要了解数据库“会话”是什么才能理解隔离?
每个事务,不仅仅是显式事务(例如,BEGIN TRANSACTION 和 COMMIT/ROLLBACK 之间的事务)都与其他会话/用户隔离。
存储引擎会在其所能做到的最好的“表面”自动设置锁:
事务隔离级别可以有 4 个级别:
选择的隔离级别越高,并发数就越少。
您执行的任何修改结构或读取或写入数据的 SQL 命令,即使是 CREATE、ALTER、DROP、GRANT、REVOKE、EXECUTE... 等命令,默认情况下都是显式事务...