您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > PostgreSQL--内核分析--数据缓冲区
PostgreSQL数据库---内核源码分析那海蓝蓝:生活点滴,随风拂去第1页/共28页PostgreSQL深入理解缓冲区作者:李海翔博客:邮箱:lhx3000@163.com1什么是缓冲区..............................................................................................................................22常见的缓冲区..............................................................................................................................22.1常见缓冲区类型...........................................................................................................22.2缓冲区的衍生---缓存组件...........................................................................................22.3缓存与池的关系...........................................................................................................32.4缓存区与cache辨析....................................................................................................33缓存的作用和常见场景...............................................................................................................33.1缓存的作用...................................................................................................................33.2缓存的常用场景...........................................................................................................44数据库中的缓冲区.......................................................................................................................44.1PostgreSQL数据缓冲区管理......................................................................................54.1.1文件介绍...............................................................................................................54.1.2相关代码...............................................................................................................54.1.3Buf作用与位置....................................................................................................74.1.3.1ReadBuffer表明的层次关系........................................................................74.1.3.2从buf分配看buf的使用............................................................................94.1.3.3其他函数表明的buf作用...........................................................................94.1.4Buf结构..............................................................................................................104.1.4.1Buf的整体结构...........................................................................................104.1.4.2Buf的元信息结构.......................................................................................114.1.4.3内外存地址是如何映射的.........................................................................124.1.4.4Buf的主体结构...........................................................................................134.1.4.5Buf的置换调度策略管理相关数据结构...................................................134.1.5Buf置换管理算法..............................................................................................164.1.6并行计算对buf置换的影响.............................................................................174.2PostgreSQL日志缓冲区管理....................................................................................194.2.1日志缓存相关代码.............................................................................................194.2.2日志缓存的管理方式.........................................................................................224.2.3双向缓存和单向缓存的比较.............................................................................254.3PostgreSQL数据缓存区改进....................................................................................254.3.1从buf结构看改进---动态调整buf缓存大小..................................................254.3.2从buf与IO看改进---异步IO..........................................................................264.3.3从buf淘汰方式看改进---freelist......................................................................27PostgreSQL数据库---内核源码分析那海蓝蓝:生活点滴,随风拂去第2页/共28页1什么是缓冲区百度上讲:①缓冲器为暂时置放输出或输入资料的内存。缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合.后来这个意思被扩展了,成为临时存贮区的意思。确如上述,缓冲区,在计算机中,就是一个高速部件和低速部件的一个中介,如内存,是CPU和外存设备(硬盘)等中转站。如果数据被预先存入内容,CPU读取到的数据的速度就会快许多。再如CPU上的高速cache,异曲同工。2常见的缓冲区2.1常见缓冲区类型只要存在衔接,在高低层次间有交互,中间地带必然存在,如同边界线上的军事缓冲区一样,缓冲区的存在,尤其实质意义。计算机上的缓存,可以有效提高数据的吞吐效率。硬件级:主板的缓存、CPU中的缓存操作系统层:操作系统的缓冲区、网络协议层的缓冲区应用程序层:应用程序的缓冲区、数据库系统的缓冲区(大型应用程序,通常都会自己管理内存,自己提供缓冲区管理的方式)2.2缓冲区的衍生---缓存组件一些网站,为了提高访问速度,常使用一些缓存组件如memcached和ehcache。常见的还有SysCache,MemCache,Prevalence等等。Memcached,一个高性能的分布式的内存缓存系统,是一个开源组件。这些组件的研究,我们不深究,列在此,是扩展对于缓冲区的认识。①,也是一样的文字PostgreSQL数据库---内核源码分析那海蓝蓝:生活点滴,随风拂去第3页/共28页2.3缓存与池的关系池,停水曰池。——《广韵》。所以,池,能蓄积物。引申后,池能蓄积线程,则称之为线程池;池能蓄积进程则称之为进程池。另外常见的还有数据库连接池、IIS6.0中的地址池、内存池①等等。其中,内存池的概念,类似缓冲区。我这里讨论的,着重于PostgreSQL数据库系统的实现实例。2.4缓存区与cache辨析Cache,偏于硬件系统,称为高速缓冲存储器。一个高速且有着较小容量的、可以用高速的静态存储器芯片实现的存储器。主要是集成到CPU芯片内部,存储CPU最经常访问的指令或者操作数据。所以,本文所讲的缓冲区,有别于cache。3缓存的作用和常见场景3.1缓存的作用缓存,可以把常用的一些“对象”(暂且称为对象)蓄积起来,供使用,这样,将减少被缓存对象的生成、销毁等时间,如果对象被反复使用,且其生成、销毁需要花费时间,则缓存这样对象对于时间的节省可能很有效。缓存组件提供retrieve、add、remove等功能。过期和自我清除策略也是给缓存管理的一部分。缓存带来的明显好处是:提高性能。采用一种更为密切的方式,为数据的消费者存储相关的数据;以避免
本文标题:PostgreSQL--内核分析--数据缓冲区
链接地址:https://www.777doc.com/doc-5087899 .html