MySQL-7事物与锁的关系

2021-08-24  本文已影响0人  安晓生

大家好,我是安小生,继续数据库的总结:MySQL的事物,
那么什么是事物呢?

事务是MySQL区别于NoSQL的重要特征,是保证关系型数据库数据一致性的关键技术。事务可看作是对数 据库操作的基本执行单元,可能包含一个或者多个SQL语句。这些语句在执行时,要么都执行,要么都不执 行。

事物的应用场景有那些呢?

事物的基本语法

查询事物提交语句
show variables like '%commit%';

事物的隔离级别

事物的生命周期

1 原子性的实现

begin;
  select * from user where id =1;.
commit;
rollback
事务日志文件 =》 重做日志 redo log =>ib_logfile0  重新执行
回滚日志 undo log =>ibdata       回滚数据
mysql对于事务的执行 => 日志先行凡是sql执行都会执行事务
日志优先级大于实际操作的数据的 所有执行的sql都会先执行日志,在写数据

事务重做日志与回滚日志

-- 查看事务日志 :
show engine innodb status\G;

-- 查看日志文件设置状态
show variables like 'innodb_%';

innodb_log_files_in_group:DB中设置几组事务日志,默认是2; innodb_log_group_home_dir:事务日志存放 目录,不设置,ib_logfile0...存在在数据文件目录下 Innodb存储引擎可将所有数据存放于ibdata*的共享表空 间,也可将每张表存放于独立的.ibd文件的独立表空间

注意:在MySQL中对于数据来说, 最为重要的是日志文件
redo log => ib_logfile0
undo log => ibdata

知识点
在mysql中事务执行commit提交了之后,但是服务器挂了,数据还没有写入磁盘,在mysql重启服务之后会 重新执行这个重做日志写入数据。

知识点:
系统发生崩溃、数据库进程直接被杀死后,当用户再次启动数据库进程时, 还能够立刻通过查询回滚日志将之前未完成的事务进行回滚,这也就需要回滚 日志必须先于数据持久化到 磁盘上,是我们需要先写日志后写数据库的主要原因。

重做日志与回滚日志

到现在为止我们了解了 MySQL 中的两种日志,回滚日志(undo log)和重做日志(redo log);在数据库 系统中,事务的原子性和持久性是由事务日志 (transaction log)保证的,在实现时也就是上面提到的两种 日志,前者用于对事务的影响进行撤销,后者在错误处理时对已经提交的事务进行重做,它们能保 证两 点:

上一篇下一篇

猜你喜欢

热点阅读