QOT

MySQL DBA’s intelligent assistant

Formal verification of PBXT locking code, my experience with verification tools

In the last few months we’ve got couple of bugs with the PBXT read/write locking code. One of the problems was directly in the lock/grant algorithm. It was strange to find such kind of error after quite long time of various testing and real-life usage. From the point of view of QA it was clear […]

Read the rest of Formal verification of PBXT locking code, my experience with verification tools

Last week in QOT: Index/Predicate Selectivity Analysis

Last weekend I’ve reached a milestone in my work on the statistical index analysis for QOT. The code is available on Launchpad.
An example is worth a thousand words, so I start with one (once again I’m using employees-db):
$ ./qot –info –host=192.168.200.1 –analyse=possible –schema=employees –query=”select * from dept_emp where (dept_no = ‘d005′ or dept_no = ‘d006′) […]

Read the rest of Last week in QOT: Index/Predicate Selectivity Analysis

Selectivity threshold for a non-covering index

Assume you have a table with about 300 000 rows, and an indexed column ‘col1′ with only 9 distinct values. Now you got a query like ’select * from t1 where col1 = const’. The questions are

- when the index is faster to full table scan and vice versa?
- does MySQL use the optimal plan by default?

Read the rest of Selectivity threshold for a non-covering index

Redundant “Using where”

Working on server-based index analysis I once again recalled a topic I wanted to write about for many times. The topic is redundant “Using where” in query plans. Suppose we have a table like this:
mysql> show create table t1 \G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`a` int(11) NOT NULL DEFAULT ‘0′,
`b` int(11) […]

Read the rest of Redundant “Using where”

Test framework migration finished, started work on server connections

Finally QOT development has reached an important milestone - all the tests were migrated to the new testing framework. The latest changes can be found at Launchpad - lp:qot. This switches the green light to the development of new features.
The first thing to be implemented is data schema reading from server so it is no […]

Read the rest of Test framework migration finished, started work on server connections

Another Week in QOT

Last week (or rather last weekend) was quite productive. I was able to make a good progress migrating to the new mysql-test based testing framework. Reviewing the tests I was able to find and fix some bugs. For example there was a bug that ignored some columns while detecting index capabilities. As I mentioned earlier […]

Read the rest of Another Week in QOT

Last week in QOT: bugfixes, mysql-test

 With this post I want to start the practice of writing short weekly summaries of QOT activities.
This week I was able to work on some bug reports: #12 #13 #14 #15. Some trivial crashes, some of which were already fixed before. As I wrote in my previous post, I have changed the way I do […]

Read the rest of Last week in QOT: bugfixes, mysql-test

Changes in the Development Model

General
Being quite busy with my full-time job at PrimeBase Technologies and quite limited in time for QOT development I was looking for ways to optimize the process around QOT.
I came to a conclusion that instead of preparing and releasing milestone binary releases it will be more optimal to declare the main project trunk to be […]

Read the rest of Changes in the Development Model

administrative: this should have happened sooner or later and it finally happened…

I had to disable write access for anonymous mantis account because of the spam in comments. Will enable it one I add some kind of protection. For now - please register to report a bug. Thanks.

Read the rest of administrative: this should have happened sooner or later and it finally happened…

QOT moved to Launchpad

I moved all the QOT code to Launchpad. This includes code for the tool, tests and a small experimental utility qot-predictor, which based on query analysis tries to predict which queries are likely to be executed next. Project URL for branching is lp:qot. If you want to push your own changes just create a new […]

Read the rest of QOT moved to Launchpad