A selection of articles covering the topic of performance, tuning, and optimisation.

Measuring Software Performance

Measuring performance helps us to define exactly what we mean by performance, to quantify it, and ultimately to identify where to expend effort improving it.

The Dreaded Scalable Word

Find out why I hate it when people use the word "scalable", what it actually means, and why, ultimately, it may not be what they want.

Re-framing: The Most Effective Software Performance Analysis Technique

Re-framing is a Design Thinking technique which, when applied to software performance analysis, can yield the greatest opportunities for improvement.

Why Software Performance Is (Still) Important

Despite vast improvements in computer hardware over the years, and advances such as cloud services with varying price plans that let you 'upgrade' your virtual hardware easily, the need for fast, efficient software is as important as ever.

How To Rescue or Ruin a Development Project

An easy-to-follow guide to saving development projects, with some useful tips if you're determined to see them fail.

Testing Character Types With Look-up Tables

Look-up tables are an ideal way of testing whether characters are of a particular type, and are commonly used in C for functions such as isupper, isdigit etc. You can also use them for your own custom classification tests.

Why Is My Index Not Used?

You're very pleased with yourself: you've created your index, and are feeling supremely confident that your query is now going to run much faster. But something's wrong. The query is still slow, and your index is not being used at all. What's going on?

An Introduction To Look-up Tables

Look-up tables are a common performance tool that allows us to use values or results that have been calculated ahead of time, i.e. in advance of when they are needed. This introduction discusses why and how you might use them.

Indexes Are All Around (Part 2)

The second part of this introduction to relational database indexing looks at the most common type of index that we use.

Indexes Are All Around (Part 1)

As an introduction to the wonderful world of relational database indexing, I take a look at some common real-life indexes that we use every day.

Improving OLTP Database Throughput - Dr Dobb's Journal

Parallel threads and JDBC connection pools can be useful, but should not be used blindly. When handling numerous transactions with small overhead on heavily contended systems, batch processing often provides a better solution.


For those of you who prefer the good old-fashioned command line, rather than all that fancy graphical user interface stuff, here is a handy script that provides a "top"-like display of blocked, blocking, and running processes on a Sybase Adaptive Server Enterprise (ASE) database server.

Rogues Gallery of Worst Performance Mistakes

I've come across some howlers in my time. So I thought it only fair to share some of these with you for your entertainment. Names have been witheld to protect the guilty.

The Curse of the Name Value Pair

When it comes to storing objects in a relational database, one of the worst performance decisions that can be made is to use name-value pairs. In this article I give you a couple of techniques for avoiding them, as well as some ways of improving performance if you insist on ignoring my advice and using them anyway.


To receive updates, and to get your free guide:

SQL Tips and Tricks