`

事务一:数据库基础知识

 
阅读更多

事务

  • 一:事务概述
数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
      1) 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
       2)当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

 

事务的四个特性:ACID

1.原子性 aotmic 

 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

2.一致性 consistent

事务在完成时,必须使所有的数据都保持一致状态。

3.隔离性 isolaton

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状 态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据

4.持久性 duration

事务完成后,它对系统的影响是永久性的

 

  • 二:隔离级别

1.隔离级别概述

事务隔离定义了数据库系统中一个操作产生的影响什么时候以哪种方式可以对其他并发操作可见。

即:主要影响的是并发事务之间的可见性

   (1)未提交读Read Uncommitted

    最低级别的隔离级别:意思就是即使一个更新语句没有提交,但是别的事务可以读到这个改变.这是很不安全的,可能会出现脏读。

    (2)读提交 Read Committed

直译就是"读提交",意思就是语句提交以后即执行了COMMIT以后别的事务就能读到这个改变. 可能会出现不可重复读

    (3)可重复读 Repeatable Read

直译就是"可以重复读",这是说在同一个事务里面先后执行同一个查询语句的时候,得到的结果是一样的.可能会出现幻读。

   (4)序列化 Serializable

直译就是"序列化",在这个级别下,所有的事务的完整性都被保留,意味着所有的事务都可以被序列化的执行,只有当两个事务之间没有任务冲突时,才能并发的执行。
 

2.隔离级别修改SQL

     (1) 查询mysql数据库系统级别的事务隔离级别

select @@global.tx_isolation

 

   (2)InnoDB会话级别的事务隔离级别

 SELECT @@tx_isolation

 

(3)修改数据库事务隔离级别

SQL SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE} 

 

3.隔离级别VS读现象(Read phenomena)

举例说明

在表user 中有下列数据

mysql> select * from user;
+----+----------+------+
| id | username | age  |
+----+----------+------+
|  1 | juzy     |   20 |
+----+----------+------+
1 row in set (0.00 sec)

 

1.脏读  dirty reads 

当一个事务允许读取另外一个事务修改但未提交的数据时,就可能发生脏读(dirty reads)。

2.不可重复读(non-repeatable reads)

在一次事务中,当一行数据获取两遍得到不同的结果表示发生了“不可重复读(non-repeatable read)”.

 

3.幻读 (phantorm read )

 在事务执行过程中,当两个完全相同的查询语句执行得到不同的结果集。这种现象称为“幻影读(phantom read)”

离级别        脏读(Dirty Read)         不可重复读(NonRepeateable Read)  幻读(Phantom Read)
未提交读(Read uncommitted) 可能 可能 可能
已提交读(Read committed) 不可能 可能 可能
可重复读(Repeatable read) 不可能 不可能 可能
可序列化(Serializable) 不可能 不可能 不可能
  • 三:隔离级别VS锁 
隔离级别 写入锁 读取锁 范围锁
未提交读      
已提交读 YES    
可重复读 YES YES  
可序列化 YES YES YES

参考link: 

[1]http://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1

[1]http://zh.wikipedia.org/wiki/%E4%BA%8B%E5%8B%99%E9%9A%94%E9%9B%A2

[2]https://www.byvoid.com/blog/rdbms-isolation-lock-concurrency

 

分享到:
评论

相关推荐

    知识领域: 数据库管理 技术关键词: SQL、NoSQL、数据库优化、数据建模 内容关键词: 数据库设计、查询优化、事务处理 用

    知识领域: 数据库管理 技术关键词: SQL、NoSQL、数据库优化、数据建模 内容关键词: 数据库设计、查询...资源描述: Coursera 上的《数据库管理原理》课程由知名大学教授授课,涵盖了数据库管理的基础知识和实践应用。

    三级数据-库技术:数据库基本知识

    4.1.3 操作系统的硬件环境知识 4.1.4 中断相关知识 第5章 数据库技术基础 5.1.1 数据库基本概念 5.1.2 数据库系统的组成 第6章 关系数据库基础 6.1.1 关系数据库系统概述 第7章 关系数据库分析与设计 7.1.1...

    计算机病毒与防护:数据库基础.ppt

    单击此处添加标题 * * 目录页 数据库基础 数据库系统基本概念 数据库:长期储存在计算机内的、有组织的、可共享的数据集合 DBMS(DataBase Management System):一种操纵和管理数据库的大型软件,用于建立、使用和...

    学习Spring必学的Java基础知识(含数据库事务基础知识)

    学习Spring必学的Java基础知识(含数据库事务基础知识)

    数据库原理与应用课程设计

    数据库基础知识:介绍数据库的基本概念、数据模型和关系型数据库的原理,包括实体-关系模型、关系代数和SQL等。 数据库设计:讲解数据库设计的过程和方法,包括概念设计、逻辑设计和物理设计,以及常用的数据库设计...

    数据库知识点整理.md

    非常详细的数据库知识点整理,主要涵盖:数据库基础知识、DDL、DML、DQL、DCL、事务讲解、Mysql、JDBC、Java操作Mysql、数据库连接池、Redis型非关系数据库、Java使用Jedis操作Redis数据库

    数据库基础知识 ppt

    1 数据库基础ppt 2 数据库设计ppt 3 数据库的实现 4 数据库表管理 5 数据库查询1 6 数据库查询2 7 T——sql编程 8 高级查询 9 事务处理 10 存储过程 11 触发器

    Mysql数据库基础知识

    涵盖了MySQL数据库的基本概念、体系结构、数据类型、SQL语言基础、索引优化、存储过程与函数、触发器、视图、事务管理、安全性以及备份与恢复等重要知识点。它旨在为学习者提供一个全面而精炼的MySQL学习指南。适用...

    mysql面试题史上最强汇总:基础知识+性能优化+备份与恢复+ 数据库设计+数据库管理+高可用性与容灾+安全性+ 框架集成等

    1. 基础知识:包括 MySQL 数据库的基本概念、SQL 命令、数据类型、索引、视图、存储过程等。 2. 性能优化:包括 SQL 查询优化、索引优化、数据表分区、缓存机制等。 3. 备份与恢复:包括数据备份和恢复的方法、备份...

    数据库基础知识总汇

    数据库的基本知识,包括ER模型图,关系的转化,数据库事务处理等等,帮助初学数据库的人快速了解!

    数据库系统概论(基础篇)教学大纲.docx

    通过数据库系统概论(基础篇)的学习,学员可以系统地掌握数据库系统的基本原理,能熟练使用SQL语言在某一个数据库管理系统上进行数据库检索和操作,掌握数据库安全性和完整性的基本概念和基本方法。并能够在某一个...

    jfsky.com-Oracle数据库基础知识

    2.1.2 事务管理 23 2.1.3 数据库管理员(DBA) 24 2.1.4 ORACLE的四种状态 25 2.2 SQL*Plus方式的ORACLE数据库启动和关闭 26 2.2.1 启动数据库 26 2.2.2 关闭数据库 26 2.3 svrmgrl方式的ORACLE数据库启动和关闭 28 ...

    三级数据库技术基础知识考点

    一章 基 础 知 识 二章 数据结构与算法 三章 操作系统 四章 数据库技术 五章 关系数据库系统 六章 关系数据库标准语言SQL ...九章 事务管理与数据库安全性 十章 新一代数据库应用开发工具 十一章 数据库技术的发展

    20 个mysql面试题(含答案)

    都是一些常见的 mysql 面试题,包括数据库基础知识、索引、事务等方面 都是一些常见的 mysql 面试题,包括数据库基础知识、索引、事务等方面 都是一些常见的 mysql 面试题,包括数据库基础知识、索引、事务等方面 都...

    MySQL数据库实用教程电子资源ppt,课后习题答案

    第一篇为MySQL数据库基础,内容包含:数据库基础、MySQL语言、数据定义、数据操纵、数据查询、视图和索引、MySQL编程技术、MySQL安全管理、备份和恢复、事务管理、PHP和MySQL教学管理系统开发。第二篇为MySQL实验,...

    MySQL DBA 数据库工程师实战经验

    1. **数据库基础知识**:介绍MySQL数据库的基本概念,包括数据库设计原则、数据类型、表结构设计等。 2. **SQL语言应用**:深入讲解SQL语言的高级应用,包括复杂查询、事务处理、存储过程、触发器等。 3. **数据库...

    Java后端面试手册-Java基础知识

    数据库和SQL:涵盖数据库基础知识、SQL语句的编写和优化、数据库事务等相关内容。 Web开发:包括常用的Web开发框架(如Spring、Spring Boot)、RESTful API设计、HTTP协议等。 分布式系统和微服务:介绍分布式系统...

    数据库oracle教案.rar

    oracle基础教案包括:数据库基本知识、数据库安装与配置、数据查询语言、多表查询、数据库函数、数据库操纵语言、数据库控制语言、数据库定义语言、数据库事务、视图、序列、索引、触发器、游标、函数、存储过程、...

    免费下载非常详细的 Mysql 面试知识点

    数据库基础知识:了解数据库的概念、关系型数据库的特点以及SQL语言的基本语法。 2. 数据库设计:熟悉数据库设计原则和范式,能够设计出合理的数据库结构和关系模型。 3. SQL查询优化:了解索引的概念和使用...

Global site tag (gtag.js) - Google Analytics