{"id":10060,"date":"2025-11-03T10:30:59","date_gmt":"2025-11-03T09:30:59","guid":{"rendered":"https:\/\/www.credativ.de\/?p=10060"},"modified":"2026-05-02T19:31:15","modified_gmt":"2026-05-02T17:31:15","slug":"postgresql-18-enables-data%e2%80%91checksums-by-default","status":"publish","type":"post","link":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/","title":{"rendered":"PostgreSQL 18 enables data\u2011checksums by default"},"content":{"rendered":"<div>\n<p>As I explained in my talk on PostgreSQL Conference Europe 2025, data corruption can be silently present in any PostgreSQL database and will remain undetected until we physically read corrupted data. There can be many reasons why some data blocks in tables or other objects can be damaged. Even modern storage hardware is far from being infallible. Binary backups done with pg_basebackup tool &#8211; which is very common backup strategy in PostgreSQL environment &#8211; leave these problems hidden. Because they do not check data but copy whole data files as they are. With release of PostgreSQL 18, the community decided to turn on data\u2011checksums by default \u2013 a major step toward early detection of these failures. This post examines how PostgreSQL implements checksums, how it handles checksum failures, and how we can enable them on existing clusters.<\/p>\n<\/div>\n<p><!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-10071\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-300x200.jpg\" alt=\"Why PostgreSQL Checksums matter\" width=\"300\" height=\"200\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-300x200.jpg 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-1024x683.jpg 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-768x512.jpg 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-600x400.jpg 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-610x407.jpg 610w, https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-180x120.jpg 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer.jpg 1536w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h5>Why checksums matter<\/h5>\n<div>\n<p>A <a href=\"\/?category-software=postgresql\">PostgreSQL<\/a> table or index is stored in 8 KB pages. When a page is written to disk, PostgreSQL computes a 16\u2011bit checksum using every byte of the page (except the checksum field itself) and the page\u2019s physical block address. The checksum is stored in the page header. On every read, PostgreSQL recalculates the checksum and compares it against the stored value. Because the block address is part of the calculation, the system detects both bit flips within the page and pages written to the wrong place. Checksums are not maintained while the page sits in shared buffers \u2013 they are computed only when the page is flushed from the buffer cache to the operating system page cache. Consequently, an incorrect in\u2011memory page cannot be detected until it is written and read again. PostgreSQL uses a fast FNV\u20111a hash (with CRC32C on WAL records) that is optimized for performance. On typical hardware the cost of calculating checksum seems to be small. A benchmarking studies found the penalty is usually less than 2 % for normal workloads. PostgreSQL 18\u2019s release notes acknowledge that the overhead is non\u2011zero but accept it for the benefit of data integrity.<\/p>\n<\/div>\n<h5>Changes in PostgreSQL 18<\/h5>\n<div>Version 18 enables data\u2011checksums by default. In earlier versions, initdb required the &#8211;data\u2011checksums flag. The new release notes explicitly list the change in the incompatibilities section: \u201cChange initdb default to enable data checksums\u2026 Checksums can be disabled with the new &#8211;no\u2011data\u2011checksums option\u201d.<\/div>\n<div><\/div>\n<div>For DBAs this default change has two important consequences:<\/div>\n<ul>\n<li>Cluster upgrades must match checksum settings (explicitly mentioned in PostgreSQL 18 release notes). When upgrading via pg_upgrade, the source and target clusters must both have checksums enabled or disabled. If you need to upgrade from an older cluster without checksums, initialise the new cluster with &#8211;no\u2011data\u2011checksums or enable checksums on the old cluster first.<\/li>\n<li>Statistics to monitor failures &#8211; PostgreSQL already has two columns in pg_stat_database: checksum_failures, counting the number of pages whose checksums failed, and checksum_last_failure, the timestamp of the most recent failure. These metrics allow you to alert on corruption events across all databases in the cluster.<\/li>\n<\/ul>\n<div>\n<p>To see whether our cluster uses data\u2011checksums, we shall inspect the read\u2011only system variable data_checksums using command: &#8220;SHOW data_checksums;&#8221; A result of &#8220;ON&#8221; means that data\u2011page checksums are active.<\/p>\n<\/div>\n<h5>Enabling and disabling checksums with pg_checksums<\/h5>\n<div>Checksums are a cluster\u2011wide property and cannot be toggled while the server is running. PostgreSQL ships the pg_checksums utility to check, enable or disable checksums. Key points from the documentation:<\/div>\n<ul>\n<li>The cluster must be shut down cleanly before running pg_checksums.<\/li>\n<li>Verifying checksums (&#8211;check) scans every file in PGDATA and returns a non\u2011zero exit code if any mismatch is found.<\/li>\n<li>Enabling checksums (&#8211;enable) rewrites each relation block, updating the checksum field on disk. Disabling checksums (&#8211;disable) only updates the control file \u2013 it does not rewrite pages.<\/li>\n<li>Options such as &#8211;progress display progress, &#8211;no-sync skips fsync after modifications, and &#8211;filenode restricts verification to a specific relation.<\/li>\n<li>On large or replicated clusters, enabling checksums can take a long time; all standbys must be stopped or recreated so that all nodes maintain the same checksum state (explicitly mentioned in documentation).<\/li>\n<\/ul>\n<h5>Upgrade strategy<\/h5>\n<div>If you we upgrading a pre\u201118 cluster without checksums, we have two options:<\/div>\n<ul>\n<li>Disable checksums on the new cluster: run initdb with &#8211;no\u2011data\u2011checksums so that pg_upgrade allows the migration. After the upgrade you can enable checksums offline using pg_checksums &#8211;enable.<\/li>\n<li>Enable checksums on the old cluster first: shut down the old server, run pg_checksums &#8211;enable -D $PGDATA (on every node if using streaming replication), then start the server and verify the new SHOW data_checksums value. When you initialise PostgreSQL 18, it will inherit the enabled state.<\/li>\n<\/ul>\n<h5>Handling checksum failures<\/h5>\n<div>When PostgreSQL detects a checksum mismatch, it issues a warning and raises an error. Two developer\u2011only GUCs control what happens next. They should never be enabled in normal operation, but DBAs may use them for data recovery:<\/div>\n<ul>\n<li><em>ignore_checksum_failure<\/em> \u2013 When off (default), the server aborts the current transaction on the first checksum error. Setting it to on logs a warning and continues processing, allowing queries to skip over corrupted blocks. This option may hide corruption, cause crashes or return incorrect data; only superusers can change it.<\/li>\n<li><em>zero_damaged_pages<\/em> \u2013 When a damaged page header or checksum is detected, setting this parameter to on causes PostgreSQL to replace the entire 8 KB page in memory with zeroes and then continue processing. The zeroed page is later written to disk, destroying all tuples on that page. Use this only when you have exhausted backup or standby options. Turning zero_damaged_pages off does not restore data and only affects how future corrupt pages are handled.<\/li>\n<\/ul>\n<div>The following simplified examples illustrate these settings:<\/div>\n<div><\/div>\n<blockquote>\n<pre>-- With ignore_checksum_failure=off the query stops on the first error:\r\ntest=# SELECT * FROM pg_toast.pg_toast_17453;\r\nWARNING:\u00a0 page verification failed, calculated checksum 19601 but expected 152\r\nERROR:\u00a0 \u00a0 invalid page in block 0 of relation base\/16384\/16402\r\n\r\n-- With ignore_checksum_failure=on, the server logs warnings and continues scanning until it find good data:\r\ntest=# SET ignore_checksum_failure = ON;\r\ntest=# SELECT * FROM pg_toast.pg_toast_17453;\r\nWARNING:\u00a0 page verification failed, calculated checksum 29668 but expected 57724\r\nWARNING:\u00a0 page verification failed, calculated checksum 63113 but expected 3172\r\nWARNING:\u00a0 page verification failed, calculated checksum 59128 but expected 3155<\/pre>\n<div><\/div>\n<\/blockquote>\n<div>With zero_damaged_pages=on, invalid pages are zeroed out rather than causing an error. The query continues, but the data on those pages is lost:<\/div>\n<div><\/div>\n<blockquote>\n<pre>test=# SET zero_damaged_pages = ON;\r\ntest=# SELECT * FROM pg_toast.pg_toast_17453;\r\nWARNING:\u00a0 page verification failed, calculated checksum 29668 but expected 57724\r\nWARNING:\u00a0 invalid page in block 204 of relation base\/16384\/17464; zeroing out page\r\nWARNING:\u00a0 page verification failed, calculated checksum 63113 but expected 3172\r\nWARNING:\u00a0 invalid page in block 222 of relation base\/16384\/17464; zeroing out page<\/pre>\n<\/blockquote>\n<div>\n<p>Internally the buffer manager performs this zeroing by calling memset() on the 8 KB page when the verification fails and the READ_BUFFERS_ZERO_ON_ERROR flag is set. If the flag is not set, the buffer is marked invalid and an error is thrown. We must of course understand, that checksums and ignore_checksum_failure and zero_damaged_pages settings cannot repair damages data blocks. These options are last resorts for salvaging remaining rows. Their usage will always lead to data loses. Once page is zeroed out in the memory, its previous corrupted content cannot be restored, even if we set zero_damaged_pages back to OFF. To get original good data back we must restore them from a known good backup or standby.<\/p>\n<\/div>\n<h5>Autovacuum interaction<\/h5>\n<div>\n<p>Vacuum processes may encounter corrupted pages while scanning tables. Because automatically zeroing pages could silently destroy data, the autovacuum launcher forcibly disables zero_damaged_pages for its workers. The source code calls SetConfigOption with &#8220;zero_damaged_pages&#8221;, &#8220;false&#8221; with a comment explaining that this dangerous option should never be applied non\u2011interactively. This way corrupted pages will be zeroed out only when we directly work with them.<\/p>\n<\/div>\n<h5>Why we shall embrace checksums<\/h5>\n<div>Data corruption on the database which does not use checksums can lead to much more problematic situations. Without checksums only pages with clearly damaged page header can be detected and zeroed out. Below we can see test in the PostgreSQL code, which shows that even this detection is not easy without checksums &#8211; see the comment:<\/div>\n<div><\/div>\n<blockquote>\n<pre>\/*\r\n* The following checks don't prove the header is correct, only that\r\n* it looks sane enough to allow into the buffer pool. Later usage of\r\n* the block can still reveal problems, which is why we offer the\r\n* checksum option.\r\n*\/\r\nif ((p-&gt;pd_flags &amp; ~PD_VALID_FLAG_BITS) == 0 &amp;&amp;\r\np-&gt;pd_lower &lt;= p-&gt;pd_upper &amp;&amp;\r\np-&gt;pd_upper &lt;= p-&gt;pd_special &amp;&amp;\r\np-&gt;pd_special &lt;= BLCKSZ &amp;&amp;\r\np-&gt;pd_special == MAXALIGN(p-&gt;pd_special))\r\nheader_sane = true;\r\n\r\nif (header_sane &amp;&amp; !checksum_failure)\r\nreturn true;<\/pre>\n<\/blockquote>\n<div>Generally this code tests if important values in the page header fit into expected relationships of their values. Healthy data page is shown here:<\/div>\n<div><\/div>\n<blockquote>\n<pre>SELECT * FROM page_header(get_raw_page('pg_toast.pg_toast_32840', 100));\r\n  \u00a0 lsn\u00a0 \u00a0 \u00a0| checksum | flags | lower | upper | special | pagesize | version | prune_xid\r\n------------+----------+-------+-------+-------+---------+----------+---------+-----------\r\n 0\/2B2FCD68 |\u00a0 \u00a0 \u00a0 \u00a0 0 |\u00a0 \u00a0 \u00a04 |\u00a0 \u00a0 40 |\u00a0 \u00a0 64 |\u00a0 \u00a0 8192 |\u00a0 \u00a0 \u00a08192 |\u00a0 \u00a0 \u00a0 \u00a04 |\u00a0 \u00a0 \u00a0 \u00a0 \u00a00\r\n(1 row)<\/pre>\n<\/blockquote>\n<div>So, only page header with clearly damaged flag bits, lower, upper, special and\/or pagesize can be safely detected as corrupted. In that case we will get an error message:<\/div>\n<div><\/div>\n<blockquote>\n<pre>ERROR: XX001-invalid page in block 578 of relation base\/16384\/28751<\/pre>\n<\/blockquote>\n<div><\/div>\n<div>And only these pages can be zeroed out. But if header is intact (or at least passes the test above), we can get many different errors, which are caused either by damaged Item IDs array or damaged system columns in tuples.<\/div>\n<div><\/div>\n<div>Damaged Item IDs array will contain wrong offsets to the beginning of tuple and wrong length of tuple. These corrupted numbers can cause invalid memory allocation request or even crash of the session reading data:<\/div>\n<div><\/div>\n<blockquote>\n<pre>ERROR:\u00a0 invalid memory alloc request size 18446744073709551594\r\nDEBUG:\u00a0 server process (PID 76) was terminated by signal 11: Segmentation fault<\/pre>\n<\/blockquote>\n<div>If Item IDs array values are intact, but tuples are corrupted, we usually see different errors signalizing that system columns xmin and xmax, which are crucial for check of visibility in multiversion concurrency control system, contain useless values:<\/div>\n<div><\/div>\n<blockquote>\n<pre>58P01 - could not access status of transaction 3047172894\r\nXX000 - MultiXactId 1074710815 has not been created yet -- apparent wraparound\r\nWARNING:\u00a0 Concurrent insert in progress within table \"test_table_bytea\"<\/pre>\n<\/blockquote>\n<div><\/div>\n<div>\n<p>With these errors, we can face difficult and time consuming manual repairs and data salvage if we do not have reliable backup which we could use for restoring data. These descriptions clearly show that enabling data checksums is a very important change for PostgreSQL community.<\/p>\n<\/div>\n<h5>Conclusion<\/h5>\n<div>PostgreSQL 18\u2019s decision to enable data\u2011page checksums reflects experience showing that the performance impact is minimal and the benefits enormous. Checksums detect a wide range of silent corruption events so we can easier diagnose cases when hardware goes awry. They also make salvage of good data much quicker and easier &#8211; if for any reason reliable backups are not available.<\/div>\n<div><\/div>\n<div>Read more:<\/div>\n<ul>\n<li><a href=\"https:\/\/www.credativ.de\/en\/blog\/postgresql\/postgresql-11-checksums-and-basebackups\/\">PostgreSQL checksums &amp; base backup<\/a><\/li>\n<\/ul>\n<div>\n<h5>We are happy to help!<\/h5>\n<p>Whether it&#8217;s <a href=\"https:\/\/www.credativ.de\/en\/portfolio\/solutions\/automation\/\">Ansible<\/a>, <a href=\"\/?category-software=debian\">Debian<\/a>, <a href=\"https:\/\/www.credativ.de\/en\/portfolio\/support\/proxmox-virtualization\/\">Proxmox<\/a>, <a href=\"https:\/\/www.credativ.de\/en\/portfolio\/solutions\/kubernetes\/\">Kubernetes<\/a> or <a href=\"https:\/\/www.credativ.de\/en\/portfolio\/support\/postgresql-competence-center\/\"><strong>PostgreSQL<\/strong><\/a>, with over 25+ years of development and service experience in the open source space, credativ GmbH can assist you with unparalleled and individually customizable support. We are there to help and assist you in all your open source infrastructure needs.<\/p>\n<p>Do you have any questions about our article or would you like credativ&#8217;s specialists to take a look at another software of your choice?<br \/>\nThen stop by and get in touch via our <a href=\"https:\/\/www.credativ.de\/en\/contact-proxmox\/\">contact form<\/a> or drop us an email at <a href=\"mailto:info@credativ.de\">info@credativ.de<\/a>.<\/p>\n<h5>About credativ<\/h5>\n<p>The <a href=\"https:\/\/www.credativ.de\">credativ GmbH<\/a> is a manufacturer-independent consulting and service company located in Moenchengladbach, Germany.<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As I explained in my talk on PostgreSQL Conference Europe 2025, data corruption can be silently present in any PostgreSQL database and will remain undetected until we physically read corrupted data. There can be many reasons why some data blocks in tables or other objects can be damaged. Even modern storage hardware is far from [&hellip;]<\/p>\n","protected":false},"author":82,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1708],"tags":[1707,1887,2098,1801],"class_list":["post-10060","post","type-post","status-publish","format-standard","hentry","category-postgresql-en","tag-planetpostgres","tag-planetpostgresql","tag-postgresql-18","tag-postgresql-en"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL 18 enables data\u2011checksums by default - credativ\u00ae<\/title>\n<meta name=\"description\" content=\"PostgreSQL 18 enables data checksums by default. Discover the benefits for data integrity and error detection.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 18 enables data\u2011checksums by default\" \/>\n<meta property=\"og:description\" content=\"Protect your PostgreSQL database with PostgreSQL data checksums. We explain how you can activate and use them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/\" \/>\n<meta property=\"og:site_name\" content=\"credativ\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/credativDE\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-03T09:30:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-02T17:31:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Josef Machytka\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"PostgreSQL 18 enables data checksums by default. Discover the benefits for data integrity and error detection.\" \/>\n<meta name=\"twitter:creator\" content=\"@credativde\" \/>\n<meta name=\"twitter:site\" content=\"@credativde\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Josef Machytka\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/\"},\"author\":{\"name\":\"Josef Machytka\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/b5f03833b09ed0acd1c8d3307d05bd1a\"},\"headline\":\"PostgreSQL 18 enables data\u2011checksums by default\",\"datePublished\":\"2025-11-03T09:30:59+00:00\",\"dateModified\":\"2026-05-02T17:31:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/\"},\"wordCount\":1629,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Designer-300x200.jpg\",\"keywords\":[\"planetpostgres\",\"planetpostgresql\",\"postgresql 18\",\"PostgreSQL\u00ae\"],\"articleSection\":[\"PostgreSQL\u00ae\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/\",\"name\":\"PostgreSQL 18 enables data\u2011checksums by default - credativ\u00ae\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Designer-300x200.jpg\",\"datePublished\":\"2025-11-03T09:30:59+00:00\",\"dateModified\":\"2026-05-02T17:31:15+00:00\",\"description\":\"PostgreSQL 18 enables data checksums by default. Discover the benefits for data integrity and error detection.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Designer-300x200.jpg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Designer-300x200.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 18 enables data\u2011checksums by default\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"name\":\"credativ GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\",\"name\":\"credativ\u00ae\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"logo\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#local-main-organization-logo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/credativDE\\\/\",\"https:\\\/\\\/x.com\\\/credativde\",\"https:\\\/\\\/mastodon.social\\\/@credativde\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/credativ-gmbh\",\"https:\\\/\\\/www.instagram.com\\\/credativ\\\/\"],\"description\":\"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\\\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.\",\"legalName\":\"credativ GmbH\",\"foundingDate\":\"2025-03-01\",\"duns\":\"316387060\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"},\"address\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#local-main-place-address\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":\"51.1732374\",\"longitude\":\"6.392010099999999\"},\"telephone\":[\"+4921619174200\",\"08002733284\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"telephone\":\"08002733284\",\"email\":\"vertrieb@credativ.de\"},\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"},{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Saturday\",\"Sunday\"],\"opens\":\"00:00\",\"closes\":\"00:00\"}],\"email\":\"info@credativ.de\",\"areaServed\":\"D-A-CH\",\"vatID\":\"DE452151696\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/b5f03833b09ed0acd1c8d3307d05bd1a\",\"name\":\"Josef Machytka\"},{\"@type\":\"PostalAddress\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#local-main-place-address\",\"streetAddress\":\"Hennes-Weisweiler-Allee 23\",\"addressLocality\":\"M\u00f6nchengladbach\",\"postalCode\":\"41179\",\"addressRegion\":\"Deutschland\",\"addressCountry\":\"DE\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/postgresql-en\\\/postgresql-18-enables-datachecksums-by-default\\\/#local-main-organization-logo\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"caption\":\"credativ\u00ae\"}]}<\/script>\n<meta name=\"geo.placename\" content=\"M\u00f6nchengladbach\" \/>\n<meta name=\"geo.position\" content=\"51.1732374;6.392010099999999\" \/>\n<meta name=\"geo.region\" content=\"Germany\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL 18 enables data\u2011checksums by default - credativ\u00ae","description":"PostgreSQL 18 enables data checksums by default. Discover the benefits for data integrity and error detection.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 18 enables data\u2011checksums by default","og_description":"Protect your PostgreSQL database with PostgreSQL data checksums. We explain how you can activate and use them.","og_url":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/","og_site_name":"credativ\u00ae","article_publisher":"https:\/\/www.facebook.com\/credativDE\/","article_published_time":"2025-11-03T09:30:59+00:00","article_modified_time":"2026-05-02T17:31:15+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer.jpg","type":"image\/jpeg"}],"author":"Josef Machytka","twitter_card":"summary_large_image","twitter_description":"PostgreSQL 18 enables data checksums by default. Discover the benefits for data integrity and error detection.","twitter_creator":"@credativde","twitter_site":"@credativde","twitter_misc":{"Written by":"Josef Machytka","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#article","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/"},"author":{"name":"Josef Machytka","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/b5f03833b09ed0acd1c8d3307d05bd1a"},"headline":"PostgreSQL 18 enables data\u2011checksums by default","datePublished":"2025-11-03T09:30:59+00:00","dateModified":"2026-05-02T17:31:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/"},"wordCount":1629,"commentCount":0,"publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-300x200.jpg","keywords":["planetpostgres","planetpostgresql","postgresql 18","PostgreSQL\u00ae"],"articleSection":["PostgreSQL\u00ae"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/www.credativ.de\/#organization"}},{"@type":"WebPage","@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/","url":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/","name":"PostgreSQL 18 enables data\u2011checksums by default - credativ\u00ae","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#primaryimage"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-300x200.jpg","datePublished":"2025-11-03T09:30:59+00:00","dateModified":"2026-05-02T17:31:15+00:00","description":"PostgreSQL 18 enables data checksums by default. Discover the benefits for data integrity and error detection.","breadcrumb":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#primaryimage","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-300x200.jpg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/11\/Designer-300x200.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.credativ.de\/en\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 18 enables data\u2011checksums by default"}]},{"@type":"WebSite","@id":"https:\/\/www.credativ.de\/en\/#website","url":"https:\/\/www.credativ.de\/en\/","name":"credativ GmbH","description":"","publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.credativ.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","Place"],"@id":"https:\/\/www.credativ.de\/en\/#organization","name":"credativ\u00ae","url":"https:\/\/www.credativ.de\/en\/","logo":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#local-main-organization-logo"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#local-main-organization-logo"},"sameAs":["https:\/\/www.facebook.com\/credativDE\/","https:\/\/x.com\/credativde","https:\/\/mastodon.social\/@credativde","https:\/\/www.linkedin.com\/company\/credativ-gmbh","https:\/\/www.instagram.com\/credativ\/"],"description":"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.","legalName":"credativ GmbH","foundingDate":"2025-03-01","duns":"316387060","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"},"address":{"@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#local-main-place-address"},"geo":{"@type":"GeoCoordinates","latitude":"51.1732374","longitude":"6.392010099999999"},"telephone":["+4921619174200","08002733284"],"contactPoint":{"@type":"ContactPoint","telephone":"08002733284","email":"vertrieb@credativ.de"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":["Saturday","Sunday"],"opens":"00:00","closes":"00:00"}],"email":"info@credativ.de","areaServed":"D-A-CH","vatID":"DE452151696"},{"@type":"Person","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/b5f03833b09ed0acd1c8d3307d05bd1a","name":"Josef Machytka"},{"@type":"PostalAddress","@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#local-main-place-address","streetAddress":"Hennes-Weisweiler-Allee 23","addressLocality":"M\u00f6nchengladbach","postalCode":"41179","addressRegion":"Deutschland","addressCountry":"DE"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/postgresql-en\/postgresql-18-enables-datachecksums-by-default\/#local-main-organization-logo","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","caption":"credativ\u00ae"}]},"geo.placename":"M\u00f6nchengladbach","geo.position":{"lat":"51.1732374","long":"6.392010099999999"},"geo.region":"Germany"},"_links":{"self":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/10060","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/users\/82"}],"replies":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/comments?post=10060"}],"version-history":[{"count":10,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/10060\/revisions"}],"predecessor-version":[{"id":18944,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/10060\/revisions\/18944"}],"wp:attachment":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/media?parent=10060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/categories?post=10060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/tags?post=10060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}