先说结论
隔离级别越高,可支持的并发性越低。 对于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语句。 这意味着不能插入、修改或删除表中的行,不能阻止表中的行,也不能以任何方式阻止表。 如果用户成功锁定,则在当前事务结束之前将启用锁定,并且系统会自动解除锁定。