成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 解析PostgreSQL中Oid和Relfilenode的映射問題

解析PostgreSQL中Oid和Relfilenode的映射問題

熱門標(biāo)簽:江蘇400電話辦理官方 電銷機器人能補救房產(chǎn)中介嗎 天津開發(fā)區(qū)地圖標(biāo)注app 濟南外呼網(wǎng)絡(luò)電話線路 地圖標(biāo)注要花多少錢 廣州電銷機器人公司招聘 400電話申請客服 移動外呼系統(tǒng)模擬題 電話機器人怎么換人工座席

作者李傳成
中國PG分會認(rèn)證專家,瀚高軟件資深內(nèi)核研發(fā)工程師
https://zhuanlan.zhihu.com/p/342466054

PostgreSQL中的表會有一個RelFileNode值指定這個表在磁盤上的文件名(外部表、分區(qū)表除外)。一般情況下在pg_class表的relfilenode字段可以查出這個值,但是有一些特定表在relfilenode字段的查詢結(jié)果是0,這個博客中將會探究這些特殊表relfilenode的內(nèi)核處理。

正常表的Relfilenode

當(dāng)我們創(chuàng)建一張普通表時,在pg_class系統(tǒng)表里可以查詢出其relfilenode,可以看出在表剛剛創(chuàng)建時其oid和relfilenode都是16808,在磁盤上也可以查詢到16808這個文件。事實上,這個文件存儲了我們向表t2插入的數(shù)據(jù)。

postgres=# create table t2(i int);
CREATE TABLE
postgres=# select oid,relname,relfilenode from pg_class where relname = 't2';
 oid | relname | relfilenode 
-------+---------+-------------
 16808 | t2   |    16808
(1 row)

postgres=# \q
movead@movead-PC:/h2/pgpgpg/bin$ ll ../data/base/12835/16808 
-rw-------+ 1 movead movead 0 12月 31 17:11 ../data/base/12835/16808
movead@movead-PC:/h2/pgpgpg/bin$

在我們對一張表執(zhí)行truncate,vacuum full等操作后,會重寫這個表的數(shù)據(jù),會引發(fā)這個表relfilenode值的變更。如下測試可以看出truncate之后,t2表的relfilenode從16808變?yōu)榱?6811.

postgres=# truncate t2;
TRUNCATE TABLE
postgres=# select oid,relname,relfilenode from pg_class where relname = 't2';
 oid | relname | relfilenode 
-------+---------+-------------
 16808 | t2   |    16811
(1 row)

postgres=# checkpoint;
CHECKPOINT
postgres=# \q
movead@movead-PC:/h2/pgpgpg/bin$ ll ../data/base/12835/16808
ls: 無法訪問'../data/base/12835/16808': 沒有那個文件或目錄
movead@movead-PC:/h2/pgpgpg/bin$ ll ../data/base/12835/16811
-rw-------+ 1 movead movead 0 12月 31 17:16 ../data/base/12835/16811
movead@movead-PC:/h2/pgpgpg/bin$

Nail表的Relfilenode

postgres=# select oid, relname, relfilenode,reltablespace
from pg_class
where relfilenode = 0 and relkind = 'r'
order by reltablespace;
 oid |    relname    | relfilenode | reltablespace 
------+-----------------------+-------------+---------------
 1247 | pg_type        |      0 |       0
 1255 | pg_proc        |      0 |       0
 1249 | pg_attribute     |      0 |       0
 1259 | pg_class       |      0 |       0
 3592 | pg_shseclabel     |      0 |     1664
 1262 | pg_database      |      0 |     1664
 2964 | pg_db_role_setting  |      0 |     1664
 1213 | pg_tablespace     |      0 |     1664
 1261 | pg_auth_members    |      0 |     1664
 1214 | pg_shdepend      |      0 |     1664
 2396 | pg_shdescription   |      0 |     1664
 1260 | pg_authid       |      0 |     1664
 6000 | pg_replication_origin |      0 |     1664
 6100 | pg_subscription    |      0 |     1664
