您的位置:首页 > 数据库 > MySQL

Innodb存储引擎 读书笔记

2013-05-02 00:00 232 查看
1.缓冲池是占最大块内存的部分,用来存放各种数据的缓存。由于Innodb存储引擎的工作方式总是将数据库文件按页(每页16K)读取到缓冲池,然后按最近最少LRU的算法保留在缓冲池中的缓存数据。如果数据库文件需要修改,总是首先修改缓冲池中的页,发生修改后,该页即为脏页,然后再按照一定的频率将缓冲池的脏页刷新到文件。P22

2.Innodb开创性的设计了插入缓冲,对于非聚集索引的插入或更新,不是每一次直接插入索引页,而是先判断缓冲池中是否包含该页。如果在,则直接插入,不在则先插入到一个缓冲池中,然后在以一定的频率执行缓冲和非聚集索引页子节点的合并工作。这时通常能将多个插入合并到一个操作中(在一个索引页中),提高了性能。P34

3.自适应哈希索引,对索引进行hash来快速查找。Innodb自动根据访问的频率和模式来为某些页建立hash索引P38

4.表空间由多个段组成,常见的段有数据段、索引段、回滚段。数据段即为B+树的叶节点,索引段即为非叶节点 P75

5.Compact行记录方式:Null值不占存储空间,不管是定长或是不定长。行记录是通过链表的方式来串联 P88

6.Varchar(N) 中的N是字符的长度,最大支持为65535个字节,当utf8或gbk时,n的最大值都是不同的。

7.每个页大小为16KB,当例如varchar的字节数超过该值时,即发生行溢出时,这个存放行溢出的页类型为Uncompress BLOB Page。

8.辅助索引,页级别不包含行的全部数据,其中包含了一个书签,用来告诉哪里可以找到对饮索引的的行数据,即相应行的聚集索引键。P174

9.B+树是一棵矮的树,因为硬盘IO操作是高消耗的,所以一般的查询有一到两次的硬盘io就好了,所以一般的查询操作都在0.01ms左右
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql innodb