PostgreSQL’s true power doesn’t just come from its rock-solid relational engine, but it’s the fact that Postgres can grow with you. Extensions allow you to bolt on new capabilities, enhance performance, integrate external tools, and transform the database into something far more powerful than its default installation, which is something I’m really learning to love. From pg_stat_statements to pgvector, logical decoding plugins, job schedulers, and custom procedural languages, Postgres extensions behave like feature packs you can enable at the database level. That also means DBAs must know how to inspect, maintain, and manage them just as carefully as any schema…
-
-
For anyone who has spent years tuning Oracle redo, the first time you look at PostgreSQL’s pg_stat_wal view may feel a bit underwhelming. Everything works, but the instrumentation isn’t the same and you suddenly realize how much Oracle has spoiled you with it’s advanced and expensive features. As I’ve been working deeper with PostgreSQL, I keep getting questions about how its WAL (Write-Ahead Logging) data compares to Oracle’s redo performance metrics. Let’s break it down in a way that makes sense for people who’ve been living in the Oracle world for years. PostgreSQL and What pg_stat_wal Actually Gives You PostgreSQL…
-
After our first two weeks of ensuring Grant and I didn’t burn down SQLServerCentral figuring out how Steve Jones has kept the pace he has for so long, (quite an impressive feat, I think we’d both agree!) I’m back to working with my comparisons and building more knowledge in PostgreSQL. What caught my attention this week was the simple concept of a row (or tuple) which might seem universal in relational systems, after all, data is data no matter the platform, right? But under the hood, the way databases store, manage, and control visibility of that data can differ drastically.…
-
Oracle: Wait Classes & Events As discussed in an earlier blog post, Oracle groups wait events into wait classes like User I/O, System I/O, Concurrency, Network, Idle, Commit, and more. By grouping wait events into categories, it helps the technologist identify where time is being spent in the database, (DB Time) and as there is often a correlation between waits, identifying culprits. This two-tier model (Class → Event) lets you query V$SYSTEM_WAIT_CLASS or V$SYSTEM_EVENT for high-level patterns and drill into specific events, as in the example: “db file sequential read” falls under the wait class User I/O. Class-based stats streamlines…
-
As an Oracle DBA venturing into the world of PostgreSQL, one of the most important areas to get comfortable with is performance tuning. While Oracle’s Cost-Based Optimizer (CBO) is a well-known powerhouse that many DBAs have learned to both respect and wrestle with, PostgreSQL offers its own sophisticated query planner that behaves differently. Understanding these differences is key to becoming proficient with PostgreSQL as we step into tuning. In this post, we’ll explore: The role of pg_stat_statements in query tuning How PostgreSQL’s planner works And how tuning in PostgreSQL compares to the Oracle CBO experience pg_stat_statements the Work Horse Oracle…
-
Now that we finished Part 2 on physical data structures, storage and processes, it’s time to work our way into transaction control, locking and just a smidgen of performance insight. This post is for Oracle DBAs who want to understand PostgreSQL’s transaction and locking mechanics, as well as how to monitor and tune performance without diving into execution plans just yet. Think of this as your quick-reference mental shift guide from Oracle to PostgreSQL. Locking or What is MVCC Without Undo Segments In Oracle, locks and concurrency are managed using undo segments, redo logs, and sophisticated multi-versioning. PostgreSQL also uses…
-
In the previous post, I covered some high-level areas around installation and architecture, but for this post, we’re going to go a little deeper. For the seasoned Oracle DBA, this should feel like we’re stepping into a familiar landscape with just a few different rules. While both PostgreSQL and Oracle Database are robust, feature-rich systems, their physical architecture and internal mechanics diverge in key areas, especially around storage structures, memory architecture, and background processing. In this post, we’ll break down these differences so Oracle DBAs can feel more comfortable with the shift when they transition between the two. Physical Storage:…
-
Back in 2004, I had my first run-in with PostgreSQL’s predecessor: Ingres. It was just another database platform for me to know, as I was already managing Oracle, SQL Server, Sybase and DB2, and as usual, there was no one else in the room. I vaguely remember working through the mechanics of VACUUM and maintenance routines, but much of it faded into the background as my career led me deeper into the world of Oracle, SQL Server and MySQL databases. At the time, PostgreSQL was still finding its footing, and Ingres seemed like a legacy product already slipping into obscurity.…
-
December 2024 is upon us and I’m unsure how it’s already here! I have my last event that I need to travel for and I only need to head up to Seattle to present! I have done some fun testing with PostgreSQL with HammerDB, both in my previous role of Director of Data and AI at Silk and since with other work. I’ve been fascinated with the story that’s developed and have built out a session to present on recommended practices using HammerDB with PostgreSQL and to review my findings. I’ll be in Seattle on Thursday evening sharing this session…
-
I’m doing a mid-year review and want to get better about blogging again. I did an initial AlloyDB Omni post this last week and it reminds me about the session I’ll be doing at PASS Community Summit with Steve Karam with PostgreSQL with PGVector! I know, you’re all really confused now- The SQL Server folks are thinking, “I thought she was Oracle??” The Oracle people are thinking I’m just not loyal because I keep working with other database platforms…:) One of the great things about this event is that it’s welcoming to so many technologies and database platforms. I’ve been…