(14 rows)

postgres=#

上述查詢可以看出,從pg_class系統(tǒng)表中查詢出的這些表的relfilenode為0。其中pg_type、pg_proc、pg_attribute、pg_class是非共享表,在內(nèi)核中稱他們?yōu)镹ail表。剩余的表是在pg_global表空間里的共享表。

pg_class表中relfilenode字段的意義是為了告訴程序,某一張表在磁盤上存儲的文件名。比如我們查詢t2表時,一定會先到pg_class系統(tǒng)表中獲取其relfilenode,然后到磁盤找到這個文件,然后打開并掃描??墒侨绻覀兿氩樵僷g_class系統(tǒng)表在磁盤上的文件名時,應(yīng)該去哪找到它的relfilenode?在PostgreSQL中提供了一組函數(shù)接口進行oid和relfilenode的轉(zhuǎn)化。

postgres=# select pg_relation_filenode(1259);
 pg_relation_filenode 
----------------------
        16475
(1 row)

postgres=# select pg_filenode_relation(0,16475);
 pg_filenode_relation 
----------------------
 pg_class
(1 row)

postgres=# select pg_filenode_relation(0,16475)::oid;
 pg_filenode_relation 
----------------------
         1259
(1 row)

postgres=#

通過pg_relation_filenode()可以將oid轉(zhuǎn)化為relfilenode,
通過pg_filenode_relation可以將relfilenode轉(zhuǎn)化為oid.
既然pg_class表中不存儲oid和relfilenode的對應(yīng)關(guān)系,那么PostgreSQL是怎么樣保存這個映射關(guān)系的呢?

Nail表Relfilenode的存儲機制

經(jīng)過研究發(fā)現(xiàn),在數(shù)據(jù)目錄里存在著pg_filenode.map文件,如下所示。

movead@movead-PC:/h2/pgpgpg/data/base/12835$ ll pg_filenode.map 
-rw-------+ 1 movead movead 512 12月 31 15:10 pg_filenode.map
movead@movead-PC:/h2/pgpgpg/data/base/12835$
movead@movead-PC:/h2/pgpgpg/data/global$ ll pg_filenode.map 
-rw-------+ 1 movead movead 512 12月 31 15:10 pg_filenode.map
movead@movead-PC:/h2/pgpgpg/data/global$

在global目錄下的pg_filenode.map文件里存儲了shared表的oid和relfilenode的映射關(guān)系,12835目錄下存儲了OID為12835的數(shù)據(jù)庫里nail表的oid和relfilenode的映射關(guān)系。
pg_filenode.map文件的結(jié)構(gòu)為:

typedef struct RelMapping
{
  Oid     mapoid;     /* OID of a catalog */
  Oid     mapfilenode;  /* its filenode number */
} RelMapping;

typedef struct RelMapFile
{
  int32    magic;     /* always RELMAPPER_FILEMAGIC */
  int32    num_mappings;  /* number of valid RelMapping entries */
  RelMapping mappings[MAX_MAPPINGS];
  pg_crc32c  crc;      /* CRC of all above */
  int32    pad;      /* to make the struct size be 512 exactly */
} RelMapFile;

結(jié)語

這個博客主要闡述了在PostgreSQL中表的oid和relfilenode映射的兩種不同表現(xiàn)形式,你只要記住使用pg_relation_filenode()永遠(yuǎn)會得到正確的結(jié)果,從pg_class系統(tǒng)表中查詢則可能會得到錯誤的結(jié)果。

了解更多PostgreSQL技術(shù)干貨、熱點文集、行業(yè)動態(tài)、新聞資訊、精彩活動,請訪問中國PostgreSQL社區(qū)網(wǎng)站:www.postgresqlchina.com

