您的位置:首页 > 数据库

PostgreSQL的数据存储(十五)---数据存储

2011-09-16 08:46 127 查看

4.7 大对象存储

从用户可操作的角度看,PG提供了一套函数接口,用以操作大对象。如:lo_create、lo_open、lo_write、lo_close等。

大对象的存储,可以从lo_write函数中得知如下信息:

1. 大对象,会被拆分为一个个“LOBLKSIZE”(2k)大小的子项,当作元组项,置于数据页中(调用heap_form_tuple形成一个个tuple,然后用simple_heap_insert插入到页面中)

2. 大对象被拆分后,连续在页面上存储,可以跨页存储,但每次存储的单位是tuple(LOBLKSIZE大小)

4.8 物理IO调用方式

如果没有缓存(buf)这一层,读写元组或读写列,就需要直接调用IO函数了。就像作者在《PostgreSQL之精妙的数据库导入导出工具架构 (四)》等系列中写的一样,PG的导入导出工具,直接操作外存和物理IO打交道,所以直接调用read、write等C函数操作外存。

而存储层,涉及保存数据的地方,都是对buf操作,是一种逻辑IO的方式,所以,并不涉及直接调用read、write等C函数操作外存。

因为有了IO,逻辑IO和物理IO完全分离,使得操作IO的效率大为提高。读写tuple,完全建立在内存上,所以,没有了调用read、write等C函数操作的处理工作,减少物理IO操作提升了效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: