Intermediate SQL Color Coded SQL, UNIX and Database Essays


Good bye and thanks for the memories!

Hello fellow reader,

8 years ago I set up a goal to share my knowledge with fellow database engineers via this blog. This resulted in 36 (hopefully, decent) articles and lots of interesting conversations in and around them.

Unfortunately, all good things must come to an end. As you might have noticed, this blog has not been updated for a while. That’s not because I have nothing to share … rather, life goes on and my other obligations are leaving me little time to work on this project. Long story short: this blog will sunset on April 8 2018.

Many thanks to everyone who read and commented on the posts, asked questions and pushed me to be a better engineer.

If anyone wants to keep in touch, here are my: Twitter and Slideshare.

Thank you all, good bye and good luck!
Maxym Kharchenko

Filed under: Uncategorized No Comments

I’m getting noticed. Today was hacked for the 1st time

If you checked from your mobile device in the last few days, you might have noticed some eh … “highly questionable content”, which I assure, you, had very little to do with SQL or databases.

Alas, I was hacked. Google was awesome to notify me about it (within 3 days, how cool is that!) and now the site should be back to normal.

I am reasonably sure, I removed all the malware (the same “web redirection” code scattered around ~ 20 different places), but please ping me at: if you notice anything weird.

Apologize for the inconvenience,
Maxym Kharchenko

Tagged as: No Comments

RMOUG 2014 Training Days: Finding SQL execution outliers

I am presenting on measuring performance by percentiles at RMOUG 2014 in Denver.

My session is on Friday Feb 7 at 2:45 pm at room 501.

Latest PPT: SQL Execution Outliers – final

The toolbox that used:

See you in Denver.

Filed under: Uncategorized No Comments

How to track SQL performance. Part 3: Measuring percentiles

In the previous article, I introduced the concept of percentiles and you can hopefully see that measuring percentiles is important to track SQL performance as it makes performance metrics a lot more precise and meaningful.

Unfortunately, ORACLE does not collect percentile data out of the box, so we need to figure out a way to do it ourselves.


How to track SQL Performance. Part 2: Percentiles!

In the previous article, we’ve seen that “average” SQL performance metrics that ORACLE provides out of the box can be useful, but only in a limited set of circumstances when underlying data distribution is normal.

Let’s try to find better metrics.


How to track SQL performance. Part 1: is it good to be “mean” ?

Let’s say that you have a very important SQL in your system.

How do you know if it is performing well ? Is it running slow sometimes resulting in users having bad experience ? If so, when ? How many users ? And just exactly how bad does user experience get when it does get “bad” ?

In this series of articles I’m going to talk about tracking and measuring performance of individual SQLs. We’ll look at the standard metrics that ORACLE provides to do that and introduce some new (and hopefully better) metrics that we can use.


RMOUG 2013 Training Days: SQL Top-N and Pagination pattern

I just returned from RMOUG 2013 training days in Denver, CO and I have to say that I’m impressed!

This was an incredibly well organized and well run event with lots of great speakers and great presentations. As a former board member of Tampa’s ORACLE users group, I know how hard it is to make an event like this happen, especially at this scale. Great job, @DbaKevlar and the rest!

Thanks to everyone who attended my presentation at RMOUG 2013 and if you did not have a chance to catch it, I’ll be presenting it again at IOUG Collaborate 2013.



Read inconsistent queries in ORACLE database ? Sure, why not!

Read consistency is one of the coolest features of ORACLE database.

In a nutshell, it means that your queries (at least, logically) do not pay attention to the outside world. I.e. your tables may be hit with thousands of changes per second, but your query will ignore all the hoopla and will always see only the data that existed when the query started.


Scrap the SCP. How to copy data fast using pigz and nc

Have you ever heard that the speed of the system is determined by its slowest component ? I am made painfully aware of that every time I do data migrations.

I.e. it doesn’t matter if you have 64 core systems with 100+ Gb of memory on either end if the majority of time is spent waiting for data to trickle across a slow 1 Gb network link.

Watching data trickle for hours, while the rest of the system is doing nothing is a pretty frustrating experience. But limitations breed creativity … so lately, I’ve been experimenting with several different copy techniques to see if there is any way transfer speed can be improved, perhaps using some of the idle capacity to speed things up.


IOUG Collaborate 2012: The art of database sharding

Thanks everyone, who attended my presentation about database sharding at IOUG Collaborate. That was a lot of fun!

Sharding is an awesome technique and I’ll blog separately on it, but for now see my presentation and white paper.