Slide 1

Slide 1 text

Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Incontro Devops Italia 2024 Federico Campoli 2024-03-15 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability 1 / 67

Slide 2

Slide 2 text

Few words about the speaker Born in 1972 Passionate about IT since 1985 In love with PostgreSQL since 2006 PostgreSQL and FreeBSD tattoo on the right shoulder Proud member of PostgreSQL Europe https://www.postgresql.eu Freelance DBA Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability 2 / 67

Slide 3

Slide 3 text

Getting in touch Linkedin: https://www.linkedin.com/in/federicocampoli/ Github: https://github.com/the4thdoctor Soundcloud: https://soundcloud.com/the4thdoctor Blog: https://pgdba.org Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability 3 / 67

Slide 4

Slide 4 text

Disclaimer This is talk is based on real life experience The tests are reenactments There are A LOT of topics not covered by this talk Always test before going in production Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability 4 / 67

Slide 5

Slide 5 text

Feedback please Please scan the QR code and leave a feedback. https://joind.in/talk/ead1b Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability 5 / 67

Slide 6

Slide 6 text

Table of contents 1 Some context 2 The Keymaster and The Gatekeeper 3 Some tests 4 Wrap up Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability 6 / 67

Slide 7

Slide 7 text

Warning! The story you are about to hear is true. Only the names have been changed to protect the innocent. Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 7 / 67

Slide 8

Slide 8 text

A long time ago... A long time ago, in a startup far far away... Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 8 / 67

Slide 9

Slide 9 text

A long time ago... There was a PostgreSQL running on someone else’s computer. AKA THE CLOUD! Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 9 / 67

Slide 10

Slide 10 text

A long time ago... Misused and abused by... THE DEVELOPERS! Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 10 / 67

Slide 11

Slide 11 text

A long time ago... The poor PostgreSQL ended up completely... BLOATED! Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 11 / 67

Slide 12

Slide 12 text

A long time ago... So they called... THE DBA! Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 12 / 67

Slide 13

Slide 13 text

A long time ago... The DBA approached the problem delicately as always. Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some context 13 / 67

Slide 14

Slide 14 text

PostgreSQL and Linux are not friends... Source http://www.quickmeme.com/meme/3s27y1 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 14 / 67

Slide 15

Slide 15 text

PostgreSQL and Linux are not friends... PostgreSQL Multiprocessing Block size 8192 bytes One big shared memory segment Consumes a lot of memory Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 15 / 67

Slide 16

Slide 16 text

PostgreSQL and Linux are not friends... Source https://forum.blu-ray.com/ Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 16 / 67

Slide 17

Slide 17 text

PostgreSQL and Linux are not friends... Linux NUMA, memory pages scattered in the RAM Max filesystem block size 4096 bytes on X86 Dirty flush blocks the IO OOM killer! Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 17 / 67

Slide 18

Slide 18 text

...but they can be gently pushed together Source https://imgflip.com/i/2uj2dx Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 18 / 67

Slide 19

Slide 19 text

...but they can be gently pushed together PostgreSQL Tune the max connections Enable the usage of huge pages Do not oversize the shared buffer Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 19 / 67

Slide 20

Slide 20 text

...but they can be gently pushed together Linux Disable NUMA balancing Configure and use the huge pages Configure correctly the vm.dirty ratio Disable the memory overcommit On supported architectures set the filesystem block size to 8192 bytes Or use a filesystem more flexible, like ZFS Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 20 / 67

Slide 21

Slide 21 text

Native filesystems can be optimised Mount options for ext4 noatime disables updating of access time for files. Implies nodiratime. nodiratime disables updating of access time for directories only barrier=0 disables the write barriers for the mount point data=writeback Sets the data journaling in writeback mode Do not disable barriers on wal area or on virtual machine’s disks. Use database block checksums. Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 21 / 67

Slide 22

Slide 22 text

Enter ZFS Described as ”The last word in filesystems”, ZFS is stable, fast, secure, and future-proof. Features of ZFS include: pooled storage (integrated volume management – zpool) copy-on-write snapshots data integrity verification and automatic repair (scrubbing) RAID-Z a maximum 16 exabyte file size and a maximum 256 quadrillion zettabyte storage with no limit on number of filesystems (datasets) or files. Taken shamelessy from https://wiki.archlinux.org/title/ZFS Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 22 / 67

Slide 23

