`

数据库事务的学习笔记

 
阅读更多

对事务本身的理解

1.事务是一组原子性的SQL查询,对于事务内的查询要么完全成功,要么完全失败。

2.mysql默认的事务是自动提交的,即autocommit=true,也就是说一个SQL查询即是一个事务。

3.对于多条语句,通过start transaction;和commit(rollback)进行配合,将多条语句包装为一个更大的事务单元。

4.如果设置autocommit=false,那么语句将不会被提交,直到使用rollback,或者commit。

5.事务的特性ACID(原子性,一致性,隔离性,持久性)

   原子性:要求一个事务不可分割,里面的语句要么全部成功,要么全部失败,不会看到中间状态。

   一致性:个人感觉是数据库数据本身和数据之间的约束关系在事务前后是不会变的。

   隔离性:即一个事务在提交之前,他对记录的修改对其他事务不可见。为了防止过多的锁,MYSQL通过MVCC实现。

   持久性:即事务对记录的修改,在提交时候会被永久的保存到磁盘上。MYSQL为了提高事务效率,存储引擎在修改数据时通常只修改内存数据,同时将修改操作记录到“事务日志”中,再异步的刷回磁盘。

 

对事务隔离级别的理解

Read Uncommited 

未提交读,数据库级别的最低层次,事务会读到其他事务未提交的数据。这种事务级别只保证磁盘不出问题。产生的问题即脏读。

如图:



 

 左侧事务中对age=4的记录进行了更新但是未提交,右侧事务使用uncommited read 读到了未提交的记录,使用其他事务级别则读到原值。

 

Read Committed

与read uncommitted不同,这个级别下的事务读不到其他事务未提交的记录.。这个在上一张图中就有体现。虽然Read Committed能够保证事务读到别人提交的记录,但是仍然存在在同一个事务中,对同一条记录读两次,值发生变化的情况。即两次select中有其他事务对该记录有更新。这种不一致的情况,成为“不可重复读”

如图:

 

 

在read committed下右边session启动一个事务,第一次查询age=4的记录值为xiaotong,然后左边对age=4的记录更新为myname,右边事务再查询时,发现记录已经变名字了。这就是在一个事务中对一条记录反复读取出现不一致情况,称之为“不可重复读”

 

Repeatable Read(mysql默认级别)

可重复读。针对read committed出现的情况,repeatable read 就是一种在事务内对统一记录反复查询不会出现不一致的事务级别,

如图:



 

 如果设置右边事务级别为repeatable read,那么无论在事务过程中,其他事务如何更改记录值,右边事务对统一记录的查询结果始终一致。

 

Serializable(序列)

隔离级别最高的一种事务级别,要求不同事务之间串行执行,这样能够保证事务之间没有任何干扰,但是这样查询的效率很低,吞吐量低,需谨慎使用。序列的级别下,是不会存在幻读的,即在一个事务中,对一批事务进行更新,而在令一个事务中插入了一条新记录满足条件。这样更新事务就会发现更新操作在提交之后仍有满足条件而未更新的,称之为“幻读”。

 

事务相关常用sql

查询当前session的事务隔离级别

select @@tx_isolation

 

查看全局事务隔离级别

select @@global.tx_isolation

 

这是session的事务级别

set session(global)  transaction isolation level read uncommitted

(read committed,repeatable read,serializable)

 

 
 

 

 

  • 大小: 40.7 KB
  • 大小: 23.6 KB
  • 大小: 22 KB
  • 大小: 32.6 KB
分享到:
评论
1 楼 haithink 2014-09-27  
不错,有图有真相!

相关推荐

    数据库学习全程笔记及学习样例

    本文将深入探讨“数据库学习全程笔记及学习样例”中的关键知识点,帮助你从入门到精通,掌握SQL语言和MSSQL Server数据库的使用。 首先,我们从基础开始。数据库创建是学习的起点,这包括安装MSSQL Server,配置...

    SQL 数据库语言学习笔记

    本篇“SQL数据库语言学习笔记”将深入探讨SQL的基本概念、语法和常用操作,帮助你掌握这个强大的工具。 一、SQL简介 SQL起源于1970年代,由IBM的研究员开发,其设计目标是为了解决日益复杂的数据查询和管理问题。...

    各种主流数据库学习笔记

    《韩顺平老师oracle视频教程听课笔记.pdf》将带你深入Oracle的世界,学习其高级特性,如PL/SQL编程、分区表、物质化视图、数据库链接、闪回技术、数据守护和RAC(实时应用集群)等。Oracle数据库的复杂性和灵活性使...

    数据库系统原理学习笔记

    这份学习笔记涵盖了数据库系统的基础概念、设计原则以及SQL语言的应用。以下是笔记中的关键知识点: 1. **数据库概述**:数据库是一种有组织地存储和管理数据的系统,提供了数据的结构化存储、数据操作和数据控制等...

    PCTP个人学习笔记—TiDB数据库事务设计

    PCTP个人学习笔记—TiDB数据库事务设计

    数据库学习笔记.docx

    【数据库学习笔记】 数据库是用于存储和管理数据的仓库,其优点包括存储大量数据、方便检索、保持数据一致性与完整性、安全共享以及通过数据分析产生新信息。数据库的发展经历了从无数据库到磁盘文件存储,再到层次...

    oracle 数据库学习笔记(全)

    Oracle 数据库学习笔记(全) Oracle 数据库学习笔记是学习 Oracle 数据库的重要笔记,涵盖了 Oracle 数据库的基本概念、数据类型、表的创建和管理、用户管理、权限管理、数据操作等方面的知识点。 一、Oracle ...

    oracle 数据库 SQL学习笔记

    Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。

    2009数据库系统工程师学习笔记

    2009年的数据库系统工程师学习笔记可能涵盖了当时该领域的核心概念和技术。以下是对这些笔记可能包含的一些关键知识点的详细说明: 1. **数据库基础理论**: - 数据模型:包括关系模型(如SQL)、网络模型、层次...

    关于数据库的学习笔记,mysql数据库教程.zip

    这份“关于数据库的学习笔记,mysql数据库教程”包含了丰富的知识内容,旨在帮助初学者和进阶者深入理解MySQL的各个方面。 首先,MySQL的基础知识是学习的重点。数据库是用于存储和管理数据的系统,而MySQL则是实现...

    数据库的课程学习笔记

    这篇学习笔记将深入探讨数据库的基本概念、设计原则以及常见操作。 首先,我们要了解什么是数据库。数据库是一个有组织的数据集合,它提供了数据的存储、查询、更新和管理等功能。常见的数据库类型包括关系型数据库...

    JavaEE5学习笔记01-JTA和数据库事务

    ### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...

    数据库学习笔记.zip

    本学习笔记将深入探讨MySQL的基本概念、安装配置、数据类型、SQL语言、表的操作、索引、视图、存储过程、触发器、事务处理以及备份与恢复等多个方面。 一、基本概念 MySQL是一款基于SQL(Structured Query Language...

    Mysql数据库优化学习笔记

    MySQL数据库优化学习笔记 在数据库管理系统中,MySQL是一款广泛应用的关系型数据库,因其开源、免费、高效的特点,被广泛用于各种规模的项目。然而,随着数据量的增长和业务复杂度的提高,性能优化变得至关重要。本...

    (学习笔记)软考-数据库系统工程师.zip

    学习笔记中可能涵盖了数据库的备份与恢复策略,如全备份、增量备份和差异备份,以及事务处理和并发控制。数据库安全涉及到权限管理、访问控制和审计机制,确保数据的完整性和安全性。 【数据库性能监控与调优】 这...

    Oracle SQLServer数据库 学习笔记

    这篇学习笔记将深入探讨这两个系统的概念、特性和应用。 一、Oracle数据库系统 Oracle数据库是由甲骨文公司开发的一款强大、高性能的数据库解决方案。其主要特点包括: 1. **分布式数据库**:Oracle支持多节点的...

    数据库的学习笔记.docx

    本篇学习笔记主要以PostgreSQL数据库为例,探讨数据库的创建、查询、表的建立及管理等基础知识。 首先,创建数据库是使用`createdb`命令,如在Linux环境下输入`createdb qji`,这会创建一个名为`qji`的新数据库。...

    记录学习MySQL数据库的学习笔记和各种资料.zip

    这份压缩包文件"记录学习MySQL数据库的学习笔记和各种资料.zip"显然包含了一系列与MySQL相关的学习资源,可能是笔记、教程、实战案例等,对于初学者或者希望深入理解MySQL的开发者来说非常有价值。 MySQL的核心知识...

    分布式事务学习笔记

    ### 分布式事务学习笔记知识点详解 #### 一、什么是分布式事务 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说,一次大的操作由不同...

Global site tag (gtag.js) - Google Analytics