Innodb存储引擎

1,引言

1.1

区分数据库和数据库实例
数据库是文件的集合,是数据集合,而数据库实例是管理软件,我们操作数据库,即进行增删改查都是通过数据库实例进行的

1.2 mysql的存储引擎

mysql的核心就是存储引擎
存储引擎分为官方存储引擎和第三方存储引擎.有的第三方存储引擎非常强大,入Innodb

1.2.1 Innodb

Innodb支持事务,设计目标就是在线事务处理(OLTP).行锁设计,支持外键,从5.5.8开始Innodb就是默认的存储引擎,将数据放在一个逻辑的表空间中.
Innodb使用多版本并发控制(MVCC)来获取高并发性,并实现了SQL标准的四种隔离级别,默认是REPEATABLE.同时使用一种next-key-Locking来避免幻读现象的产生,还有许多高级特性,稍后介绍

1.2.2 MyISAM

不支持事务,表锁设计,支持全文检索,面向OLAP数据库应用

2 Innodb概述

第一个完整的支持ACID的存储引擎,MVCC,行锁设计,支持外键,提供一致性非锁定读

2.1 Innodb的体系结构

Innodb由多个内存块组成,这多个内存块可看做是一个内存池


图片.png

2.1.1后台进程

(1),Master Thread
负责内存池的数据异步刷新到磁盘,保证数据的一致性
(2),IO Thread
存储引擎中使用了大量的AIO来处理IO请求,可以极大的提高数据库的性能.

show variables like 'innodb_%io_threads';

查看读写线程,各4个(读/写)
(3),Purge Thread
加快undo页的回收,原本是Master Thread实现的功能,后来单另出来,分担压力

show variables like 'innodb_purge_threads'

四个purge Thread

2.1.2内存

(1),缓冲池
Innodb的数据都是存在磁盘上的,以页的方式,所以是基于磁盘的数据库系统,但是由于CPU(处理器)和磁盘速度的鸿沟,Innodb会通过缓冲池进行提供性能
注意:当在缓冲池中修改页的时候,并不是已修改就要写回磁盘,而是通过CheckPoint的技术来提高性能
缓冲池中数据页类型如下图所示:

摘自书籍

在后来的版本中,允许有多个缓冲池的实例,每一个页根据哈希值分配到不同的缓冲池中
同时也可以查看表的信息

use information_schema;
select pool_id,pool_size,free_buffers,database_pages from innodb_buffer_pool_stats;

(1.2)缓冲池的管理方式
LRU list(最近最少使用),频繁使用的放在前面,不经常使用的放在后面,当不能存放新读取到的页时,会首先释放尾端的页,同时Innodb对传统的URL算法进行了优化,在Innodb中加入了midpoint位置,当你读到一个新的页,不会放入到队列的最开头,而是将其放在LRU list的midpoint位置

mysql> show variables like 'innodb_old_blocks_pct';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_old_blocks_pct | 37    |
+-----------------------+-------+
1 row in set (0.01 sec)

midpoint的位置大概就是37的位置(距离尾端3/8)的位置,以这个midpoint为分界点,之前的为热点区,之后的为老区,时刻有可能被划分出去
至于为什么不采用传统的URL算法,是因为如果最新的页直接放到首部,那么某些SQL操作可能就会是缓冲池的页被刷出.
具体举个例子来说:扫描操作,将大量的页放入队列,有可能使得原来热点区的页从LRU的列表中移除
现在介绍了URL list,然后我们介绍Free list.URL用来存储已经读的页,页都放在内存的Free list 中.
将old区的页到了new区的页的过程称为page made young,而由于Innodb_block_time(现在放在了mid区域,经过多久才能放在new区)没有放入new区等待的过程page not made young.

Innodb现在也支持压缩页的功能,原本的页需要16kb现在压缩到了1kb,2kb,4kb,8kb,这个时候对于非16kb的页进行管理的时候,通过unzip_LRU列表进行管理.兄弟算法

Flush list存放脏页(在LRU队列中被修改的列,造成了缓存和磁盘数据不一致),这里要使用checkpoint方式将脏页写回到磁盘.

Checkpoint技术
当对缓冲池中执行一条DML语句,是的缓冲池的内容比磁盘的新,这个时候缓冲池的页被称为"脏页",然后这个时候需要讲缓冲池的内容写回到磁盘中.
Checkpoint技术
缩短数据库中的恢复时间
缓冲池不够用的时候,将脏页写回到磁盘
重做日志不可用的时候,刷新脏页.
Sharp Checkpoint在数据关闭时将脏页全部写回到磁盘
Fuzzy Checkpoint,在运行时,只刷新一部分脏页,而不是刷新全部的脏页

  • master Thread CheckPoint 每秒或者每十秒将脏页列表刷新回到磁盘中去,异步.
  • FLUSH_LRU_LIST Checkpoint 需要保证的LRU列表中有100个空闲页可用,在1.1x版本之前,会查看有多少空闲页,如果空闲页不够就会把LRU的尾端的页移除,如果这些页中有脏页就写回磁盘,从1.2x开始,就是单独的线程不会阻塞运行,
  • Async/Sync Flush Checkpoint 指的是重做日志不可用的情况下,强制将一些页刷新回磁盘.
  • Dirty Page too much 脏页太多的话,就会写一部分到磁盘

master Thread

Master Thread 其中包括多个线程,Loop为主循环,分为每一秒的操作和每十秒的操作.
每一秒的操作包括:
日志缓冲刷新到磁盘,即使事务还没有提交.
合并插入缓冲
刷新脏页到磁盘中
如果没有活动,就切换到background loop
每十秒的操作包括:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容