時(shí)間:2024-02-05 11:03作者:下載吧人氣:27
作者李傳成
中國PG分會認(rèn)證專家,瀚高軟件資深內(nèi)核研發(fā)工程師
https://zhuanlan.zhihu.com/p/342466054
PostgreSQL中的表會有一個(gè)RelFileNode值指定這個(gè)表在磁盤上的文件名(外部表、分區(qū)表除外)。一般情況下在pg_class表的relfilenode字段可以查出這個(gè)值,但是有一些特定表在relfilenode字段的查詢結(jié)果是0,這個(gè)博客中將會探究這些特殊表relfilenode的內(nèi)核處理。
當(dāng)我們創(chuàng)建一張普通表時(shí),在pg_class系統(tǒng)表里可以查詢出其relfilenode,可以看出在表剛剛創(chuàng)建時(shí)其oid和relfilenode都是16808,在磁盤上也可以查詢到16808這個(gè)文件。事實(shí)上,這個(gè)文件存儲了我們向表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$
網(wǎng)友評論