• [Js-SQL]事务的四个隔离级别


    事务的四个隔离级别(4个):

      -read uncommitted  读未提交

      -read committed  读已提交

      -repeatable read  可重复读

      -serializable  串行化

    read uncommitted 读未提交

      事务A和事务B,事务A未提交的数据,事务B可以读取到,这里读到的数据可以被称为“脏读”,最低的隔离级别,这种级别一般是理论存在,数据库默认的隔离级别一般都是高于该级别的

    read committed 读已提交

      事务A和事务B,事务A提交的数据,事务B才能读取到。这种隔离级别高于上面的读未提交,意思是:对方事务提交之后的数据,我当前事务才能够读取到。这种隔离级别可以避免脏数据,这种隔离级别会导致“不可重复读”。这是Oracle默认的隔离级别

      假设事务1读取了一条记录(select user_name from user where user_id = 1),得到user_name = '456',事务1暂时没提交。事务2更新了一条记录(update user set user_name = '123' where user_id = 1),事务2提交。此时事务1再次select user_name from user where user_id = 1得到了user_name = '123',这样就导致事务1在读取同一行数据却得到不同的user_name。这就是所谓的不可以重复读

    repeatable read 可重复读

       事务A和事务B,事务A提交之后的数据,事务B读取不到。事务B是可重复读取数据的,这种隔离级别高于读已提交,意思是:对方提交之后的数据我还是读取不到。这种隔离级别可以避免“不可重复读取”,达到可重复读取,但是会导致“幻读”。这是MySQL默认的隔离级别

      这个跟不可重复读相反,当事务1查询到user_name='456'时,事务2将user_name更新成'123'并提交,事务1再次查询还是会发现user_name='456',这样保证了可重复读。幻读的话就是当事务2插入一条新的数据id为2并提交,事务1由于可重复读的性质,只能在表中查到id为1的数据,如果此时事务1插入id为2的数据则会产生错误,因为此时表中已经有了id为2的数据,但是事务1只看到了id为1的数据。

    serializable 串行化

      穿行排队等待

  • 相关阅读:
    scrapy.FormRequest与FormRequest.from_response 的区别
    可迭代对象和生成器
    css选择器
    xlwt写入excel时候的合并单元格
    html form提交的几种方式
    Python decorator 拦截器
    python manage.py makemigrations & migrate
    asianux4.5 环境, 本地yum源,局域网yum源的配置
    mysql基本操作
    sqlite-mysql migrate
  • 原文地址:https://www.cnblogs.com/jiasq/p/8589923.html
Copyright © 2020-2023  润新知