目录
文章目录
一、更新优化
1、数据库并发下,会产生的性能问题
2、MySQL系统的运行日志(undo log\redo log\binlog)
redo log:
在内存中的数据更新后会写redo log,“数据会在未来持久化到硬盘”,redo log中数据持久化到硬盘后内存和redo log数据会对应删除。
redo log就想将ppt过程中出现的错误,记录在“小本本”上,继续讲ppt,未来在按照“小本本”内容修改。
绿色是空白文件,黄色是有用文件。
3、数据更新流程
3.1.更新流程
3.2.刷盘问题
刷盘问题:redo log和binlog之后断电导致没有写入磁盘。
0:每秒将redo log数据刷到4个环形文件中,断电会导致丢失1秒数据。
1:每一个事务commit,刷一次盘
0:mysql server层自动控制bin log 刷盘
redo log 是事务提交与否的中界点,redo log没写前,数据就是不安全的。
总结:redo log刷盘后数据就不会丢失,所有不能撤销的操作要在redo log之后做,比如binlog的传送,先写redo log保证数据撤销不了,再传送binlog进行主从复制
4、锁
全局锁应用比如,税务局查账,所有数据出于只读
注:表锁的是数据,元数据锁 锁的是表结构。
5、事务
5.1事务特性
- 原子性:事务要么执行成功,要么执行失败。
- 一致性:指事务使数据库从一种一致性状态转为另外一个一致性状态,不存在矛盾。比如转账,不存在一方扣了,另一方没有加的状态。
- 隔离性:事务和事务相互隔离。
- 持久性:事务一旦执行成功,对数据库的修改是永久的。