- The pt-online-schema-change tool has been a workhorse for years, allowing MySQL DBAs to alter tables with minimal impact to application workload, and before MySQL had native online alter capabilities. Although consistently grateful for the tool’s existence, I never liked the messiness of having to use and clean up triggers, and most DBAs have a horror story or two to tell about using online alters. When Github’s online schema transmogrifer, or gh-ost was released, then, I jumped on the chance to test it out.
I needed a quick-and-dirty table of random data yesterday, and threw together these sql statements to achieve that.
Run a script against an existing database to create an automated data dictionary (in Perl).
- I really like the MySQL Memory Calculator, mostly because the person at the top of the page just seems so darn happy. But I’m also tired of filling out the form, so I created a little program in Go (also my first Go program) to do the memory calculations for me. I named this vgMemory and put it in my visegrip box.
- I presented my slide deck for Using Data Encryption with MySQL at the Triangle MySQL Meetup group tonight. Data Encryption At Rest with MySQL/MariaDB
Hands-on Lab: Using VirtualBox to Run Multiple MySQL Versions/Forks Triangle MySQL Meetup, September 24, 2015, Durham, North Carolina
One of my favorite tools for query optimization is profiling. But recently I noticed this warning:
- I love finding out new things about MySQL. Last week, I stumbled on a query that had the phrase “SOUNDS LIKE” in it. Sounds made-up, right? Turns out MySQL is using a known “soundex” algorithm common to most databases, and popular in use cases in geneaology. The basic idea is that words are encoded according to their consonants. Consonants that sound similar (like M and N) are given the same code.
- As a MySQL DBA I already know the data changes that happen on my system. I have logs for that. However, it’s a common problem that several years into the life of an application, the current developers won’t know where in the codebase queries come from. It’s often hard for them to find the location in the code if queries are formed dynamically; the pattern I show them to optimize doesn’t match anything in the code.