Press "Enter" to skip to content

Author: Kevin Feasel

Buffers in PostgreSQL

Radim Marek goes deep into buffers:

The work around RegreSQL led me to focus a lot on buffers. If you are a casual PostgreSQL user, you have probably heard about adjusting shared_buffers and followed the good old advice to set it to 1/4 of available RAM. But after we went a little bit too enthusiastic about them on a recent Postgres FM episode I’ve been asked what that’s all about.

Buffers are one of those topics that easily gets forgotten. And while they are a foundation block of PostgreSQL’s performance architecture, most of us treat them as a black box. This article is going to attempt to change that.

Read on to learn more about how PostgreSQL users buffers.

Leave a Comment

Showing Transaction Details on Power BI Matrices

Marco Russo and Alberto Ferrari want more detail:

A common challenge in Power BI reporting is how to display several pieces of information about a single item (such as sales transactions, product details, or customer details) without dedicating a separate column to each attribute. Using individual columns for each detail can consume space, especially for fields that are often empty. This article explores techniques to consolidate multiple fields from a business entity or transaction into a single column in a matrix visual, thus presenting transaction details in a space-efficient way.

They walk through several iterations of the process. The real challenge with displaying those details is that your end users need to understand what’s in the details, as there’s no good way to describe what the information means. But when your users do understand what can be in there, I could see this being quite helpful.

Leave a Comment

Tracking Unused Indexes in PostgreSQL

Semab Tariq wants to see which indexes are in use:

Indexes exist to speed up data access. They allow PostgreSQL to avoid full table scans, significantly reducing query execution time for read-heavy workloads.

From real production experience, we have observed that well-designed, targeted indexes can improve query performance by 5× or more, especially on large transactional tables.

However, indexes are not free.

The reasons for why are very similar to what we have in SQL Server. The way to track utilization is a bit different, however.

Leave a Comment

IMPORT Functions in Excel

Ben Richardson looks at a pair of beta functions:

Microsoft just added some brand-new IMPORT functions, designed to make bringing external data into Excel easier!

Instead of digging through menus or writing your own queries, you can now just use these new formulas, IMPORTTEXT and IMPORTCSV.

Importing data is something we do all the time, downloading CSV files, opening data from text files, or pulling data from databases. Having some new functions to keep expanding that skill set is just going to save so much time!

For well-structured files, these functions look to be quite effective. I do wonder how they’d fare against some of the messier CSVs we often need to deal with in real life.

Leave a Comment

Using Variable Libraries in Lakehouse Shortcuts

Laura Graham-Brown continues a series on variable libraries in Microsoft Fabric:

Lakehouse shortcuts are a popular addition to the Fabric set of tools to access data easily without copying it. Using a variable library in lakehouse shortcuts means its easy to point shortcuts to an alternative location. This great for ALM using development, test and production workspaces.

Read on to see how it all works.

Leave a Comment

String Splitting to Table with Regular Expressions in SQL Server 2025

Koen Verbeeck makes use of regular expressions:

I have text stored in my SQL Server database, and I want to split it into all its different words. T-SQL has supported the STRING_SPLIT function since SQL Server 2016, but it only allows one single delimiter. There are multiple possible delimiters, such as commas, spaces, carriage returns and so on. It seems quite cumbersome to nest multiple STRING_SPLIT using APPLY. Is there a better option out there that doesn’t involve custom coding with CLR?

Read on to learn more. My understanding is that this method is similar in terms of performance to the other mechanisms we have available, like STRING_SPLIT(), tally tables, the APPLY operator, and CLR functions.

Leave a Comment

Azure Pricing and Exchange Rates

Thomas Rushton troubleshoots a billing issue:

So you signed up for a three year deal to keep costs down and more predictable.  But while Reservations can make Azure spend more predictable, they can’t make it completely static. You’ll be OK if you’re paying in USD, but if your organisation is billed in any other currency, you’ll be subject to the vagaries of exchange rates when buying any Azure service. 

Read on for a specific instance in which UK customers experienced a fairly significant price change based on the timing of changes in currency exchange rates.

Leave a Comment

Thoughts on the Future of MySQL

Dave Stokes shares some thoughts:

 I am not intentionally trying to upset anyone with this blog post or minimize the efforts of many brilliant people whom I admire. However, I connected with several people over the 2025 holidays who all had the same question: What is the future of MySQL? At the upcoming FOSDEM conference, several events will discuss this subject and push a particular solution.  And in several ways, they are all wrong.

Oracle has not been improving the community edition for a long time now. They have laid off many of their top performers in the MySQL group. We got almost a good decade and a half out of Oracle’s stewardship of the “world’s most popular database”, and we should be thankful for that. However, now that time is over, it is time to consider future options that will involve no updates, CVEs, or innovation for what is the MySQL Community Edition.

Read on for a few possibilities, focusing on the open-source database market.

Leave a Comment

Adaptive Joins and Large Memory Grants

Kendra Little re-creates a problem:

Adaptive joins let the optimizer choose between a Hash Join and a Nested Loop join at runtime, which can be fantastic for performance when row count estimates are variable. Recently, when Erik Darling taught two days on TSQL at PASS Community Data Summit, a student asked why a query plan where an adaptive join used a Nested Loop at runtime ended up with a large memory grant anyway.

I didn’t remember the answer to this, but the great thing about co-teaching is that Erik did: adaptive joins always start executing as Hash Joins, which means they have to get memory grants upfront. Even if the query ultimately switches to a Nested Loop at runtime, that memory grant was already allocated. This has real implications for memory usage, especially in high-concurrency environments.

Read on for a dive into adaptive joins, how they work, and the consequences when the database engine makes use of them.

Leave a Comment

Collation Conflicts and tempdb

Greg Low sorts out an issue:

I see these issues all the time. Developers create applications that require specific collations at the server level, because they don’t handle temporary tables (and by extension) tempdb well.

All this can be avoided, and you can easily build applications that will work with temporary tables, without worrying about the server (and tempdb) collation.

Read on to learn more about the problem and what you can do to mitigate it.

Leave a Comment