Пост о создании небольшой клиентской базы на бывшей работе.
Картинки кликабельны (далее...)
Не знаю почему, но по умолчанию настройки MySQL рассчитаны на десктопы 90-х годов. Например, 8Mb памяти под индексы InnoDB. Помните, как Билл Гейтс заявил, что «640 Кб памяти должно хватать каждому». Дефолтные настройки MySQL из этой серии.
Для начала моя выжимка из конфига (4G RAM, AMD Athlon 64 X2 Dual 5600+)
# ТОЛЬКО UTF! ТОЛЬКО ХАРДКОР! collation_server=utf8_general_ci character_set_server=utf8 default-character-set = utf8 # по умолчанию пускай будет InnoDB default-storage-engine = InnoDB key_buffer_size = 512M innodb_buffer_pool_size = 512M innodb_additional_mem_pool_size = 16M innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 2 innodb_thread_concurrency = 8 join_buffer_size = 8M sort_buffer_size = 8M read_rnd_buffer_size = 8M tmp_table_size = 64M max_heap_table_size = 32M table_cache = 256 log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 1 query_cache_type = 2 query_cache_limit = 1M query_cache_size = 32M
Статья для новичков. В MySQL есть встроенное средство для отслеживания медленных запросов.
В конфиге нужно просписать
log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 1
Статья для новичков. В MySQL есть встроенное кэширование запросов. Подробнее можно почитать на Хабре. Тут я скажу о главном плюсе и главном минусе такого кэширования и приведу пример своего сервака. (далее...)
Хорошая статья про MySQL Joins.
Вообще, в своей практике приходится использовать лишь INNER JOIN и LEFT JOIN, но для общего развития стоит почитать.
Сейчас многие движки позволяют выводить похожие записи к конкретному посту.
Самый простой путь для связи — это использование тегов. На том же Хабре сделано именно так.
В wordpress для этого есть плагин Simple Tags. Именно его я использую в своем блоге.
Есть другой подход. Использование полнотекстового индекса индекса MySQL. Для wordpress есть усовершенствованный плагин Related Posts. На большом объеме текста (от 2000 записей в блоге) этот плагин дает лучшие результаты по сравнению с тегами.
Небольшой пост о том, на чем я работаю. (далее...)
На конкретном примере из своей практики расскажу про полезную фичу SHOW PROCESSLIST (далее...)
В MySQL есть одна полезная команда optimize table, которая как не сложно догадаться оптимизирует таблицу, а если конкретно, то дефрагментирует таблицу (по аналогии с дефрагментацией диска). Зачем это нужно? (далее...)
В принципе, рассказывают очевидные вещи. Причем, рассказывают далеко не про все способы разгона базы. Но в целом послушать можно.
Возможно скоро напишу большой пост по оптимизации MySQL с тестами и примерами на реальных базах.
Лекция про кэширование, репликацию и шардинг. Кстати этот чувак является одним из авторов книги по разгону MySQL