zoukankan      html  css  js  c++  java
  • MySQL: Mysql 事务隔离级别

    数据并发访问(了解)

    一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库.

    数据库的相同数据可能被 多个事务同时访问,如果不采取隔离措施,就会导致各种问题, 破坏数据的完整性

    并发访问会产生的问题

    事务在操作时的理想状态: 所有的事务之间保持隔离,互不影响。

    因为并发操作,多个用户同时访问同一个数据,可能引发并发访问的问题

    并发访问的问题 说明
    脏读 一个事务读取到了另一个事务中尚未提交的数据
    不可重复读 一个事务中两次读取的数据内容不一致, 要求的是在一个事务中多次读取时数据是一 致的. 这是进行 update 操作时引发的问题
    幻读

    一个事务中,某一次的 select 操作得到的结果所表征的数据状态, 无法支撑后续的业务 操作.

    查询得到的数据状态不准确,导致幻读.

    四种隔离级别

    通过设置不同的隔离级别,可以防止对应的并发问题.

    MySQL数据库有四种隔离级别,上面的级别最低,下面的级别最高。

      ✔ 会出现问题

      ✘ 不会出现问题

    级 别 名字 隔离级别 脏 读 不可重复 读 幻 读 数据库的默认隔离级别
    1 读未提交 read uncommitted  
    2 读已提交 read committed Oracle和SQLServer
    3 可重复读 repeatable read MySql
    4 串行化 serializable  

     注意:

      <1>隔离级别 从小到大,安全性是越来越高的,但是效率是越来越低的

      <2>应根据不同的情况,选择对应的隔离级别

    隔离级别相关命令

    1) 查看隔离级别

    select @@tx_isolation;

     2) 设置事务隔离级别,需要退出 MySQL 再重新登录才能看到隔离级别的变化

    set global transaction isolation level 级别名称;
    read uncommitted 读未提交
    read committed 读已提交
    repeatable read 可重复读
    serializable 串行化

    例如: 修改隔离级别为 读未提交

    set global transaction isolation level read uncommitted;
  • 相关阅读:
    纠结我一上午的asp.net操作mysql问题
    C#术语【转自MSDN】
    asp.net新手必知必会——我们为什么要用asp.net
    图片在浏览器中底部对齐———解决方法之一
    asp.net做的网站比asp做的站慢?
    我是一个可悲的程序员
    今天离开职场去过自己的潇洒人生
    asp.net应用程序重新启动
    asp.net分页解决方法
    80. 删除有序数组中的重复项 II
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/15008814.html
Copyright © 2011-2022 走看看