TCL (Transaction Control Language)

本文主要探讨MySQL的存储引擎,如innodb、myisam和memory,并介绍事务的概念,同时涉及视图、SQL进阶内容,包括变量、存储过程与函数的使用,以及流程控制结构的应用。
摘要由CSDN通过智能技术生成

存储引擎

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

查看mysql支持的存储引擎:show engines;

mysql中使用最多的存储引擎:innodb(支持事务)、myisam(不支持事务)、memory(不支持事务)。

事务

概述:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行,要么都不执行
事务的ACID特点

1. 原子性 (Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败

2. 一致性 (Consistency):保证数据的状态操作前和操作后保持一致

3. 隔离性 (Isolation):多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰

4. 持久性 (Durability):当事务提交或回滚后,数据库会持久化的保存数据
 

分类 隐式事务

概述:没有明显的开启和结束事务的标志,本身就是事务自动提交

insert、update、delete语句本身就是一个事务

显式事务

概述:具有明显的开启和结束事务的标志

1. 取消自动提交事务:set autocommit=0; (默认开启事务)
2. 开启事务:start transaction; (可以省略)
    事务中的sql语句 (select、insert、update、delete)
    设置回滚点:savepoint 回滚点名(自定义);
3. 提交或回滚事务:
    提交- commit;
    回滚- rollback;
    回滚到指定的地方:rollback to 回滚点名
 

隔离级别 事务并发问题是如何产生的?        - 当多个事务同时操作同一个数据库的相同数据时
事务并发问题

脏读:一个事务读取到了另外一个事务未提交的数据,读到的是其他事务"更新"的数据

不可重复读:同一个事务中,多次读取到的数据不一致

幻读:第一个事务读取到了第二个更新事务没有更新的数据,读到的是其他事务"插入"的数据

处理事务并发问题,设置事务隔离级别
  - READ UNCOMMITTED:出现脏读、不可重复读、幻读
  - READ COMMITTED:可以避免脏读 (oracle默认)
  - REPEATABLE READ:可以避免脏读、不可重复读 (mysql默认)
  - SERIALIZABLE(串行化):可以避免脏读、不可重复读和幻读
 

设置当前MySQL隔离级别:set session|global  transaction isolation level 隔离级别名;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值