{"id":35692,"date":"2024-11-13T12:58:54","date_gmt":"2024-11-13T11:58:54","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=35692"},"modified":"2024-11-13T12:58:58","modified_gmt":"2024-11-13T11:58:58","slug":"postgresql-maybe-we-should-give-zfs-a-chance-2-testing","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/","title":{"rendered":"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing"},"content":{"rendered":"\n<p>In the <a href=\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-1-baseline\/\" target=\"_blank\" rel=\"noreferrer noopener\">last post<\/a> we&#8217;ve set the baseline for comparing ext4 to zfs when it comes to PostgreSQL. We&#8217;ve ended with two PostgreSQL clusters, one running on the ext4 file system while the other is running on top of the ZFS file system. In this post we&#8217;ll look at how they compare when it comes to performance and the data size on disk.<\/p>\n\n\n\n<p><strong>Warning<\/strong>: Please test for your own using your specific workloads before taking anything for granted you read here. What follows are very basic tests and that might look totally different in your environment.<\/p>\n\n\n\n<p>Before we start with any tests, lets have a look at the the size of the data directories of both clusters. On the ext4 file system the size of the empty cluster is 39MB, which is expected:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] du -sh \/u02\/pgdata\/ext4\/pg\/\n39M     \/u02\/pgdata\/ext4\/pg\/\n<\/pre><\/div>\n\n\n<p>On the ZFS file system the size of the empty cluster is significantly lower, only 4.7MB:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] du -sh \/u02\/pgdata\/zfs\/pg\n4.7M    \/u02\/pgdata\/zfs\/pg\n<\/pre><\/div>\n\n\n<p>The reason is ZFS compression (which we&#8217;ve enabled in the last post):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,4]; title: ; notranslate\" title=\"\">\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] zfs get compression pgpool\/pgzfs\nNAME          PROPERTY     VALUE           SOURCE\npgpool\/pgzfs  compression  zstd            local\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] zfs get compressratio pgpool\/pgzfs\nNAME          PROPERTY       VALUE  SOURCE\npgpool\/pgzfs  compressratio  6.76x  -\n<\/pre><\/div>\n\n\n<p>This is quite nice, lets see how that looks like when we load some data with <a href=\"https:\/\/www.postgresql.org\/docs\/current\/pgbench.html\">pgbench<\/a>. For ext4:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,12]; title: ; notranslate\" title=\"\">\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] pgbench -p 5432 -i -s 1000 postgres\ndropping old tables...\nNOTICE:  table &quot;pgbench_accounts&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_branches&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_history&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_tellers&quot; does not exist, skipping\ncreating tables...\ngenerating data (client-side)...\nvacuuming...                                                                                      \ncreating primary keys...\ndone in 382.58 s (drop tables 0.00 s, create tables 0.01 s, client-side generate 200.98 s, vacuum 7.11 s, primary keys 174.48 s).\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] du -sh \/u02\/pgdata\/ext4\/pg\/\n16G     \/u02\/pgdata\/ext4\/pg\/\n\n<\/pre><\/div>\n\n\n<p>For ZFS:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,12]; title: ; notranslate\" title=\"\">\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] pgbench -p 5433 -i -s 1000 postgres\ndropping old tables...\nNOTICE:  table &quot;pgbench_accounts&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_branches&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_history&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_tellers&quot; does not exist, skipping\ncreating tables...\ngenerating data (client-side)...\nvacuuming...                                                                                      \ncreating primary keys...\ndone in 267.87 s (drop tables 0.00 s, create tables 0.01 s, client-side generate 163.79 s, vacuum 3.14 s, primary keys 100.93 s).\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] du -sh \/u02\/pgdata\/zfs\/pg\/\n914M    \/u02\/pgdata\/zfs\/pg\/\n<\/pre><\/div>\n\n\n<p>This is 16GB for the ext4 file systems, compared to 914MB for the ZFS file system, which is quite impressive. But also the runtime was less: 382.58 s for ext4 and 267.87 s for ZFS.<\/p>\n\n\n\n<p>Writing is one thing, but we&#8217;re also interested in reading, so lets run some simple pgbench tests, 3 times for 15 minutes each. For ext4:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,11,15,26,30,41,45]; title: ; notranslate\" title=\"\">\npostgres@ip-10-0-1-159:\/home\/postgres\/ &#x5B;pg17] for i in {1..3}; do pgbench --client=4 --jobs=4 --time=900 --port=5432; done\npgbench (17.0 dbi services build)\nstarting vacuum...end.\ntransaction type: &lt;builtin: TPC-B (sort of)&gt;\nscaling factor: 1000\nquery mode: simple\nnumber of clients: 4\nnumber of threads: 4\nmaximum number of tries: 1\nduration: 900 s\nnumber of transactions actually processed: 714533\nnumber of failed transactions: 0 (0.000%)\nlatency average = 5.038 ms\ninitial connection time = 24.493 ms\ntps = 793.932864 (without initial connection time)\n\npgbench (17.0 dbi services build)\nstarting vacuum...end.\ntransaction type: &lt;builtin: TPC-B (sort of)&gt;\nscaling factor: 1000\nquery mode: simple\nnumber of clients: 4\nnumber of threads: 4\nmaximum number of tries: 1\nduration: 900 s\nnumber of transactions actually processed: 763618\nnumber of failed transactions: 0 (0.000%)\nlatency average = 4.714 ms\ninitial connection time = 9.015 ms\ntps = 848.455044 (without initial connection time)\n\npgbench (17.0 dbi services build)\nstarting vacuum...end.\ntransaction type: &lt;builtin: TPC-B (sort of)&gt;\nscaling factor: 1000\nquery mode: simple\nnumber of clients: 4\nnumber of threads: 4\nmaximum number of tries: 1\nduration: 900 s\nnumber of transactions actually processed: 793100\nnumber of failed transactions: 0 (0.000%)\nlatency average = 4.539 ms\ninitial connection time = 11.945 ms\ntps = 881.218923 (without initial connection time)\n<\/pre><\/div>\n\n\n<p>For ZFS, same settings:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,11,15,26,30,41,45]; title: ; notranslate\" title=\"\">\nfor i in {1..3}; do pgbench --client=4 --jobs=4 --time=900 --port=5433; done\npgbench (17.0 dbi services build)\nstarting vacuum...end.\ntransaction type: &lt;builtin: TPC-B (sort of)&gt;\nscaling factor: 1000\nquery mode: simple\nnumber of clients: 4\nnumber of threads: 4\nmaximum number of tries: 1\nduration: 900 s\nnumber of transactions actually processed: 441902\nnumber of failed transactions: 0 (0.000%)\nlatency average = 8.147 ms\ninitial connection time = 13.602 ms\ntps = 491.000544 (without initial connection time)\n\npgbench (17.0 dbi services build)\nstarting vacuum...end.\ntransaction type: &lt;builtin: TPC-B (sort of)&gt;\nscaling factor: 1000\nquery mode: simple\nnumber of clients: 4\nnumber of threads: 4\nmaximum number of tries: 1\nduration: 900 s\nnumber of transactions actually processed: 469018\nnumber of failed transactions: 0 (0.000%)\nlatency average = 7.676 ms\ninitial connection time = 20.941 ms\ntps = 521.136559 (without initial connection time)\n\npgbench (17.0 dbi services build)\nstarting vacuum...end.\ntransaction type: &lt;builtin: TPC-B (sort of)&gt;\nscaling factor: 1000\nquery mode: simple\nnumber of clients: 4\nnumber of threads: 4\nmaximum number of tries: 1\nduration: 900 s\nnumber of transactions actually processed: 486532\nnumber of failed transactions: 0 (0.000%)\nlatency average = 7.399 ms\ninitial connection time = 15.169 ms\ntps = 540.595008 (without initial connection time)\n<\/pre><\/div>\n\n\n<p>This means, for this type of workload the instance running on ZFS is considerable slower than the instance running on ext4. Doing the same test with the &#8220;simple-update&#8221; builtin test suite.<\/p>\n\n\n\n<p>ext4 (summary only):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# run 1\nnumber of transactions actually processed: 757846\ntps = 842.051961 (without initial connection time)\n\n# run 2\nnumber of transactions actually processed: 770246\ntps = 855.823802 (without initial connection time)\n\n# run 3\nnumber of transactions actually processed: 786752\ntps = 874.172287 (without initial connection time)\n<\/pre><\/div>\n\n\n<p>ZFS (summary only):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# run 1\nnumber of transactions actually processed: 553939\ntps = 615.494547 (without initial connection time)\n\n# run 2\nnumber of transactions actually processed: 558915\ntps = 621.035480 (without initial connection time)\n\n# run 3\nnumber of transactions actually processed: 568043\ntps = 631.161413 (without initial connection time)\n<\/pre><\/div>\n\n\n<p>Same picture as above, the ext4 file system is faster than the ZFS one.<\/p>\n\n\n\n<p>Same tests on FreeBSD 14.1 (just one big block to show that I&#8217;ve used the same settings and data set), same instance type and storage:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3,32,33,36,37,38,39,42,43,71,72,73,74,84]; title: ; notranslate\" title=\"\">\n&#x5B;postgres@freebsd ~]$ uname -a\nFreeBSD freebsd 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64\n&#x5B;postgres@freebsd ~]$ sudo geom disk list\nGeom name: nda0\nProviders:\n1. Name: nda0\n   Mediasize: 10737418240 (10G)\n   Sectorsize: 512\n   Stripesize: 4096\n   Stripeoffset: 0\n   Mode: r2w2e6\n   descr: Amazon Elastic Block Store\n   ident: vol0acdef620c8b7d665\n   rotationrate: 0\n   fwsectors: 0\n   fwheads: 0\n\nGeom name: nda1\nProviders:\n1. Name: nda1\n   Mediasize: 21474836480 (20G)\n   Sectorsize: 512\n   Stripesize: 4096\n   Stripeoffset: 0\n   Mode: r0w0e0\n   descr: Amazon Elastic Block Store\n   ident: vol0bfdba7a5ac577099\n   rotationrate: 0\n   fwsectors: 0\n   fwheads: 0\n\n&#x5B;postgres@freebsd ~]$ sudo zpool create pgpool \/dev\/nda1\n&#x5B;postgres@freebsd ~]$ sudo zpool list\nNAME     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT\npgpool  19.5G   360K  19.5G        -         -     0%     0%  1.00x    ONLINE  -\n&#x5B;postgres@freebsd ~]$ sudo zfs create pgpool\/pgzfs\n&#x5B;postgres@freebsd ~]$ sudo zfs set mountpoint=\/u02\/pgdata\/zfs pgpool\/pgzfs\n&#x5B;postgres@freebsd ~]$ sudo zfs set compression=zstd pgpool\/pgzfs\n&#x5B;postgres@freebsd ~]$ df -h | grep zfs\ndf: minimum blocksize is 512\npgpool\/pgzfs        19G     96K     19G     0%    \/u02\/pgdata\/zfs\n&#x5B;postgres@freebsd ~]$ sudo chown postgres:postgres \/u02\/pgdata\/zfs\n&#x5B;postgres@freebsd ~]$ \/u01\/app\/postgres\/product\/17\/db_0\/bin\/initdb --pgdata=\/u02\/pgdata\/zfs\/pg\nThe files belonging to this database system will be owned by user &quot;postgres&quot;.\nThis user must also own the server process.\n\nThe database cluster will be initialized with locale &quot;C.UTF-8&quot;.\nThe default database encoding has accordingly been set to &quot;UTF8&quot;.\nThe default text search configuration will be set to &quot;english&quot;.\n\nData page checksums are disabled.\n\ncreating directory \/u02\/pgdata\/zfs\/pg ... ok\ncreating subdirectories ... ok\nselecting dynamic shared memory implementation ... posix\nselecting default &quot;max_connections&quot; ... 100\nselecting default &quot;shared_buffers&quot; ... 128MB\nselecting default time zone ... UTC\ncreating configuration files ... ok\nrunning bootstrap script ... ok\nperforming post-bootstrap initialization ... ok\nsyncing data to disk ... ok\n\ninitdb: warning: enabling &quot;trust&quot; authentication for local connections\ninitdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.\n\nSuccess. You can now start the database server using:\n\n    \/u01\/app\/postgres\/product\/17\/db_0\/bin\/pg_ctl -D \/u02\/pgdata\/zfs\/pg -l logfile start\n\n&#x5B;postgres@freebsd ~]$ echo &quot;wal_init_zero=&#039;off&#039;&quot; &gt;&gt; \/u02\/pgdata\/zfs\/pg\/postgresql.auto.conf\n&#x5B;postgres@freebsd ~]$ echo &quot;full_page_writes=&#039;off&#039;&quot; &gt;&gt; \/u02\/pgdata\/zfs\/pg\/postgresql.auto.conf\n&#x5B;postgres@freebsd ~]$ echo &quot;port=5433&quot; &gt;&gt; \/u02\/pgdata\/zfs\/pg\/postgresql.auto.conf\n&#x5B;postgres@freebsd ~]$ \/u01\/app\/postgres\/product\/17\/db_0\/bin\/pg_ctl --pgdata=\/u02\/pgdata\/zfs\/pg\/  start\nwaiting for server to start....2024-11-13 07:47:54.324 UTC &#x5B;26000] LOG:  starting PostgreSQL 17.0 dbi services build on x86_64-unknown-freebsd14.1, compiled by FreeBSD clang version 18.1.5 (https:\/\/github.com\/llvm\/llvm-project.git llvmorg-18.1.5-0-g617a15a9eac9), 64-bit\n2024-11-13 07:47:54.324 UTC &#x5B;26000] LOG:  listening on IPv6 address &quot;::1&quot;, port 5433\n2024-11-13 07:47:54.324 UTC &#x5B;26000] LOG:  listening on IPv4 address &quot;127.0.0.1&quot;, port 5433\n2024-11-13 07:47:54.328 UTC &#x5B;26000] LOG:  listening on Unix socket &quot;\/tmp\/.s.PGSQL.5433&quot;\n2024-11-13 07:47:54.334 UTC &#x5B;26003] LOG:  database system was shut down at 2024-11-13 07:46:02 UTC\n2024-11-13 07:47:54.347 UTC &#x5B;26000] LOG:  database system is ready to accept connections\n done\nserver started\n\n&#x5B;postgres@freebsd ~]$ \/u01\/app\/postgres\/product\/17\/db_0\/bin\/pgbench -p 5433 -i -s 1000 postgres\ndropping old tables...\nNOTICE:  table &quot;pgbench_accounts&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_branches&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_history&quot; does not exist, skipping\nNOTICE:  table &quot;pgbench_tellers&quot; does not exist, skipping\ncreating tables...\ngenerating data (client-side)...\nvacuuming...                                                                                      \ncreating primary keys...\ndone in 363.67 s (drop tables 0.00 s, create tables 0.01 s, client-side generate 208.49 s, vacuum 15.66 s, primary keys 139.50 s).\n<\/pre><\/div>\n\n\n<p>Same test as above, three times in a row (summaries only):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\n&#x5B;postgres@freebsd ~]$ for i in {1..3}; do \/u01\/app\/postgres\/product\/17\/db_0\/bin\/pgbench --client=4 --jobs=4 --time=900 --port=5433; done\n\n# run 1\nnumber of transactions actually processed: 424597\ntps = 471.765244 (without initial connection time)\n\n# run 2\nnumber of transactions actually processed: 467988\ntps = 519.976884 (without initial connection time)\n\n# run 3\nnumber of transactions actually processed: 506474\ntps = 562.733462 (without initial connection time)\n\n## simple-update\n# run 1\nnumber of transactions actually processed: 580056\ntps = 644.504340 (without initial connection time)\n\n# run 2\nnumber of transactions actually processed: 593871\ntps = 659.866618 (without initial connection time)\n\n# run 3\nnumber of transactions actually processed: 620252\ntps = 689.163219 (without initial connection time)\n<\/pre><\/div>\n\n\n<p>In summary: Writing is better on ZFS but reading(or mixed workloads) is not as fast as on ext4 (Both on Linux and FreeBSD).  Should you go for ZFS? I cannot tell you, this depends on your workload and your requirements. If space on disk is major concern it might very well be an option. If snapshots and replication on the file system level are important, ZFS might be what you need. If your workload is mostly about reads, it might not be the best option for you. There is no way around testing it for your own in your environment.<\/p>\n\n\n\n<p>If someone thinks I&#8217;ve missed something in the ZFS setup, please let me know and I will be happy to re-test.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post we&#8217;ve set the baseline for comparing ext4 to zfs when it comes to PostgreSQL. We&#8217;ve ended with two PostgreSQL clusters, one running on the ext4 file system while the other is running on top of the ZFS file system. In this post we&#8217;ll look at how they compare when it comes [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[77],"type_dbi":[2749],"class_list":["post-35692","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-database-management","tag-postgresql","type-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing - dbi Blog<\/title>\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.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing\" \/>\n<meta property=\"og:description\" content=\"In the last post we&#8217;ve set the baseline for comparing ext4 to zfs when it comes to PostgreSQL. We&#8217;ve ended with two PostgreSQL clusters, one running on the ext4 file system while the other is running on top of the ZFS file system. In this post we&#8217;ll look at how they compare when it comes [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-13T11:58:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-13T11:58:58+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing\",\"datePublished\":\"2024-11-13T11:58:54+00:00\",\"dateModified\":\"2024-11-13T11:58:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\"},\"wordCount\":466,\"commentCount\":2,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\",\"name\":\"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2024-11-13T11:58:54+00:00\",\"dateModified\":\"2024-11-13T11:58:58+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing - dbi Blog","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.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/","og_locale":"en_US","og_type":"article","og_title":"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing","og_description":"In the last post we&#8217;ve set the baseline for comparing ext4 to zfs when it comes to PostgreSQL. We&#8217;ve ended with two PostgreSQL clusters, one running on the ext4 file system while the other is running on top of the ZFS file system. In this post we&#8217;ll look at how they compare when it comes [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/","og_site_name":"dbi Blog","article_published_time":"2024-11-13T11:58:54+00:00","article_modified_time":"2024-11-13T11:58:58+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing","datePublished":"2024-11-13T11:58:54+00:00","dateModified":"2024-11-13T11:58:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/"},"wordCount":466,"commentCount":2,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/","url":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/","name":"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-11-13T11:58:54+00:00","dateModified":"2024-11-13T11:58:58+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/postgresql-maybe-we-should-give-zfs-a-chance-2-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL: Maybe we should give ZFS a chance (2) \u2013 testing"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/35692","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=35692"}],"version-history":[{"count":39,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/35692\/revisions"}],"predecessor-version":[{"id":35774,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/35692\/revisions\/35774"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=35692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=35692"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=35692"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=35692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}