{"kind": "storage", "major": "18", "item": {"slug": "storage-vm", "name": "Visibility Map", "name_zh": "", "category": "Physical structures", "summary": "Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs.", "aliases": [], "content_hash": "d437137bb8fcfdb4a82465c408863dafd81704854b7bde4b6e182a103757f979", "versions": {"10": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/relopts/?v=10", "label": "Storage Parameters"}], "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": "/docs/10/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 10 English manual", "sha256": "5ec15a66fc48ed0b83c225f2edf1cb2a2c4aaeb669c584da2215199b1e08883c"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">67.4.\u00a0Visibility Map</h2>\n</div>\n</div>\n</div>\n\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/10/indexes-index-only-scans.html\" title=\"11.11.\u00a0Index-Only Scans\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/10/pgvisibility.html\" title=\"F.33.\u00a0pg_visibility\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/10/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "11": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/relopts/?v=11", "label": "Storage Parameters"}], "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": "/docs/11/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 11 English manual", "sha256": "33770d778927a787f912334491a9215dd162549fba2b0b3a57a399238db07f6f"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">69.4.\u00a0Visibility Map</h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/11/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/11/pgvisibility.html\" title=\"F.32.\u00a0pg_visibility\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/11/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "12": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=12", "label": "Table AM"}, {"url": "/wiki/relopts/?v=12", "label": "Storage Parameters"}], "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": "/docs/12/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 12 English manual", "sha256": "7fd07c042febcfa5d93640af2a2af7cb1b40f55cd9d583eefa43826ddb4ef4b2"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">69.4.\u00a0Visibility Map</h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/12/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/12/pgvisibility.html\" title=\"F.32.\u00a0pg_visibility\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/12/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "13": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=13", "label": "Table AM"}, {"url": "/wiki/relopts/?v=13", "label": "Storage Parameters"}], "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": "/docs/13/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 13 English manual", "sha256": "97ed3081308ea3b5ee3e8a7233d0785ae794a45d0113f0c326805fd4b5064778"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">69.4.\u00a0Visibility Map</h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/13/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/13/pgvisibility.html\" title=\"F.32.\u00a0pg_visibility\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/13/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "14": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=14", "label": "Table AM"}, {"url": "/wiki/relopts/?v=14", "label": "Storage Parameters"}], "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": "/docs/14/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 14 English manual", "sha256": "e5ef57e0c0e252b6aea29d1094a8c4f73755c2e43d715559c6b2bd18f6e7dcaf"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">70.4.\u00a0Visibility Map</h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/14/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/14/pgvisibility.html\" title=\"F.34.\u00a0pg_visibility\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/14/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "15": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=15", "label": "Table AM"}, {"url": "/wiki/relopts/?v=15", "label": "Storage Parameters"}], "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": "/docs/15/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 15 English manual", "sha256": "959bbe7dff19332835bb8c73580ad9fbfa3acf51b47613ace97eb2e95a725194"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">73.4.\u00a0Visibility Map</h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/15/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/15/pgvisibility.html\" title=\"F.36.\u00a0pg_visibility\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/15/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "16": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=16", "label": "Table AM"}, {"url": "/wiki/relopts/?v=16", "label": "Storage Parameters"}], "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": "/docs/16/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 16 English manual", "sha256": "28e96b85e3906ff2f5e96cfd5a6ce7aa0b328e321b2de83c9625339fd475f619"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">73.4.\u00a0Visibility Map </h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/16/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/16/pgvisibility.html\" title=\"F.36.\u00a0pg_visibility \u2014 visibility map information and utilities\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/16/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "17": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=17", "label": "Table AM"}, {"url": "/wiki/relopts/?v=17", "label": "Storage Parameters"}], "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": "/docs/17/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 17 English manual", "sha256": "379eaf2c677be957ae9b4d92b7d859f6bdd433fb5c7829ff36227f35ff36f2cb"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">65.4.\u00a0Visibility Map </h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/17/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/17/pgvisibility.html\" title=\"F.34.\u00a0pg_visibility \u2014 visibility map information and utilities\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/17/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "18": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=18", "label": "Table AM"}, {"url": "/wiki/relopts/?v=18", "label": "Storage Parameters"}], "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": "/docs/18/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 18 English manual", "sha256": "26b3512091ad6215922297afdfbf457448a1d6dee9b2df2c69ed5b25cd3df5e0"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">66.4.\u00a0Visibility Map </h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/18/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/18/pgvisibility.html\" title=\"F.36.\u00a0pg_visibility \u2014 visibility map information and utilities\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/18/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "19": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=19", "label": "Table AM"}, {"url": "/wiki/relopts/?v=19", "label": "Storage Parameters"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "sources": [{"url": "/docs/19/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 19 English manual", "sha256": "b294d3053598cf2088deaef6c1284d40337744e2a5ec9d375ed3566496bd7695"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">66.4.\u00a0Visibility Map </h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/19/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/19/pgvisibility.html\" title=\"F.38.\u00a0pg_visibility \u2014 visibility map information and utilities\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/19/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "20": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=20", "label": "Table AM"}, {"url": "/wiki/relopts/?v=20", "label": "Storage Parameters"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, "sources": [{"url": "/docs/devel/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 20 English manual", "sha256": "e4cfe140b76d0a80b28ff9e5d3a3d48145297ba574e70f049afc8cd2b72abb1c"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">66.4.\u00a0Visibility Map </h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/devel/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/devel/pgvisibility.html\" title=\"F.38.\u00a0pg_visibility \u2014 visibility map information and utilities\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/devel/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}}}, "snapshot": {"facts": [{"label": "Definition scope", "value": "Same-version core physical storage documentation"}], "tables": [], "related": [{"url": "/wiki/tableam/?v=18", "label": "Table AM"}, {"url": "/wiki/relopts/?v=18", "label": "Storage Parameters"}], "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": "/docs/18/storage-vm.html", "path": "storage-vm.html", "label": "PostgreSQL 18 English manual", "sha256": "26b3512091ad6215922297afdfbf457448a1d6dee9b2df2c69ed5b25cd3df5e0"}], "sections": [], "signature": "", "description": ["Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a _vm suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called 12345_vm , in the same directory as the main relation file. Note that indexes do not have VMs."], "manual_html": "<div class=\"sect1\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">66.4.\u00a0Visibility Map </h2>\n</div>\n</div>\n</div>\n<p>Each heap relation has a Visibility Map (VM) to keep track of which pages contain only tuples that are known to be visible to all active transactions; it also keeps track of which pages contain only frozen tuples. It's stored alongside the main relation data in a separate relation fork, named after the filenode number of the relation, plus a <code class=\"literal\">_vm</code> suffix. For example, if the filenode of a relation is 12345, the VM is stored in a file called <code class=\"filename\">12345_vm</code>, in the same directory as the main relation file. Note that indexes do not have VMs.</p>\n<p>The visibility map stores two bits per heap page. The first bit, if set, indicates that the page is all-visible, or in other words that the page does not contain any tuples that need to be vacuumed. This information can also be used by <a class=\"link\" href=\"/docs/18/indexes-index-only-scans.html\" title=\"11.9.\u00a0Index-Only Scans and Covering Indexes\"><em class=\"firstterm\">index-only scans</em></a> to answer queries using only the index tuple. The second bit, if set, means that all tuples on the page have been frozen. That means that even an anti-wraparound vacuum need not revisit the page.</p>\n<p>The map is conservative in the sense that we make sure that whenever a bit is set, we know the condition is true, but if a bit is not set, it might or might not be true. Visibility map bits are only set by vacuum, but are cleared by any data-modifying operations on a page.</p>\n<p>The <a class=\"xref\" href=\"/docs/18/pgvisibility.html\" title=\"F.36.\u00a0pg_visibility \u2014 visibility map information and utilities\">pg_visibility</a> module can be used to examine the information stored in the visibility map.</p>\n</div>", "manual_path": "/docs/18/storage-vm.html", "comparison_data": {"layouts": []}, "comparison_hash": "27341929154bfb55531f03501322b65af719c5561f3c4ddc9528a14aa4df69b5"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}