1.脏页和干净页的定义是什么?
当磁盘的内存的数据不一致的时候,内存叫脏页,磁盘叫干净页
2.引发数据库flush脏页的四种典型场景各是什么?对mysql性能的影响各是怎样的?
1)redolog满了,需要把redolog的checkpoint向前退,腾出redolog的空间
然后需要把移动ckp的脏页写入磁盘
2)内存不足了,需要新的内存页,需要把脏页写入磁盘
3)mysql有一点空闲的时候就要把脏页写入磁盘
4)mysql关闭的时候会把所有的脏页写入磁盘
第一种情况我们是需要避免的,redolog写满了,这个时候需要腾出redolog的空间
mysql就不能进行更新操作了
第二种情况是常态,内存不够了,腾出内存,mysql使用bufferpool管理内存
bufferpool有三种状态(未使用,使用脏页,使用干净页)
innoDB的策略是尽量的使用内存,当要读入的数据也没有在内存的时候,会从磁盘中读取到内存中,
可以下一次复用,直接读取.读取到内存中的时候,会淘汰最近未使用的数据页
如果读入的数据在内存中是脏页的话,需要先写入磁盘,然后在读入内存中复用
总结:第一个:一个查询要淘汰多个脏页是比较影响性能的,
第二个时如果日志写满的话也是会影响性能的
所以,InnoDb需要控制脏页的比例,避免出现这样的情况
3.缓存池中的内存页有哪三种状态?哪两种刷脏页的情况会比较影响性能?
bufferpool三种状态是未使用,使用但是是脏页,使用是干净页
4.innodb_io_capacity这个参数的作用是什么,这个参数设置错误可能导致什么样的后果,如何正确的设置这个参数?
这个参数的作用是告诉innoDb你的机器的磁盘读写能力,这样innodb才能知道你刷脏页的速度
如果这这个参数设置的很低的话,刷脏页的速度满,会导致脏页堆积,其次是日志写满
这个参数的设置就是需要考虑这两个因素,innodb会根据这两个因素计算出两个数字
取这两个数字的最大值,以%比来刷脏页,
平时要多