Базы данных. MySQL+составные индексы

На модерации Отложенный

MySQL

  • Индексы необходимо использовать для ускорения запросов. Но если записей многие тысячи - надо использовать и составные индексы. Подробнее тут. Если всё правильно сделать, то время выполнения запроса можно увеличить в десятки, а то и сотни раз. По-анлийски тут. Ещё мощная статья на русском тут
  • OpenNet
  • Иногда следует заходить в MySQL Administrator и выполнять оптимизацию таблиц вручную для выбранных таблиц. Либо можно использовать эти SQL-запросы.
  • Свои настройки для сервера с оперативной памятью 512Mb
    • default-character-set=cp1251
    • query_cache_size=2M
    • key_buffer_size=16M
    • sort_buffer_size=16M
    • innodb_additional_mem_pool_size=2M
    • innodb_buffer_pool_size=128M
    • default-character-set=cp1251
    • memlock
    • innodb_file_per_table
    • interactive_timeout=288000
    • wait_timeout=288000
    • preload_buffer_size=64k
    • query_cache_limit=256k
    • query_cache_min_res_unit=16k
    • query_cache_type=1
    • query_prealloc_size=16k
    • net_buffer_length=64k
    • skip-name-resolve
  • Если памяти 2Gb - надо существенно увеличить innodb_buffer_pool_size до 1.5Gb и query_cache_size до 128Mb. Остальное можно оставить как есть.

Для всех серверов БД важны:

  1. Быстрый винчестер
  2. Объём оперативной памяти
  3. Количество ядер или процессоров
  4. Наличие правильных составных индексов
  5. Дефрагментация диска