Slide 23 text

ZFS Cons License CCDL not compatible with the GPL Memory greedy Maintenance requires attention Not very efficient in writes Recent bug causing corruption https://www.theregister.com/2023/11/27/openzfs 2 2 0 data corruption/ Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 23 / 67

Slide 24

Slide 24 text

ZFS has TONS of options for optimising the datasets ZFS options The advantage of ZFS is that the options can be changed dynamically. No need to remount the dataset. Most of the changes apply to newly written data though. atime atime can be turned on or off recordsize defaults to 128k can be adjusted accordingly compression ZFS supports the transparent compression, supports lz4, gzip, zstd logbias sets the strategy for the ZIL if present (latency or throughput) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 24 / 67

Slide 25

Slide 25 text

ZFS module parameters ZFS module can be optimised as well The parameters can be set as option for the module. # Save the contents in /etc/modprobe.d/zfs.conf # change PARAMETER for workload XZY to solve problem PROBLEM_DESCRIPTION # changed by YOUR_NAME on DATE options zfs PARAMETER=VALUE Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 25 / 67

Slide 26

Slide 26 text

ZFS module parameters ZFS module can be optimised as well Most of the parameters can be set dynamically. echo NEWVALUE >> /sys/module/zfs/ parameters/PARAMETER Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability The Keymaster and The Gatekeeper 26 / 67

Slide 27

Slide 27 text

Tests! Let’s do some tests! Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 27 / 67

Slide 28

Slide 28 text

The system used for tests Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 28 / 67

Slide 29

Slide 29 text

The system used for tests The system used for tests ”Hardware” Google Compute Engine e2-highmem-8 62 GB installed RAM 8 processors AMD EPYC 7B12 separate volumes for wal area and data area on ssd single device ext4 tablespace on persistent disk ssd zfs tablespace on persistent disk ssd zil on persistent disk ssd no swap area OS Rocky Linux release 9.3 (Blue Onyx) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 29 / 67

Slide 30

Slide 30 text

Kernel configuration Kernel configuration vm.dirty background ratio=5 vm.dirty ratio=99 vm.overcommit memory=2 vm.overcommit ratio=100 vm.swappiness=0 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 30 / 67

Slide 31

Slide 31 text

PostgreSQL setup PostgreSQL setup PostgreSQL 16.2 shared buffers 1 GB work mem 400 MB max connections 100 max wal size 5GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 31 / 67

Slide 32

Slide 32 text

pgbench transaction type: builtin: TPC-B (sort of ) scaling factor: 500 pgbench accounts 50,000,000 rows pgbench branches 500 rows pgbench tellers 5000 number of clients: 50 number of threads: 1 Duration: 120 seconds No foreign keys pgbench initialisation for each each test Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 32 / 67

Slide 33

Slide 33 text

EXT4 Tests EXT4 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 33 / 67

Slide 34

Slide 34 text

ext4 default settings initialisation Example dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 41.26 s) . . . 50000000 of 50000000 tuples (100%) done (elapsed 65.88 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 85.74 s (drop tables 0.10 s, create tables 0.02 s, client -side generate 66.26 s, vacuum 0.64 s, primary keys 18.71 s). Space used roughly 7.4 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 34 / 67

Slide 35

Slide 35 text

ext4 default settings run Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 586545 number of failed transactions : 0 (0.000%) latency average = 10.176 ms initial connection time = 712.894 ms tps = 4913.281291 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 35 / 67

Slide 36

Slide 36 text

ext4 initialisation with noatime,nodiratime Example Remounted ext4 with the options noatime,nodiratime dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 37.76 s) . . . vacuuming ... creating primary keys ... done in 102.09 s (drop tables 0.00 s, create tables 0.01 s, client -side generate 80.91 s, vacuum 1.17 s, primary keys 20.00 s). Space used roughly 7.5 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 36 / 67

Slide 37

Slide 37 text

ext4 run with noatime,nodiratime Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 641218 number of failed transactions : 0 (0.000%) latency average = 9.309 ms initial connection time = 674.030 ms tps = 5371.271157 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 37 / 67

Slide 38

Slide 38 text

