Jun 07 2009

MySQL EXPLAIN Cheat Sheet

Category: Cheat Sheets,MySQLingvar @ 00:19

Команда Explain отображает информацию о запросе Select. Эта информация может выявить проблемы с оптимизацией таблиц: необходимостью добавить индексы, чтобы получить более быструю выборку; можно понять, насколько запрос связывающий несколько таблиц удачный и т.д.

На страничке EXPLAIN Cheatsheet выложили электронную версию краткого описания работы с этой командой: pdf-версия. Там всего одна страница формата А-4, что весьма удобно.

Что можно почитать:
MySQL: Optimizing Queries with EXPLAIN
Habr: EXPLAIN — Самая мощная команда MySQL


Mar 14 2009

Топ-100 советов по производительности MySQL

Category: MySQLingvar @ 11:03

Топ-100 советов о производительности MySQL от авторов: Jay Pipes, Sheeri Kritzer, Bill Karwin, Ronald Bradford, Farhan «Frank Mash» Mashraqi, Taso Du Val, Ron Hu, Klinton Lee, Rick James, Alan Kasindorf, Eric Bergen, Kaj Arno, Joel Seligstein, Amy Lee.


Feb 04 2009

Как определить оптимальный размер innodb_log_file_size

Category: MySQLingvar @ 10:25

Как известно, при коммите InnoDB записывает данные не сразу в файлы данных, а сначала записывает изменения в innodb_log_file. Дело в том что записать данные непосредственно в таблицу — существенно более дорогая операция, чем записать изменения в бинарный лог.

Ведение innodb_log_file позволяет проводить оптимизацию i/o: записывать данные большими последовательными кусками, а также более быстрее обслуживать клиентов (клиент быстро сделал коммит, а данные в табличное пространство записываются в фоне). Поэтому чем больше файл, тем больше возможности для InnoDB оптимизировать ввод/вывод. В настоящее время суммарный размер innodb_log_file ограничен 4 Гб, что более чем достаточно для большинства случаев.

Читать дальше


Dec 02 2008

Основы организации древовидных структур в базах данных (Nested Sets)

Category: Symfony,Разработкаingvar @ 22:46

Подборка материалов по работе с деревьями (Nested Sets) в SQL.

Wikipedia: Иерархические базы данных
Иерархическая модель базы данных состоит из объектов с указателями от родительских объектов к потомкам, соединяя вместе связанную информацию.

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

Между объектами существуют связи, каждый объект может включать в себя несколько объектов более низкого уровня. Такие объекты находятся в отношении предка (объект более близкий к корню) к потомку (объект более низкого уровня), при этом возможно, когда объект-предок не имеет потомков или имеет их несколько, тогда как у объекта-потомка обязательно только один предок. Объекты, имеющие общего предка, называются близнецами.

Читать дальше


Aug 27 2008

Триггеры в MySQL

Category: MySQLingvar @ 23:08

Поддержка триггеров появилась в MySQL 5.0.2. Триггер — это аналог процедуры, который ассоциируется с конкретной таблицей и запускается при наступлении определенных событий связанных с этой самой таблицей. Событий для таблиц всего несколько: INSERT, DELETE, UPDATE.

Пример триггера INSERT для таблицы News — записываем в поле `created_at` дату и время создания записи. Конечно можно было воспользоваться TIMESTAMP, но в данном случае это сделано в качестве простого примера:
Читать дальше


Aug 23 2008

MySQL: cравнение даты (datetime) через оператор BETWEEN

Category: MySQLingvar @ 20:29

Оператор BETWEEN идеально подходит для сравнения диапазона между датами (datetime). Но тут есть подводные камни. Например, есть задача — выбрать данные из таблицы за некоторый промежуток времени (с ‘2008-08-14’ по ‘2008-08-23’).

Рекомендации:
1. Выполняя любые сравнения, приводить все данные к одному типу.
2. Если один операнд имеет значение типа TIMESTAMP или DATETIME, а другой является константой, операнды сравниваются как значения типа TIMESTAMP. А это значит, что если была строка в виде ‘2008-08-14’, то она автоматически преобразуется в TIMESTAMP ‘2008-08-14 00:00:00’ и это влияет на результат запроса.
3. Над данными, которые участвуют в условиях сравнения желательно не делать никаких операций — это позволяет для них использовать индексы, иначе они игнорируются.

Читать дальше


Aug 07 2008

Список стратегий эффективного взаимодействия Memcached и MySQL

Category: MySQLIgor @ 21:40

На сайте highscalability разместили очень полезную статью о взаимодействии Memcached и MySQL: A Bunch of Great Strategies for Using Memcached and MySQL Better Together.


Jul 26 2008

Установка, настройка и запуск нескольких серверов MySQL для Windows

Category: MySQLIgor @ 14:30

Каждый раз когда, делаю установку, обновление новой версии сервера MySQL под Windows, необходимо перекинуть все базы данных со старой версии на новую. В этом случае удобно запустить обе версии MySQL на разных портах, а не останавливать одну службу, потом другую, потому что, что-то забываем, что-то не надо сразу. Итак последовательность действий.
Читать дальше


Jul 25 2008

Журнал общих запросов Mysql 5.1 general_log_file

Category: MySQLIgor @ 00:11

Журнал содержит информацию о подключениях клиентов, запросах и другого рода событиях. Это файл очень полезен для отладки, оптимизации систем.
Читать дальше