{"kind": "storage", "major": "18", "item": {"slug": "fork-vm", "name": "vm 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": "4fece53005cfa9035104c0f2c434ff8cb208980c3478ff22898b6123f7dce391", "versions": {"10": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/10/facts/0/label": "Fork", "/versions/10/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "fa712fd451d62452af0044e2e8678c819e99d4dcdcadd57441c9b18b4294192f"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "11": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/11/facts/0/label": "Fork", "/versions/11/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "cf1adadd2d00c06db59e5ab74cb100acb2a19f381fae650426a376baa660fcba"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "12": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/12/facts/0/label": "Fork", "/versions/12/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "ce3dcddcd8c71d0eee1ceebfaa9aa0e9afd7597abf09ebeb8c669559604b2496"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "13": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/13/facts/0/label": "Fork", "/versions/13/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "4c9b6973e1f31eecf21715482a5cc78410409af9acaa67825365088925e40409"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "14": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/14/facts/0/label": "Fork", "/versions/14/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "b8d57d9936d426efaf9f8b7f880eced623dec63b91f61c4b7e8001c5adcb984a"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "15": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/15/facts/0/label": "Fork", "/versions/15/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "2267d4be0f47ac5a7aef18bef291c26428ddb4e0d5f0ebfffd8e76b430f4a93b"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "16": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/16/facts/0/label": "Fork", "/versions/16/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "525351114d31cc3070310b9ba126eb35ad889ab96b476e230ca115b45306fa0a"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "17": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/17/facts/0/label": "Fork", "/versions/17/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "3fc5d89c41628689a88f3ae2f788418afd603f6fefa27e1a5e44064e08d5cf3a"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "18": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/18/facts/0/label": "Fork", "/versions/18/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "bc8a83b17a765d74e4370a07dbb0da7d951e57d581cc3dedd912405dfad93922"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "19": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/19/facts/0/label": "Fork", "/versions/19/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "047ff7592d2c1edcf047a2451bd70c151d369a1b66856f3842b1e8f40295ad21"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "20": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/20/facts/0/label": "Fork", "/versions/20/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "051871baa36399755f87de0b67715fbb5f5f6c09bda5c54e8b26b8819ab37adf"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}}}, "snapshot": {"facts": [{"label": "\u5173\u7cfb\u5206\u53c9", "value": "vm"}], "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", "\u8868\u6216\u7d22\u5f15\u8d85\u8fc7 1 GB \u65f6\uff0c\u4f1a\u62c6\u5206\u4e3a\u4ee5 GB \u4e3a\u5355\u4f4d\u7684\u5206\u6bb5\u3002\u7b2c\u4e00\u4e2a\u5206\u6bb5\u7684\u6587\u4ef6\u540d\u4e0e filenode \u76f8\u540c\uff0c\u4e4b\u540e\u4f9d\u6b21\u4e3a filenode.1\u3001filenode.2 \u7b49\u3002\u8fd9\u53ef\u907f\u514d\u67d0\u4e9b\u5e73\u53f0\u7684\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u30021 GB \u53ea\u662f\u9ed8\u8ba4\u5206\u6bb5\u5927\u5c0f\uff0c\u53ef\u5728\u7f16\u8bd1 PostgreSQL \u65f6\u901a\u8fc7 --with-segsize \u914d\u7f6e\u9009\u9879\u8c03\u6574\u3002\u7a7a\u95f2\u7a7a\u95f4\u6620\u5c04\u548c\u53ef\u89c1\u6027\u6620\u5c04\u5206\u53c9\u539f\u5219\u4e0a\u4e5f\u53ef\u80fd\u9700\u8981\u591a\u4e2a\u5206\u6bb5\uff0c\u4f46\u5b9e\u8df5\u4e2d\u5f88\u5c11\u53d1\u751f\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": "When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments . The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc. This arrangement avoids problems on platforms that have file size limitations. (Actually, 1 GB is just the default segment size. The segment size can be adjusted using the configuration option --with-segsize when building PostgreSQL .) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice.", "/versions/18/facts/0/label": "Fork", "/versions/18/related/0/label": "Database file layout"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "bc8a83b17a765d74e4370a07dbb0da7d951e57d581cc3dedd912405dfad93922"}, "comparison_data": {"fork": "vm"}, "comparison_hash": "0f7e444c74befed2e9e038b208922f35c10a3caa1ec789947fda5dd19339d4d4"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}