ext4 initialisation with noatime,nodiratime,data=writeback Example Remounted ext4 with the options noatime,nodiratime,data=writeback dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 40.65 s) . . . 50000000 of 50000000 tuples (100%) done (elapsed 72.02 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 94.21 s (drop tables 0.07 s, create tables 0.02 s, client -side generate 72.89 s, vacuum 0.80 s, primary keys 20.43 s). Space used roughly 7.5 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 38 / 67

Slide 39

Slide 39 text

ext4 run with noatime,nodiratime,data=writeback Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 648422 number of failed transactions : 0 (0.000%) latency average = 9.204 ms initial connection time = 691.884 ms tps = 5432.483119 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 39 / 67

Slide 40

Slide 40 text

ZFS Tests ZFS Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 40 / 67

Slide 41

Slide 41 text

zfs initialisation with no tuning Example dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 39.27 s) . . . 50000000 of 50000000 tuples (100%) done (elapsed 61.51 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 90.32 s (drop tables 0.00 s, create tables 0.01 s, client -side generate 61.77 s, vacuum 1.44 s, primary keys 27.10 s). Space used roughly 7.4 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 41 / 67

Slide 42

Slide 42 text

zfs run with no tuning Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 214904 number of failed transactions : 0 (0.000%) latency average = 28.146 ms initial connection time = 691.692 ms tps = 1776.425893 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 42 / 67

Slide 43

Slide 43 text

Pretty bad isn’t it? ext4 no tuning: 4913 TPS ext4 noatime: 5371 TPS ext4 noatime,writeback: 5432 TPS zfs no tuning: 1776 TPS (WHAT THE...!?!?) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 43 / 67

Slide 44

Slide 44 text

zfs initialisation with atime off Example Similarly to ext4 we can turn atime off for the dataset. dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 40.91 s) . . . 50000000 of 50000000 tuples (100%) done (elapsed 61.35 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 88.74 s (drop tables 0.11 s, create tables 0.01 s, client -side generate 61.56 s, vacuum 1.39 s, primary keys 25.67 s). Space used roughly 7.4 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 44 / 67

Slide 45

Slide 45 text

zfs with atime off Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 221130 number of failed transactions : 0 (0.000%) latency average = 27.249 ms initial connection time = 684.563 ms tps = 1834.921537 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 45 / 67

Slide 46

Slide 46 text

A slight improvement ext4 no tuning: 4913 TPS ext4 noatime: 5371 TPS ext4 noatime,writeback: 5432 TPS zfs no tuning: 1776 TPS zfs atime off: 1835 TPS (Still WHAT THE...!?!?) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 46 / 67

Slide 47

Slide 47 text

zfs initialisation with atime off, lz4 compression Example We can enable the compression using the lz4 algorithm. dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 41.57 s) . . 50000000 of 50000000 tuples (100%) done (elapsed 51.81 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 74.02 s (drop tables 0.13 s, create tables 0.01 s, client -side generate 52.02 s, vacuum 1.44 s, primary keys 20.43 s). Space used roughly 986 MB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 47 / 67

Slide 48

Slide 48 text

zfs with atime off, lz4 compression Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 509697 number of failed transactions : 0 (0.000%) latency average = 11.714 ms initial connection time = 692.930 ms tps = 4268.286775 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 48 / 67

Slide 49

Slide 49 text

A good jump ext4 no tuning: 4913 TPS ext4 noatime: 5371 TPS ext4 noatime,writeback: 5432 TPS zfs no tuning: 1776 TPS zfs atime off: 1835 TPS zfs atime off compression lz4: 4268 TPS Space used 986 MB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 49 / 67

Slide 50

Slide 50 text

zfs initialisation with atime off, lz4 compression,record 16k Example Reduce the record size to 16k dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.07 s, remaining 36.26 s) . . 50000000 of 50000000 tuples (100%) done (elapsed 56.71 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 81.98 s (drop tables 0.10 s, create tables 0.01 s, client -side generate 56.93 s, vacuum 0.78 s, primary keys 24.16 s). Space used roughly 2.2 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 50 / 67

Slide 51

Slide 51 text

zfs with atime off, lz4 compression,record 16k Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 750717 number of failed transactions : 0 (0.000%) latency average = 7.952 ms initial connection time = 683.204 ms tps = 6288.119711 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 51 / 67

Slide 52

Slide 52 text

Now we are talking ext4 no tuning: 4913 TPS ext4 noatime: 5371 TPS ext4 noatime,writeback: 5432 TPS zfs no tuning: 1776 TPS zfs atime off: 1835 TPS zfs atime off compression lz4: 4268 TPS Space used 986 MB zfs atime off compression lz4,record 16k: 6288 TPS Space used 2.2 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 52 / 67

Slide 53

Slide 53 text

Configure the zfs module parameters zfs module parameters zfs prefetch disable: ”1” zfs nocacheflush: ”1” zfs arc max: ”28294967296” zfs arc min: ”28294967296” zfs txg timeout: ”1” Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 53 / 67

Slide 54

Slide 54 text

Add a zil to the zpool Example zpool status pool: pg_pool state: ONLINE config: NAME STATE READ WRITE CKSUM pg_pool ONLINE 0 0 0 google -pg -zfs -hdd -0 ONLINE 0 0 0 logs sde ONLINE 0 0 0 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 54 / 67

Slide 55

Slide 55 text

zpool parameters and zil Example dropping old tables ... creating tables ... generating data (client -side)... 100000 of 50000000 tuples (0%) done (elapsed 0.08 s, remaining 39.66 s) . . 50000000 of 50000000 tuples (100%) done (elapsed 55.49 s, remaining 0.00 s) vacuuming ... creating primary keys ... done in 75.91 s (drop tables 0.20 s, create tables 0.01 s, client -side generate 55.69 s, vacuum 0.79 s, primary keys 19.23 s). Space used roughly 2.2 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 55 / 67

Slide 56

Slide 56 text

zpool parameters and zil Example starting vacuum ... end. pgbench (16.2) transaction type: scaling factor: 500 query mode: simple number of clients: 50 number of threads: 1 maximum number of tries: 1 duration: 120 s number of transactions actually processed: 748434 number of failed transactions : 0 (0.000%) latency average = 7.977 ms initial connection time = 705.825 ms tps = 6268.124727 (without initial connection time) Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 56 / 67

Slide 57

Slide 57 text

No improvement ext4 no tuning: 4913 TPS ext4 noatime: 5371 TPS ext4 noatime,writeback: 5432 TPS zfs no tuning: 1776 TPS zfs atime off: 1835 TPS zfs atime off compression lz4: 4268 TPS Space used 986 MB zfs atime off compression lz4,record 16k: 6288 TPS Space used 2.2 GB zfs module tweak, zil: 6268 TPS Space used 2.2 GB Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 57 / 67

Slide 58

Slide 58 text

Space usage comparison Space usage comparison (MB) Smaller is better Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 58 / 67

Slide 59

Slide 59 text

Load time comparison Load time comparison (Sec) Smaller is better Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 59 / 67

Slide 60

Slide 60 text

Latency Latency (ms) Smaller is better Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 60 / 67

Slide 61

Slide 61 text

Transactions per second Transactions per second Larger is better Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Some tests 61 / 67

Slide 62

Slide 62 text

Wrap up ZFS can achieve good performance despite the bad reputation Beware of any weird bug appearing... Yes, I mean this bug: https://www.theregister.com/2023/11/27/openzfs 2 2 0 data corruption/ Did I mention that PostgreSQL has block checksums? Always use the tool for your needs e.g. Don’t use ZFS if you have a 20 MB database Always RTFM! And remember that... Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Wrap up 62 / 67

Slide 63

Slide 63 text

Disclaimer Y.M.M.V. Translation: no airbags. we die as heroes Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Wrap up 63 / 67

Slide 64

Slide 64 text

Feedback please Please scan the QR code and leave a feedback. https://joind.in/talk/ead1b Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Wrap up 64 / 67

Slide 65

Slide 65 text

Thank you for listening! Any questions? Copyright by dan232323 http://dan232323.deviantart.com/art/Pinkie-Pie-Thats-All-Folks-454693000 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Wrap up 65 / 67

Slide 66

Slide 66 text

Image sources LAPD badge - source wikicommons Base jumper - copyright Chris McNaught Disaster girl - source memegenerator Commodore 64 - source memecenter Deadpool- source memegenerator Sparta birds - source memestorage Mr Creosote - source Monty Python wiki Angry old man - source memegenerator Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Wrap up 66 / 67

Slide 67

Slide 67 text

Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Incontro Devops Italia 2024 Federico Campoli 2024-03-15 Federico Campoli Vindicating ZFS with PostgreSQL: Unleashing the Power of Scalability Wrap up 67 / 67