首页 > 编程知识 正文

sqlserver事务隔离级别,事务隔离级别是由谁实现的

时间:2023-05-06 19:41:06 阅读:27760 作者:721

先说结论

隔离级别越高,可支持的并发性越低。 对于cxdmp,建议根据业务选择适当的隔离级别。 并发性可能更重要,特别是在要求不苛刻的情况下。

---读提交(READ COMMITTED ):DM的默认级别,保证不读脏数据;

---未提交(阅读未授权) :可能会阅读脏数据;

---可序列化(可序列化) :事务隔离的最高级别,事务之间的完全隔离。

通常,使用读取提交隔离级别可以满足大多数APP应用程序。 如果APP应用程序需要可重复读取,以确保基于查询结果的更新准确无误,则必须使用可重复读取或可串行读取隔离级别。 可以使用读取提交隔离级别来访问表和视图,以及执行SELECT语句的事务。 但是,只要其他事务中未提交的数据对语句没有负面影响,就可以使用。

2 )隔离级别只能在事务开始执行之前设置,不能在事务执行过程中更改。

DM的隐式块足以确保数据的一致性,但用户可以根据需要手动显式锁定表,以便在当前用户交互期间允许或禁止其他用户访问此表。

DM向用户提供四种时钟锁:意向共享锁(IS )、共享锁)、意向排他锁(IX )和排他锁(x )。

1 .共享表块的意向: intentsharetablelocks(is )此块表示事务正在阻止并尝试修改表中的某些元组(但尚未修改)。 其他事务可以读取这些元组,但不能修改这些元组)。 共享表块的意向是限制最小的锁,表的并发性最大。

1 )允许操作)其他事务可以同时查询、插入、更新、删除该表或阻止该表,其他事务可以同时访问意向共享锁(IS )、意向排他锁(IX )、共享锁(s )

2 )禁止操作)其他事务以排他锁定方式(x )访问该表。 locktabletablenameinexclusivemode;

2 .独占表块意向: intentexclusivetablelocks(IX )此锁表示事务已更改表的元组一次或多次,其他事务无法访问这些元组,因此行共享

1 )授权操作)其他事务同时查询、插入、更新、删除或阻止此表的上行链路,从而允许多个事务在同一表中获得独占(IX )和共享意愿)表块。

2 )禁止操作)其他事务共享表(s )或独占读写阻止) x )。 锁定表表名in share mode; locktabletablenameinexclusivemode;

3 .阻止共享表: sharetablelocks(s )此锁表示事务访问表中的所有元组,而其他事务无法更新表。

1 )允许操作)其他事务在此表中进行查询,但不允许修改,允许多个事务在同一表中同时具有共享表块(s )。

2 )禁止用操作其他事务执行表的意向排他锁(IX )和排他锁方式(x )进行阻止。

4 .独占表块: exclusivetablelocks(x )此块是表块中最严格的方式,只允许具有块的事务修改此表。

1 )允许操作)不允许任何操作。

2 )禁止)其他事务对表执行DML语句。 这意味着不能插入、修改或删除表中的行,不能阻止表中的行,也不能以任何方式阻止表。 如果用户成功锁定,则在当前事务结束之前将启用锁定,并且系统会自动解除锁定。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。