MySQL数据库之TCL——事物语言

前言

        小伙伴们早上好,下午好,晚上好呀,今天继续给大家分享最后一个语言TCL啦,没看过前面两个的先看前面两个哦,更容易理解呢。

MySQL之DQL——查询语言_秋雨绵绵-CSDN博客_dql

MySQL基础之DDL&DML_秋雨绵绵-CSDN博客


目录

一、TCL的定义:

二、MySQL中的存储引擎

 三、事物的相关操作

 3.1事物的ACID属性

 3.2、事物的使用步骤

 3.3、  事物的分类

 3.4、事物的隔离级别

 3.5、如何在MySQL中设置隔离级别


一、TCL的定义:

        TCL(Data Control Language):事务由单独单元的一个或多个SQL语句组成,在这
个单元中,每个MySQL语句是相互依赖的。

        而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。

二、MySQL中的存储引擎

        含义:在mysql中的数据用各种不同的技术存储在文件(或内存)中。

        如何查看你自己的MySQL版本的引擎呢?

        通过show engines;来查看mysql支持的存储引擎

        在mysql中用的最多的存储引擎有:innodb,myisam ,memory 等。其中innodb支持事务,而myisam、memory等不支持事务

        面试题:myisam与innoDB的区别?

 三、事物的相关操作

        3.1事物的ACID属性

    1. 原子性(Atomicity)
        原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
    2. 一致性(Consistency)
        事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
    3. 隔离性(Isolation)
        事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰
    4. 持久性(Durability
        持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响

        3.2、事物的使用步骤

    1、开启事务
    2、编写事务的一组逻辑操作单元(多条sql语句)
    3、提交事务或回滚事务

      3.3、  事物的分类

    隐式事物
        没有明显的开启和结束事务的标志
            insert、update、delete语句本身就是一个事务
    显式事务
        1. 取消自动提交事务:set autocommit=0;
        2. 开启事务:start transaction;
        3. 提交或回滚事务:
            - commit;
            - rollback;

 3.4、事物的隔离级别

        为什么我们要了解事物的隔离级别?

        首先就应该了解事物的并发问题是如何产生的?

        当多个事务同时操作同一个数据库的相同数据时就会产生事物的并发问题,就比如我在使用我的游戏账户,进行游戏,另一个人也能进入我的同一个游戏账户进行游戏的话,那么这个是不是会存在问题呢?数据究竟是谁的呢?

        其次,事物的并发问题有以下几种

    - 脏读:一个事务读取到了另外一个事务未提交的数据
    - 不可重复读:同一个事务中,多次读取到的数据不一致
    - 幻读:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有更新的数据

        那么什么是数据库的隔离级别呢?

        定义:一个事务与其他事务隔离的程度称为隔离级别. 数据库规定了多种事务隔离级别, 不同隔离级别对应不同的干扰程度, 隔离级别越高, 数据一致性就越好, 但并发性越弱

        数据库事物的隔离性:数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避免各种并发问题。

                                                                四种隔离级别        

         注意:隔离级别从小到大安全性越来越高,但是效率越来越低

数据库对于隔离级别的支持程度:

Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE。

Oracle 默认的事务隔离级别为: READ COMMITED

Mysql 支持 4 种事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ

 3.5、如何在MySQL中设置隔离级别

        每启动一个 mysql 程序, 就会获得一个单独的数据库连接. 每个数据库连接都有一个全局变量 @@tx_isolation, 表示当前的事务隔离级别.
    查看当前的隔离级别: SELECT @@tx_isolation;
    设置当前 mySQL 连接的隔离级别
        set session transaction isolation level read committed
    设置数据库系统的全局的隔离级别
        set global transaction isolation level read committed;

 

写在最后

        MySQL基础内容就跟大家分享到这里,感谢大家的阅读,文中如有不足之处,欢迎各位评论区友好交流,互相学习哦

(为你比心动图表情包  小黄脸表情包)_心动图_小黄脸表情

周五应该有周五的样子有什么事下周说

  • 13
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空山新雨后~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值