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

    1、概述

    事务就是对数据库数据进行更改(包括insert、update、delete等)操作的一个执行单元,通常有一条或多条更改语句组成。在同一个事务中的更改操作要么同时成功,要么同时失败。


    事务具有4个属性:原子性、一致性、隔离性、持久性。即 ACID 特性。

    原子性(atomicity):同一个事务中的更改操作要么同时成功,要么同时失败。

    一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。

    隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的。

    持久性(durability):指一个事务一旦提交,对数据库中数据的改变就应该是永久性的。


    下面我们详细介绍一下隔离性。

    2、四个隔离级别

    MySQL 中有四个隔离级别:

    READ UNCOMMITTED 读未提交,一个事务内部可以读到其他事务未提交的更改,可能出现“脏读”
    READ COMMITTED 读已提交,一个事务内部可以读到其他事务已提交的更改,这个比较常用
    REPEATABLE READ 可重复读,InnoDB引擎默认使用的隔离级别。一个事务内部不能读到其他事务做的任何更改,可能出现“幻读”
    SERIALIZABLE 串行化,不支持并发

    3、修改事务隔离级别

    MySQL 的 InnoDB 引擎默认使用的是 REPEATABLE READ 隔离级别。

    但是有时我们需要修改成 READ COMMITTED 级别。

    此时,我们可以只修改当前连接的隔离级别,也可以修改全局的隔离级别。

    修改当前连接的隔离级别:

    SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

    修改全局的隔离级别:

    首先,在控制台临时设置

    SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

    为了 mysql 重启时也可以使用这个隔离级别,需要在 my.cnf(windows中是my.ini)中的 mysqld 段加入 transaction-isolation 配置

    官方文档

     
     
     
  • 相关阅读:
    JSP课程设计:宿舍管理系统(附源码)
    【博客模板页】从此不再为写博客头疼 (ノ ̄▽ ̄)~(ノ ̄▽ ̄)~(ノ ̄▽ ̄)~
    个人自定义的快捷键
    碎知识点收藏栏 [逆序时间排版]
    JavaSE (46)
    《Java8实战》05
    Python04
    【BUG11】
    三、如何科学地做到:算法竞赛从入门到放弃/算法竞赛从了解入坑到快速放弃指南?
    二、如何科学地在面试时踩雷?
  • 原文地址:https://www.cnblogs.com/xugf/p/8782141.html
Copyright © 2011-2022 走看看