1、执行(EXEC)过程中事务隔离,事务间不会影响。即同一时刻只能执行一个事务,并发的事务串行执行。
2、因为事务的执行是同步串行的,因此没有隔离级别的概念,或者理解为隔离级别只有一个:MySQL中的serializable,即最高的隔离级别。
3、虽然事务执行时隔离,但并严格不保证原子性。理由:
情况1:一个事务中含有语法错误的操作(添加命令入队的时候就会报错NUI),事务EXEC后,全都不会执行,此时保证原子性。
情况2:一个事务中含有运行时出错误的操作(添加命令入队的时候显示QUEUED,成功入队),事务EXEC后,会部分执行无错误的操作,有错误的操作不会执行,此时不保证原子性。
4、虽然事务执行时隔离,但在没有EXEC之前,命令一条一条入队的时候,此时别的事务可以修改数据(注意这是在没有EXEC之前,别的事务时可以修改本事务的数据的,我们强调的事务隔离是在EXEC 的过程中隔离),此时使用watch监视某个key,用于感知key在添加指令入队时的变化。
flink 源码分析
网友评论