到此這篇關(guān)于PostgreSQL中Oid和Relfilenode的映射的文章就介紹到這了,更多相關(guān)PostgreSQL中Oid和Relfilenode的映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 解決PostgreSQL Array使用中的一些小問題
  • postgresql 中的 like 查詢優(yōu)化方案
  • PostgreSQL regexp_matches替換like模糊查詢的操作
  • postgresql 實現(xiàn)replace into功能的代碼
  • PostgreSQL 禁用全表掃描的實現(xiàn)

標(biāo)簽:溫州 榆林 寶雞 濮陽 海西 昭通 杭州 辛集

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解析PostgreSQL中Oid和Relfilenode的映射問題》,本文關(guān)鍵詞  解析,PostgreSQL,中,Oid,和,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解析PostgreSQL中Oid和Relfilenode的映射問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于解析PostgreSQL中Oid和Relfilenode的映射問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品国产乱码久久久久久丨区2区| 成人在线免费观看网址| 精品久久久久久久久久久久久久久久| 国产一级黄色录像| 在线免费看av网站| 毛片电影在线| 久久爱.com| 一级黄色免费| 国产亚洲精品熟女国产成人| 欧美成人xxxxx| av在线播放国产| 91女神在线观看| 色哟哟一区二区| 国产麻豆视频免费观看| 免费人成年激情视频在线观看| 久久久久国内| 国产一区二区日韩精品欧美精品| 黄页网站大全一区二区| 日本女人一区二区三区| 乱精品一区字幕二区| 91久久精品久久国产性色也91| 久久亚洲二区| 7777精品久久久大香线蕉小说| 99久久久无码国产精品性波多| 精品国产99国产精品| 一区二区在线免费播放| 国产一区二区成人久久免费影院| 国产爆乳无码一区二区麻豆| 国产视频在线一区| 日韩在线观看视频网站| 本网站久久精品| 国产自产在线视频| 国产免费亚洲高清| 理论不卡电影大全神| 99热成人精品热久久66| 97人人模人人爽人人喊38tv| 亚洲第一成人网站| 亚洲性图自拍| 99久久婷婷这里只有精品| 最近2019年日本中文免费字幕| 欧美性猛交久久久乱大交小说| 伊人伊成久久人综合网站| 国产精品原创巨作av| 日批视频在线免费看| 国产欧美日韩另类一区| 欧美色图片你懂的| 日韩 欧美一区二区三区| 久久精品视频在线免费观看| 精品女同一区二区三区在线播放| 91社影院在线观看| 奇米影视第四色777| 日韩一区二区在线视频| 婷婷久久久久久| 欧美视频在线观看一区二区三区| 91无套直看片红桃| 亚洲一区二区三区综合| 久久免费大视频| 天堂在线视频播放| 欧美日韩一二| 国产二级一片内射视频播放| 青青草超碰在线| 国产爆初菊在线观看免费视频网站| 日韩精品在在线一区二区中文| 九九在线精品视频| 在线观看欧美日韩电影| 久久久久久久久久久久久国产精品| 亚洲欧美色图小说| 波多野结衣一区二区三区四区| 久久欧美中文字幕| 乱人伦中文视频在线| 成人av资源网址| 99热最新在线| 玉米视频成人免费看| 狠狠入ady亚洲精品| 欧美日韩亚洲一区二区三区| 国模吧精品视频| 2222www色视频在线观看| 免费成人在线影院| 日韩国产成人在线| 欧美激情精品久久久久久免费印度| 川上优av中文字幕一区二区| 玖玖在线精品| 欧美午夜精品在线| 黄色网址在线视频| 国产美女www| 九九九热精品免费视频观看网站| 国产丝袜视频一区| 黄色日韩网站视频| 一色屋精品亚洲香蕉网站| av资源在线观看免费高清| 亚洲在线精品视频| 日本国产高清不卡| 欧洲另类一二三四区| 黄色一级视频播放| 日韩成人免费视频| 一本加勒比波多野结衣| 免费成人高清在线视频| 特黄特色特刺激视频免费播放| 国产日韩欧美亚洲一区| 久久久久久久久久国产| 激情视频在线观看一区二区三区| 国产精华一区二区三区| 久久久久欧美| 欧美国产专区| 欧美精品一区二区三区在线四季| 一区二区传媒有限公司| 人狥杂交一区欧美二区| 欧美成人dvd在线视频| 久久久人成影片一区二区三区观看| 国产高清视频在线播放| 色综合影院在线| 日日噜噜夜夜狠狠久久丁香五月| 亚洲片国产一区一级在线观看| 国产成人免费视频一区| 久久夜色精品国产噜噜av| 亚洲成a人片777777久久| 91九色蝌蚪视频| 久久久久99精品成人片试看| 色偷偷888欧美精品久久久| 99精品视频在线观看免费| 91精品国产自产在线| 久久久久久久久中文字幕| 亚洲久草在线视频| 亚洲女同同性videoxma| 亚洲在线一区二区三区| 久久99青青精品免费观看| 国产精品午夜电影| 久久精品一区二区三区不卡免费视频| 亚洲电影小说图| 黄色性生活一级片| 日本波多野结衣在线| 亚洲欧美日韩成人高清在线一区| 黄色美女一级片| 韩国v欧美v亚洲v日本v| 午夜精品一区二区三区视频免费看| 女人丝袜激情亚洲| 99视频在线观看地址| 亚洲国产精品www| 精品视频91| 亚洲午夜在线观看| 亚洲欧洲国产视频| 欧美黑人经典片免费观看| 国产最新视频在线观看| 亚洲国产精品久久精品怡红院| 91蜜臀精品国产自偷在线| 国产精品日韩二区| 亚洲一级爰片777777| 精品国产麻豆| 亚洲欧洲中文| 麻豆av一区二区三区久久| 亚洲综合不卡| 成人精品影院| 亚洲国产成人私人影院| 972aa.com艺术欧美| 国产麻豆剧传媒精品国产| 91精品国产一区二区三区动漫| 欧美另类videosbestsex日本| 亚洲www视频| 蜜桃av乱码一区二区三区| 91精品国产91久久| 欧美日韩亚洲国产一区| 欧美人与禽zozzo禽性配| 精品美女在线视频| 91国产一区在线| 国产精品久久久影院| 国外成人在线直播| 日韩不卡免费高清视频| 国产污污在线观看| 欧美激情在线有限公司| 亚洲图区综合| 欧美三级黄视频| 亚洲伊人av| 亚洲视频日本| 天天操夜夜骑| 国产成人短视频在线观看| 欧美精品一区二区三区三州| 五月天婷亚洲天综合网鲁鲁鲁| 日本一本不卡| 国产精品影片在线观看| 亚洲色图美国十次| 欧美一区二区三区免费| 亚洲最新视频在线观看| 性高湖久久久久久久久aaaaa| 精品无码一区二区三区在线| 久久电影中文字幕| 在线观看国产一区| 日韩精品aaa| 一区二区在线免费看| 中文字幕欧美人妻精品一区| 天天影视网天天综合色在线播放| 日韩av男人天堂| 黄色一级片免费播放| 亚洲电影成人成人影院| 国产日韩在线精品av| 一区二区免费不卡在线| 欧美乱妇20p| 在线国产精品播放| 69国产精品成人在线播放| 综合亚洲自拍| 国产传媒视频在线| 国产精品久久亚洲7777| 99精品免费| 日韩免费看片| 亚洲一区二区在线| 99久久免费精品高清特色大片| 美女被内谢流白浆高视频| 国产偷窥女洗浴在线观看亚洲| 日韩欧美网址| 日韩不卡中文字幕| 欧美挤奶吃奶水xxxxx| 蜜桃久久久久| 中文字幕成人av| 久久久久亚洲AV成人网人人小说| 九九精品视频在线观看九九| 日韩午夜视频在线观看| 疯狂做受xxxx欧美肥白少妇| 曰本人一级毛片免费完整视频| 妺妺窝人体色www聚色窝仙踪| 中文字幕中文乱码欧美一区二区| 国产亚洲一区在线播放| 欧美黑人xxxx| 澳门久久精品| 中文字幕日韩一区二区三区不卡| 国产精品稀缺呦系列在线| 两性午夜免费视频| 图片区乱熟图片区亚洲| gay网站在线| 免费高清在线观看电视| 91高跟黑色丝袜呻吟在线观看| 久久久久久av无码免费看大片| 欧美老女人性生活视频| 欧美日韩国产一区二区三区不卡| 四虎国产精品永久在线国在线| 91女厕偷拍女厕偷拍高清| 亚洲天堂资源在线| 人妻人人澡人人添人人爽| 77777少妇光屁股久久一区| 国产一区二区视频免费观看| 亚洲大片精品永久免费| 九色视频在线观看免费| 欧美精品一区男女天堂| 久久久精品人妻一区二区三区四| 亚洲国产精品成人综合| 欧美在线观看视频| 亚洲国产精品电影| 可以免费看污视频的网站| 亚洲在线视频福利| 欧洲一区在线观看| 1024日韩| 午夜精品蜜臀一区二区三区免费| 精品久久久久久久久久久院品网| 欧美日韩一级大片网址| 成人看片网站| 国产乱人伦精品一区二区在线观看| 久久99热99| 国产福利第一视频在线播放| 亚洲欧美日本国产有色| 无码人妻av免费一区二区三区| 日本老太婆做爰视频| 欧美午夜在线一二页| 色悠悠久久88| 国产毛片欧美毛片久久久| 免费白白视频| 欧美视频一区二| 九九热精品视频国产| 怡红院av亚洲一区二区三区h| 韩国黄色一级片| 欧亚精品在线观看| 国产精品久久久久久久龚玥菲| 国产综合网站| 玖玖爱在线精品视频| 欧美亚洲视频在线看网址| 中文成人无字幕乱码精品区| 拍真实国产伦偷精品| 精品一区二区6| 性欧美精品男男| 久久男人的天堂| 亚洲人成网站在线在线观看| 国产suv精品一区| 国产精品视频500部| 一级毛片免费视频| 国产精品国产一区二区| 国产日产精品1区| 精品99久久久久久| 欧美xxxxx精品| 欧美男男大粗吊1069| 国产美女特级嫩嫩嫩bbb片| 向日葵污视频在线观看| 国产一级精品aaaaa看| 在线观看黄网站| 日韩肉感妇bbwbbwbbw| 合欧美一区二区三区| 中文字幕免费视频| 中文字幕日韩一区二区| 特级黄国产片一级视频播放| 粉嫩精品导航导航| 在线视频观看91| 成人乱色短篇合集| japan高清日本乱xxxxx| 国产suv精品一区二区6| 日韩中文在线视频| 欧美丝袜美女中出在线| 久久精品国产亚洲高清剧情介绍| 欧美日韩不卡| 免费h精品视频在线播放| 国产精品无码天天爽视频| 久久久久国产精品夜夜夜夜夜| 99国产精品久久久久久久| 日韩一区二区免费在线电影| 欧美视频在线观看| 成年人av电影| 成年人免费在线观看网站| 亚洲第一区视频| 热久久国产精品| 亚洲成人网久久久| 欧美色网站导航| 亚洲天堂电影网| 精品免费囯产一区二区三区| 国产一区二区三区亚洲综合| 欧美亚洲另类色图| 四虎影视成人永久免费观看视频| 欧美综合在线观看| 99re在线视频精品| 精品久久亚洲| 欧美精品久久久久久久久老牛影院| 欧美国产二区| 国产精品高清网站| 中文字幕第50页|