首页 > 数据库 > > 华为高斯数据库的性能分析
事务隔离级别,它决定当一个事务中存在其他并发运行事务时能够看到什么数据。
在事务中第一个SQL语句(SELECT,INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。
READ COMMITTED:读已提交隔离级别,事务只能读到已提交的数据而不会读到未提交的数据,这是缺省值。
SELECT查询看到一个在查询开始运行的瞬间该数据库的一个快照。不过,SELECT看得见其自身所在事务中前面更新的执行结果。即使它们尚未提交,在同一个事务里两个相邻的SELECT命令可能看到不同的快照,因为其它事务会在第一个SELECT执行期间提交。
读已提交模式里,每个新的命令都是从一个新的快照开始的,而这个快照包含所有到该时刻为止已提交的事务,因此同一事务中后面的命令将看到任何已提交的其它事务的效果。这里关心的问题是在单个命令里是否看到数据库里绝对一致的快照。
读已提交模式提供的部分事务隔离对于许多应用而言是足够的,并且这个模式速度快,使用简单。不过,对于做复杂查询和更新的应用,可能需要保证数据库有比读已提交模式更加严格的一致性视图。
READ CURRENT COMMITTED:当前读隔离级别,语句在执行开始时,获取当前系统的SCN作为当前语句的查询SCN;语句在执行过程中,获取当前访问记录的最近一次提交的结果作为可见版本。在GaussDB 100中READ CURRENT COMMITTED是读已提交的一种,但其不是一致性读,在对一致性要求比较低的场景下可以使用。
SERIALIZABLE:事务可序列化,最高的事务隔离级别,在该级别下,事务串行化顺序执行,属于快照隔离级别的串行化。事务内所有语句执行时,获取当前串行化事务开始的SCN作为语句的查询SCN。整个语句的可见结果在事务开始那一刻决定,不受后续其他事务修改影响。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3145295/ ,如需转载,请注明出处,否则将追究法律责任。