日志问题
server产生的binlog,用来进行数据复制
innodb产生的undo log,redo log,用来时间事务的acid
日志体系不是用来看的,是运行必要的
binlog归档日志
undo log
redo log
redo log存储在4个1GB的文件中,并且循环写入
3一条语句是如何更新的
重点流程是内存中想写undo log,再改内存数据,再改redo log
,最后写binlog,但上面的流程一旦遇到断电,就崴泥了
redolog刷盘
binlog刷盘
持久化
为啥redolog一定在binlog之前
4平衡功能与性能—锁
全局锁
表锁
元数据锁
行锁
5 事务
6隔离级别
读未提交
读提交
可重复读
mysql默认级别
串行化
7 mvcc
快照读
当前读
隔离问题
幻读是啥意思呢,就是虽然我锁住了当前数据,因为是行锁,但不妨碍我往里插数据,这边插入数据后,那边前后一查,发现数据不一样了,以前是5条,现在是6条,这就是幻读
如何解决幻读问题
9 间隙锁
规则复杂,挺不优雅
10 垃圾回收
什么是刷脏页
为啥要刷脏页
内存的脏页太多,内存不足
redolog文件写满了,需要推进check point
系统空闲,提前刷脏,预防上述情况
mysql关闭前,保存数据
11如何避免被迫刷脏
服务器IO配置
配置合理的脏页比例上限
顺便刷脏策略
13如何解决死锁问题
长事务的危害
主要危害:锁无法释放,尤其行级锁,导致其他事物等待,也容易产生死锁。
MDL锁hold住大量事务,造成mysql崩溃
行级锁
解决办法
容易产生死锁
解决办法
13 元数据锁MDL
解决办法
如何查看影响性能的锁
业务上的建议