MySQL学习笔记—事物,这一章有点懵

mysql事物

本课目录
1.事物概述
2.事物的隔离级别及使用
3.锁的相关知识

MySQL事物主要用于处理操作量大,复杂度高的数据
事务处理可以来维护数据库的完整性,保证成批量SQL语句要么全部执行,要么全部不执行。
事务用来管理insert、update、delete语句
事务是必须满足4个条件(ACID)

Atomicity 原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

Consistency 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

Isolation隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括未提交读、提交读、可重复读、可串行化。

Durability持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

BEGIN 显式地开启一个事务
COMMIT 提交事务
ROLLBACK 回滚事务
SAVEPOINT identifier 创建保存点
RELEASE SAVEPOINT identifier 删除保存点
ROLLBACK TO identifier 把事务回滚到标记点
SET TRANSACTION 设置隔离级别

脏读:一个事务正在访问数据,并且对数据进行了修改,而这种修改还没提交到数据库中,这时另外一个事务也访问这个数据库然后使用了这个数据。

不可重复读:
是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务访问并修改了这条数据
在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的
这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读

幻读;
第一个事务对一个表中的数据进行了修改,这种修改设计到表中的全部数据行。
同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据
那么,就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好像发生了幻觉一样,幻读是数据行记录变多了或者少了

提交读:事务成功提交后才可以被查询到

重复读,同一个事务内多次查询却返回了不同的数据值

可串行化
在读操作是添加共享锁
导致大量超时现象和锁竞争
这是花费最高代价但是最可靠的事务隔离级别
事务被处理为顺序执行
防止脏读,不可重复读,幻读

隔离级别总结
事务隔离接为读提交时,写数据只会锁住相应的行
事务隔离级别为可重复读时,通过next—key锁和表锁防止幻读
事务隔离级别为串行化时,读写数据都会锁住整张表

锁的相关知识
数据库锁定机制,就是数据库为了保证数据一致性,而使各种共享资源在被并发访问变得有序而设计得一种规则。Mysql数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎锁针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。

表级锁定(table-level)
是mysql各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁各释放锁的速度很快
使用表级锁定的主要是MyISAM,MEMORY,CSV等一些非事务性存储引擎

行级锁定(row-level)
最大的特点是锁定对象的颗粒度很小,也是目前各大数据管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能大的并发处理能力而提高一些需要高并发应用系统的整体性能。
使用行级锁定的主要是InnoDB存储引擎。

页级锁定(page-level)
页级锁定是比较独特的一种,在其他数据库管理软件中也并不是太常见。页级锁定的特点是锁定颗粒度介于行级锁定与表级锁定之间,所以获取锁定所需要的资源开销,以及所能提供的并发处理能力也同样介于二者之间。
使用页级锁定的主要是berkeleyDB存储引擎

表级锁
开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低

行级锁
开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高

页级锁
开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值