{"kind": "storage", "major": "18", "item": {"slug": "fork-main", "name": "main fork", "name_zh": "", "category": "\u5173\u7cfb\u5206\u53c9", "summary": "\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u5355\u72ec\u7684\u6587\u4ef6\u4e2d\u3002\u5bf9\u4e8e\u666e\u901a\u5173\u7cfb\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4ee5\u8868\u6216\u7d22\u5f15\u7684 \u6587\u4ef6\u8282\u70b9 \u7f16\u53f7\u547d\u540d\uff0c\u8be5\u7f16\u53f7\u53ef\u5728 pg_class . relfilenode \u4e2d\u627e\u5230\u3002\u4f46\u5bf9\u4e8e\u4e34\u65f6\u5173\u7cfb\uff0c\u6587\u4ef6\u540d\u7684\u5f62\u5f0f\u4e3a t BBB _ FFF \uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u8be5\u6587\u4ef6\u7684\u540e\u7aef\u8fdb\u7a0b\u53f7\uff0c FFF \u662f\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u9664\u4e86\u4e3b\u6587\u4ef6\uff08\u4e5f\u79f0\u4e3b\u5206\u652f\uff09\u4e4b\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a \u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04 \uff08\u89c1 \u7b2c 66.3 \u8282 \uff09\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u5173\u7cfb\u53ef\u7528\u7a7a\u95f2\u7a7a\u95f4\u7684\u4fe1\u606f\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u5b58\u653e\u5728\u4ee5\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u52a0\u4e0a _fsm \u540e\u7f00\u547d\u540d\u7684\u6587\u4ef6\u4e2d\u3002\u8868\u8fd8\u62e5\u6709 \u53ef\u89c1\u6027\u6620\u5c04 \uff0c\u5b58\u653e\u5728\u5e26\u6709 _vm \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff0c\u7528\u4e8e\u8ddf\u8e2a\u54ea\u4e9b\u9875\u9762\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u3002\u53ef\u89c1\u6027\u6620\u5c04\u5728 \u7b2c 66.4 \u8282 \u4e2d\u6709\u8fdb\u4e00\u6b65\u8bf4\u660e\u3002\u4e0d\u8bb0\u5f55 WAL \u7684\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u652f\uff0c\u79f0\u4e3a\u521d\u59cb\u5316\u5206\u652f\uff0c\u5b58\u653e\u5728\u5e26\u6709 _init \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff08\u89c1 \u7b2c 66.5 \u8282 \uff09\u3002", "aliases": [], "content_hash": "90346a1293b3085c4c2ea5558b2e8db7343c620d91582729dc9d9b8df4398a91", "versions": {"10": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=10", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "stable", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sources": [{"url": "https://pg.center/docs/10/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 10 English manual", "sha256": "093b3f235454c71a726c19d2a533af52677d400170ccbc8f4b8cab5cfb19946a", "language": "en", "original_url": "/docs/10/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 67.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 67.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 67.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/10/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/10/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 67.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 67.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 67.5 ).", "/versions/10/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/10/facts/0/label": "Fork", "/versions/10/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "1706a6fcc91b9488a7f18c37ab01fcc9137c733a663464430c42510a498d5795"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "11": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=11", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "stable", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sources": [{"url": "https://pg.center/docs/11/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 11 English manual", "sha256": "cbed09542ca2b0c2412d9e0810e5283a7626385224a23e094412d8f62be81985", "language": "en", "original_url": "/docs/11/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 69.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 69.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 69.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/11/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/11/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 69.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 69.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 69.5 ).", "/versions/11/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/11/facts/0/label": "Fork", "/versions/11/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "aa9e1d0590a071b0dc52c8e5f0d4f4121a03d0549a2398a7e31b80f9de9752d5"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "12": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=12", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "stable", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sources": [{"url": "https://pg.center/docs/12/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 12 English manual", "sha256": "cb2e82b933c3712adaf61cc5a26d266e9f007698df549f999db9962bb6f39823", "language": "en", "original_url": "/docs/12/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 69.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 69.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 69.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/12/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/12/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 69.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 69.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 69.5 ).", "/versions/12/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/12/facts/0/label": "Fork", "/versions/12/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "c8a39a0f101993c59cc95454a48d67c4b08f1f32eb01fe467e265f3d0491713a"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "13": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=13", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "stable", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sources": [{"url": "https://pg.center/docs/13/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 13 English manual", "sha256": "2c839dc903912e2950982d087d63ebb1a03d2818c75443e237320784aa6443f8", "language": "en", "original_url": "/docs/13/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 69.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 69.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 69.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/13/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/13/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 69.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 69.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 69.5 ).", "/versions/13/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/13/facts/0/label": "Fork", "/versions/13/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "21f3a490707a0cc221d3504e0f5b2fb97db1563364e5bc9d025a688c21146712"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "14": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=14", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sources": [{"url": "https://pg.center/docs/14/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 14 English manual", "sha256": "6321dbd90cb8a8dfdc90c0e1caeaf3d480705176bba0428510fd986fe681eae3", "language": "en", "original_url": "/docs/14/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 70.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 70.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 70.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/14/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/14/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 70.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 70.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 70.5 ).", "/versions/14/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/14/facts/0/label": "Fork", "/versions/14/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "b067eea2febc6d64c8cab6aa52995fb41e461d234d5ff641aceead7329db8eab"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "15": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=15", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sources": [{"url": "https://pg.center/docs/15/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 15 English manual", "sha256": "01868f8e03e8749d2c1b113ab2988c459ac44259ce7416677e981e41e33015ea", "language": "en", "original_url": "/docs/15/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 73.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 73.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 73.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/15/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/15/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 73.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 73.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 73.5 ).", "/versions/15/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/15/facts/0/label": "Fork", "/versions/15/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "a89d1cdd4f1ba2f7b1645ef4e4eea3f41969164ac45bb76eb1de862b32b59dd6"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "16": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=16", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sources": [{"url": "https://pg.center/docs/16/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 16 English manual", "sha256": "f03daad7b39b5df902b4bc6e6f856e65af368a8507ffbf02199804aa4b0d0bd5", "language": "en", "original_url": "/docs/16/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u72ec\u7acb\u6587\u4ef6\u4e2d\u3002\u666e\u901a\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u53d6\u81ea\u8868\u6216\u7d22\u5f15\u7684 filenode \u7f16\u53f7\uff0c\u53ef\u5728 pg_class.relfilenode \u4e2d\u67e5\u5230\u3002\u4e34\u65f6\u5173\u7cfb\u7684\u6587\u4ef6\u540d\u4e3a tBBB_FFF\uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u6587\u4ef6\u7684\u540e\u7aef ID\uff0cFFF \u662f filenode \u7f16\u53f7\u3002\u9664\u4e3b\u6587\u4ef6\uff08\u4e3b\u5206\u53c9\uff09\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\uff08\u53c2\u89c1\u7b2c 73.3 \u8282\uff09\uff0c\u8bb0\u5f55\u5173\u7cfb\u4e2d\u7684\u53ef\u7528\u7a7a\u95f4\uff0c\u6587\u4ef6\u540d\u4e3a filenode \u52a0 _fsm \u540e\u7f00\u3002\u8868\u8fd8\u5177\u6709 _vm \u540e\u7f00\u7684\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\uff0c\u7528\u4e8e\u8ddf\u8e2a\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u7684\u9875\u9762\uff0c\u8be6\u60c5\u53c2\u89c1\u7b2c 73.4 \u8282\u3002\u65e0\u65e5\u5fd7\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u53c9\uff0c\u5373\u521d\u59cb\u5316\u5206\u53c9\uff0c\u4f7f\u7528 _init \u540e\u7f00\uff08\u53c2\u89c1\u7b2c 73.5 \u8282\uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/16/storage-file-layout.html", "localization": {"status": "complete", "sources": [], "language": "zh", "original_text": {"/versions/16/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the backend ID of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 73.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 73.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 73.5 ).", "/versions/16/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/16/facts/0/label": "Fork", "/versions/16/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "865727af172c607d22101ce99036544837ddabe5e12034e6cb8cf528b7c5afce"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "17": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=17", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sources": [{"url": "https://pg.center/docs/17/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 17 English manual", "sha256": "f3de9587ca7d02f068a4307639ba9e24f7e90a722f8e71b496428de6aaba8652", "language": "en", "original_url": "/docs/17/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u5355\u72ec\u7684\u6587\u4ef6\u4e2d\u3002\u5bf9\u4e8e\u666e\u901a\u5173\u7cfb\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4ee5\u8868\u6216\u7d22\u5f15\u7684 \u6587\u4ef6\u8282\u70b9 \u7f16\u53f7\u547d\u540d\uff0c\u8be5\u7f16\u53f7\u53ef\u5728 pg_class . relfilenode \u4e2d\u627e\u5230\u3002\u4f46\u5bf9\u4e8e\u4e34\u65f6\u5173\u7cfb\uff0c\u6587\u4ef6\u540d\u7684\u5f62\u5f0f\u4e3a t BBB _ FFF \uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u8be5\u6587\u4ef6\u7684\u540e\u7aef\u8fdb\u7a0b\u53f7\uff0c FFF \u662f\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u9664\u4e86\u4e3b\u6587\u4ef6\uff08\u4e5f\u79f0\u4e3b\u5206\u652f\uff09\u4e4b\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a \u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04 \uff08\u89c1 \u7b2c 65.3 \u8282 \uff09\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u5173\u7cfb\u53ef\u7528\u7a7a\u95f2\u7a7a\u95f4\u7684\u4fe1\u606f\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u5b58\u653e\u5728\u4ee5\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u52a0\u4e0a _fsm \u540e\u7f00\u547d\u540d\u7684\u6587\u4ef6\u4e2d\u3002\u8868\u8fd8\u62e5\u6709 \u53ef\u89c1\u6027\u6620\u5c04 \uff0c\u5b58\u653e\u5728\u5e26\u6709 _vm \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff0c\u7528\u4e8e\u8ddf\u8e2a\u54ea\u4e9b\u9875\u9762\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u3002\u53ef\u89c1\u6027\u6620\u5c04\u5728 \u7b2c 65.4 \u8282 \u4e2d\u6709\u8fdb\u4e00\u6b65\u8bf4\u660e\u3002\u4e0d\u8bb0\u5f55 WAL \u7684\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u652f\uff0c\u79f0\u4e3a\u521d\u59cb\u5316\u5206\u652f\uff0c\u5b58\u653e\u5728\u5e26\u6709 _init \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff08\u89c1 \u7b2c 65.5 \u8282 \uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/17/storage-file-layout.html", "localization": {"status": "complete", "sources": [{"url": "/docs/17/storage-file-layout.html", "method": "same-major semantic node", "sha256": "560012604ef3e72433d00f8d7c10e196fc8d62ce42f886a6d72b9471e74a6257", "language": "zh", "matched_nodes": ["#STORAGE-FILE-LAYOUT/p[8]"]}], "language": "zh", "original_text": {"/versions/17/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the process number of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 65.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 65.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 65.5 ).", "/versions/17/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/17/facts/0/label": "Fork", "/versions/17/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f8a094a17eb99d584dd26d346a455a4bbe1eed7a67dbfb250b7a993f58108be6"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "18": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=18", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 18 English manual", "sha256": "8cdf46b5af669f41f0a77c2541863d63454ef8fbb44d22a75e576cf1a7efc9c9", "language": "en", "original_url": "/docs/18/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u5355\u72ec\u7684\u6587\u4ef6\u4e2d\u3002\u5bf9\u4e8e\u666e\u901a\u5173\u7cfb\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4ee5\u8868\u6216\u7d22\u5f15\u7684 \u6587\u4ef6\u8282\u70b9 \u7f16\u53f7\u547d\u540d\uff0c\u8be5\u7f16\u53f7\u53ef\u5728 pg_class . relfilenode \u4e2d\u627e\u5230\u3002\u4f46\u5bf9\u4e8e\u4e34\u65f6\u5173\u7cfb\uff0c\u6587\u4ef6\u540d\u7684\u5f62\u5f0f\u4e3a t BBB _ FFF \uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u8be5\u6587\u4ef6\u7684\u540e\u7aef\u8fdb\u7a0b\u53f7\uff0c FFF \u662f\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u9664\u4e86\u4e3b\u6587\u4ef6\uff08\u4e5f\u79f0\u4e3b\u5206\u652f\uff09\u4e4b\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a \u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04 \uff08\u89c1 \u7b2c 66.3 \u8282 \uff09\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u5173\u7cfb\u53ef\u7528\u7a7a\u95f2\u7a7a\u95f4\u7684\u4fe1\u606f\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u5b58\u653e\u5728\u4ee5\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u52a0\u4e0a _fsm \u540e\u7f00\u547d\u540d\u7684\u6587\u4ef6\u4e2d\u3002\u8868\u8fd8\u62e5\u6709 \u53ef\u89c1\u6027\u6620\u5c04 \uff0c\u5b58\u653e\u5728\u5e26\u6709 _vm \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff0c\u7528\u4e8e\u8ddf\u8e2a\u54ea\u4e9b\u9875\u9762\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u3002\u53ef\u89c1\u6027\u6620\u5c04\u5728 \u7b2c 66.4 \u8282 \u4e2d\u6709\u8fdb\u4e00\u6b65\u8bf4\u660e\u3002\u4e0d\u8bb0\u5f55 WAL \u7684\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u652f\uff0c\u79f0\u4e3a\u521d\u59cb\u5316\u5206\u652f\uff0c\u5b58\u653e\u5728\u5e26\u6709 _init \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff08\u89c1 \u7b2c 66.5 \u8282 \uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/18/storage-file-layout.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/storage-file-layout.html", "method": "same-major semantic node", "sha256": "55056edf7352b4e414c1366406a307a72af33aeda7854ef3a8cc1fa5c0db23ad", "language": "zh", "matched_nodes": ["#STORAGE-FILE-LAYOUT/p[8]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the process number of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 66.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 66.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 66.5 ).", "/versions/18/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/18/facts/0/label": "Fork", "/versions/18/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f8edf53ee2c0aa621d8a7f1bcf834eff5b6d06d46b458f1c29a8b9fd3ec62bc1"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "19": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=19", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "sources": [{"url": "https://pg.center/docs/19/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 19 English manual", "sha256": "64a2fe5f641ad71ef53151e63f4eab9f74fcedd6cde5ed49c6b1dac837c2ee2f", "language": "en", "original_url": "/docs/19/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u5355\u72ec\u7684\u6587\u4ef6\u4e2d\u3002\u5bf9\u4e8e\u666e\u901a\u5173\u7cfb\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4ee5\u8868\u6216\u7d22\u5f15\u7684 \u6587\u4ef6\u8282\u70b9 \u7f16\u53f7\u547d\u540d\uff0c\u8be5\u7f16\u53f7\u53ef\u5728 pg_class . relfilenode \u4e2d\u627e\u5230\u3002\u4f46\u5bf9\u4e8e\u4e34\u65f6\u5173\u7cfb\uff0c\u6587\u4ef6\u540d\u7684\u5f62\u5f0f\u4e3a t BBB _ FFF \uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u8be5\u6587\u4ef6\u7684\u540e\u7aef\u8fdb\u7a0b\u53f7\uff0c FFF \u662f\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u9664\u4e86\u4e3b\u6587\u4ef6\uff08\u4e5f\u79f0\u4e3b\u5206\u652f\uff09\u4e4b\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a \u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04 \uff08\u89c1 \u7b2c 66.3 \u8282 \uff09\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u5173\u7cfb\u53ef\u7528\u7a7a\u95f2\u7a7a\u95f4\u7684\u4fe1\u606f\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u5b58\u653e\u5728\u4ee5\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u52a0\u4e0a _fsm \u540e\u7f00\u547d\u540d\u7684\u6587\u4ef6\u4e2d\u3002\u8868\u8fd8\u62e5\u6709 \u53ef\u89c1\u6027\u6620\u5c04 \uff0c\u5b58\u653e\u5728\u5e26\u6709 _vm \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff0c\u7528\u4e8e\u8ddf\u8e2a\u54ea\u4e9b\u9875\u9762\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u3002\u53ef\u89c1\u6027\u6620\u5c04\u5728 \u7b2c 66.4 \u8282 \u4e2d\u6709\u8fdb\u4e00\u6b65\u8bf4\u660e\u3002\u4e0d\u8bb0\u5f55 WAL \u7684\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u652f\uff0c\u79f0\u4e3a\u521d\u59cb\u5316\u5206\u652f\uff0c\u5b58\u653e\u5728\u5e26\u6709 _init \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff08\u89c1 \u7b2c 66.5 \u8282 \uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/19/storage-file-layout.html", "localization": {"status": "complete", "sources": [{"url": "/docs/19/storage-file-layout.html", "method": "same-major semantic node", "sha256": "9a13b1f05755a7031d551a429c6d21bff35d965f098909408a39259ca751f156", "language": "zh", "matched_nodes": ["#STORAGE-FILE-LAYOUT/p[8]"]}], "language": "zh", "original_text": {"/versions/19/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the process number of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 66.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 66.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 66.5 ).", "/versions/19/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/19/facts/0/label": "Fork", "/versions/19/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "a4e6385d4809da26b5628e424929b885b1886ea0ab6b580a230ccea2c9358ada"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "20": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=20", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, "sources": [{"url": "https://pg.center/docs/devel/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 20 English manual", "sha256": "d6da97aa52fb525d5de5423d7993a2e42e7675a469110d0753f96dc8a66be1b0", "language": "en", "original_url": "/docs/devel/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u5355\u72ec\u7684\u6587\u4ef6\u4e2d\u3002\u5bf9\u4e8e\u666e\u901a\u5173\u7cfb\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4ee5\u8868\u6216\u7d22\u5f15\u7684 \u6587\u4ef6\u8282\u70b9 \u7f16\u53f7\u547d\u540d\uff0c\u8be5\u7f16\u53f7\u53ef\u5728 pg_class . relfilenode \u4e2d\u627e\u5230\u3002\u4f46\u5bf9\u4e8e\u4e34\u65f6\u5173\u7cfb\uff0c\u6587\u4ef6\u540d\u7684\u5f62\u5f0f\u4e3a t BBB _ FFF \uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u8be5\u6587\u4ef6\u7684\u540e\u7aef\u8fdb\u7a0b\u53f7\uff0c FFF \u662f\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u9664\u4e86\u4e3b\u6587\u4ef6\uff08\u4e5f\u79f0\u4e3b\u5206\u652f\uff09\u4e4b\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a \u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04 \uff08\u89c1 \u7b2c 66.3 \u8282 \uff09\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u5173\u7cfb\u53ef\u7528\u7a7a\u95f2\u7a7a\u95f4\u7684\u4fe1\u606f\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u5b58\u653e\u5728\u4ee5\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u52a0\u4e0a _fsm \u540e\u7f00\u547d\u540d\u7684\u6587\u4ef6\u4e2d\u3002\u8868\u8fd8\u62e5\u6709 \u53ef\u89c1\u6027\u6620\u5c04 \uff0c\u5b58\u653e\u5728\u5e26\u6709 _vm \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff0c\u7528\u4e8e\u8ddf\u8e2a\u54ea\u4e9b\u9875\u9762\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u3002\u53ef\u89c1\u6027\u6620\u5c04\u5728 \u7b2c 66.4 \u8282 \u4e2d\u6709\u8fdb\u4e00\u6b65\u8bf4\u660e\u3002\u4e0d\u8bb0\u5f55 WAL \u7684\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u652f\uff0c\u79f0\u4e3a\u521d\u59cb\u5316\u5206\u652f\uff0c\u5b58\u653e\u5728\u5e26\u6709 _init \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff08\u89c1 \u7b2c 66.5 \u8282 \uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/devel/storage-file-layout.html", "localization": {"status": "complete", "sources": [{"url": "/docs/devel/storage-file-layout.html", "method": "same-major semantic node", "sha256": "b9b6648fd2b429a3ecdd8415a850a0a45442ec89c62b4df06cbd7805b21a9363", "language": "zh", "matched_nodes": ["#STORAGE-FILE-LAYOUT/p[8]"]}], "language": "zh", "original_text": {"/summary": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the process number of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 66.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 66.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 66.5 ).", "/category": "Relation forks", "/versions/20/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the process number of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 66.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 66.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 66.5 ).", "/versions/20/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/20/facts/0/label": "Fork", "/versions/20/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "c5f3a6527d61a34b1fe1a9e8319fe11ad0d6debb80e47a8de30d1be8322c0e16"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}}}, "snapshot": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "main"}], "tables": [], "related": [{"url": "/wiki/storage/storage-file-layout/?v=18", "label": "\u6570\u636e\u5e93\u6587\u4ef6\u5e03\u5c40"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/storage-file-layout.html", "path": "storage-file-layout.html", "label": "PostgreSQL 18 English manual", "sha256": "8cdf46b5af669f41f0a77c2541863d63454ef8fbb44d22a75e576cf1a7efc9c9", "language": "en", "original_url": "/docs/18/storage-file-layout.html"}], "sections": [], "signature": "", "description": ["\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u90fd\u5b58\u50a8\u5728\u5355\u72ec\u7684\u6587\u4ef6\u4e2d\u3002\u5bf9\u4e8e\u666e\u901a\u5173\u7cfb\uff0c\u8fd9\u4e9b\u6587\u4ef6\u4ee5\u8868\u6216\u7d22\u5f15\u7684 \u6587\u4ef6\u8282\u70b9 \u7f16\u53f7\u547d\u540d\uff0c\u8be5\u7f16\u53f7\u53ef\u5728 pg_class . relfilenode \u4e2d\u627e\u5230\u3002\u4f46\u5bf9\u4e8e\u4e34\u65f6\u5173\u7cfb\uff0c\u6587\u4ef6\u540d\u7684\u5f62\u5f0f\u4e3a t BBB _ FFF \uff0c\u5176\u4e2d BBB \u662f\u521b\u5efa\u8be5\u6587\u4ef6\u7684\u540e\u7aef\u8fdb\u7a0b\u53f7\uff0c FFF \u662f\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u3002\u65e0\u8bba\u54ea\u79cd\u60c5\u51b5\uff0c\u9664\u4e86\u4e3b\u6587\u4ef6\uff08\u4e5f\u79f0\u4e3b\u5206\u652f\uff09\u4e4b\u5916\uff0c\u6bcf\u4e2a\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u4e00\u4e2a \u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04 \uff08\u89c1 \u7b2c 66.3 \u8282 \uff09\uff0c\u7528\u4e8e\u5b58\u50a8\u8be5\u5173\u7cfb\u53ef\u7528\u7a7a\u95f2\u7a7a\u95f4\u7684\u4fe1\u606f\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u5b58\u653e\u5728\u4ee5\u6587\u4ef6\u8282\u70b9\u7f16\u53f7\u52a0\u4e0a _fsm \u540e\u7f00\u547d\u540d\u7684\u6587\u4ef6\u4e2d\u3002\u8868\u8fd8\u62e5\u6709 \u53ef\u89c1\u6027\u6620\u5c04 \uff0c\u5b58\u653e\u5728\u5e26\u6709 _vm \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff0c\u7528\u4e8e\u8ddf\u8e2a\u54ea\u4e9b\u9875\u9762\u5df2\u77e5\u4e0d\u542b\u6b7b\u5143\u7ec4\u3002\u53ef\u89c1\u6027\u6620\u5c04\u5728 \u7b2c 66.4 \u8282 \u4e2d\u6709\u8fdb\u4e00\u6b65\u8bf4\u660e\u3002\u4e0d\u8bb0\u5f55 WAL \u7684\u8868\u548c\u7d22\u5f15\u8fd8\u6709\u7b2c\u4e09\u4e2a\u5206\u652f\uff0c\u79f0\u4e3a\u521d\u59cb\u5316\u5206\u652f\uff0c\u5b58\u653e\u5728\u5e26\u6709 _init \u540e\u7f00\u7684\u5206\u652f\u4e2d\uff08\u89c1 \u7b2c 66.5 \u8282 \uff09\u3002", "pg_relation_filepath() \u7ed9\u51fa\u4efb\u610f\u5173\u7cfb\u76f8\u5bf9\u4e8e PGDATA \u7684\u5b8c\u6574\u8def\u5f84\uff0c\u901a\u5e38\u53ef\u66ff\u4ee3\u8bb0\u5fc6\u4e0a\u8ff0\u591a\u6761\u89c4\u5219\u3002\u4f46\u8be5\u51fd\u6570\u4ec5\u8fd4\u56de\u5173\u7cfb\u4e3b\u5206\u53c9\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\uff1b\u8981\u627e\u5230\u8be5\u5173\u7cfb\u7684\u5168\u90e8\u6587\u4ef6\uff0c\u53ef\u80fd\u8fd8\u9700\u8ffd\u52a0\u5206\u6bb5\u53f7\u548c\uff0f\u6216 _fsm\u3001_vm\u3001_init \u540e\u7f00\u3002"], "manual_html": "", "manual_path": "/docs/18/storage-file-layout.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/storage-file-layout.html", "method": "same-major semantic node", "sha256": "55056edf7352b4e414c1366406a307a72af33aeda7854ef3a8cc1fa5c0db23ad", "language": "zh", "matched_nodes": ["#STORAGE-FILE-LAYOUT/p[8]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "Each table and index is stored in a separate file. For ordinary relations, these files are named after the table or index's filenode number, which can be found in pg_class . relfilenode . But for temporary relations, the file name is of the form t BBB _ FFF , where BBB is the process number of the backend which created the file, and FFF is the filenode number. In either case, in addition to the main file (a/k/a main fork), each table and index has a free space map (see Section 66.3 ), which stores information about free space available in the relation. The free space map is stored in a file named with the filenode number plus the suffix _fsm . Tables also have a visibility map , stored in a fork with the suffix _vm , to track which pages are known to have no dead tuples. The visibility map is described further in Section 66.4 . Unlogged tables and indexes have a third fork, known as the initialization fork, which is stored in a fork with the suffix _init (see Section 66.5 ).", "/versions/18/description/1": "The pg_relation_filepath() function shows the entire path (relative to PGDATA ) of any relation. It is often useful as a substitute for remembering many of the above rules. But keep in mind that this function just gives the name of the first segment of the main fork of the relation \u2014 you may need to append a segment number and/or _fsm , _vm , or _init to find all the files associated with the relation.", "/versions/18/facts/0/label": "Fork", "/versions/18/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "f8edf53ee2c0aa621d8a7f1bcf834eff5b6d06d46b458f1c29a8b9fd3ec62bc1"}, "comparison_data": {"fork": "main"}, "comparison_hash": "9d354a5e3ce1acfea4ce84c5aa725c3ea2533ffd4a9717a0a64fba8f72e4706c"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}