关于mysql:innodb

1、mysql数据库意识
数据库和数据库实例的区别
数据库对应数据库文件,数据库实例
2、后盾线程
master线程:刷新缓存到磁盘、回收undolog、insertbuffer
IO thread
purge thread
page cleaner thread
2、innodb内存
缓存池+redolog缓存
缓冲池:通过lru来算法来治理内存
LRU LIST 负责管理缓冲池中页的可用性
FREE LIST
FLUSH LIST 用来治理将页刷新回磁盘
重做日志缓冲:innodb存储引擎首先将重做日志信息先放入到这个缓冲区,而后在意肯定的频率将其刷新到重做日志中
3、checkpoint技术
假使每个页产生一次变动就将新页刷新到磁盘,开销是很微小。另外,如果在刷新的过程中如果宕机,那么内存中的数据就会失落。
所以以后事务性数据库都采纳write ahead log 策略,即当事务提交时,先写重做日志,在批改页。当产生宕机时,通过重做日志来实现数据的复原。
6、innodb要害个性
6.1、插入缓冲(insert buffer)
    条件:1、辅助索引2、非惟一索引
   解决的问题:非惟一的辅助索引插入时,因为b+树的构造特点,须要离散的拜访该索引页。
6.2、两次写(double write)
    两次写能够带来数据页的可靠性
    你可能会想到,如果产生写失落,能够通过重做日志来复原。但必须分明的意识到,重做日志中记录的都是对页的物理操作,比方偏移量800,写‘aaa’记录。如果这个页自身曾经产生了损坏,在对其进行重做是没有意义的。这就是说,在利用重做日志钱,用户须要一个正本,当写入生效产生时,先通过页的副原本还原这个页,再进行重做,这就是两次写。
    实现:在刷新缓存时,并不是间接写磁盘,而是先将脏页复制到doublewrite buffer(2M)中,通过doublewriter buffer再分两次每次1M程序地写入到共享表空间的磁盘上,实现之后,再将doublewrite buffer中的页各个表空间文件中。如果在刷缓存的时候宕机了,那么会先从共享表空间中找到这个页的正本,还原该页,再进行redolog的数据恢复。

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年50元

阿里云限时活动-2核2G-5M带宽-60G SSD-1000G月流量 ,特惠价99元/年(原价1234.2元/年,可以直接买3年),速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据