页面读入机制
当读入页面的时候, 首先需要找到一个可用的block, 这个block或者来自于free list或者lru-list; 在读入数据块的时候, block会加上排他锁以防止其他线程再次使用这个block,
会在block中标记出这个块正处于io状态, 然后把io请求加入到io调用请求对列; 完成读入操作时, 再释放block上的拍它锁更新io状态。
数据页面的读取写入
缓冲池中的数据基本是采用同步aio的方式,这里的同步aio的意思是: 工作线程发出读或写请求后,请求会被放到一个读写请求队列中,由专门的io线程负责写盘和读盘,而工作线程则等待io的完成,
阅读全文…
相关日志
在数据库数据处理中, 缓冲在改善性能方面扮演着很重要的角色, 为了保证性能, innodb 维护了自己的缓冲池。 文章大体介绍一下innodb缓冲区实现和管理策略。
在innodb中,需要用到数据页(需要保存到磁盘的数据)均是从这个缓冲池里分配出来的, 因此,可以说,缓冲池在对innodb的性能有很大的影响。
几个基本的概念
AWE:地址窗口化扩展,允许在 32 位版本的 Windows 操作系统上使用 4 GB 以上的物理内存。最多可支持 64 GB 的物理内存。更多信息请看 http://baike.baidu.com/view/1390438.htm; innodb是支持AWE内存管理的
Frame;帧,16K的虚拟地址空间, 在缓冲池的管理上,整个缓冲区是是以大小为16k的frame(可以理解为数据块)为单位来进行的,frame是innodb中页的大小。
Page: 页,16K的物理内存, page上存的是需要保存到磁盘上的数据, 这些数据可能是数据记录信息, 也可以是索引信息或其他的元数据等;
阅读全文…
相关日志