понедельник, 24 мая 2010 г.

Расширение индексов InnoDB может изменить производительность неожиданным образом

Есть старое правило для MySQL, которое гласит, что если на таблице наложено два ключа (a) и (a, b), то первый ключ можно снять, ибо для выборки будет достаточно второго ключа.

В статье на www.mysqlperformanceblog.com наглядно показано, что это правило верно не всегда. Дело в том, что в InnoDB особое внимание уделяется clustered index. Clustered index идёт как замыкающий элемент каждого ключа. То есть индексы надо рассматривать как (a, id) и (a,b,id). Теперь, зная это, подумаем что произойдёт с запросом

SELECT * FROM table WHERE a = 3 ORDER BY id LIMIT 1;

если мы уберём ключ (а) и оставим ключ (a,b).

Вообще статья заставила меня переосмыслить использование и оптимизацию ключей в InnoDB.

вторник, 18 мая 2010 г.

Shift + NumPad. О вреде хоткеев или NumPad не работает

В один прекрасный день я обнаружил, что у меня в Ubuntu перестал работать NumPad. Вернее работать он продолжал, а вот цифры и кнопки арифметики работать перестали. Только при выключенном NumLock функционал курсора оставался на клавишах. Я переключился из Xorg в консоль и обнаружил, что в консоли NumPad работает.

Делаю вывод, что проблема сугубо программная, а не аппаратная, потому полез в гугл и вот, что я там обнаружил. Оказывается проблеме уже больше 2 лет. Появляется она, если по неосторожности нажать Shift+NumLock. В этом случае включается управление курсором мыши с клавиатуры. Так как одиночные нажатия сдвигают курсор на один пиксел, заметить, что курсор передвинулся довольно сложно. Вот и получается формулировка, что NumPad не работает. Чтобы отключить управление надо повторно нажать Shift+NumLock.

Вот так случайное нажатие хоткея может сильно расстроить пользователя. Уважаемые разработчики, пожалуйста, уведомляйте пользователя, что он нажал хоткей, если результат его нажатия не очевиден.

Офисным работникам на заметку: хоткей работает даже на заблокированном компьютере, так что если желаете сделать гадость ближнему своему, можете не стесняться. Shift+NumLock.