Вопрос

(до того, как вы назовете мне идиот или начните смеяться, пожалуйста, помните, что это реальная сделка на моей стороне, и я не могу отменить это задание, так как это часть более крупного проекта)

У меня есть сервер базы данных, который сумасшедший большой размер и работает на сумасшедшем маленьком сервере, т. Е. 32 ГБ ОЗУ, 24 ядра. В выходные мы собираемся добавить 18 ГБ оперативной памяти на машину, чтобы сделать его BITSY более способным (серверная нагрузка в течение дня подпрыгивает до среднего) 80 !!) Пока мы не разберемся с проблемами производительности с приложением, используя эту базу данных. < / P >.

Я подозреваю, что нагрузка вызвана БД, поднимается из-за отсутствия свободной оперативной памяти (около 5 ГБ всегда в своп).

Эта база данных имеет несколько небольших таблиц ISH и одну огромную таблицу, которая принимает данные GPS и IO, со скоростью около 350 000 записей / ч, и эта таблица разделена разбиением / месяц.

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

Вот SNIP из выхода скрипта:

General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Reduce your overall MySQL memory footprint for system stability
Adjust your join queries to always utilize indexes
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***
  query_cache_limit (> 16M, or use smaller result sets)
  join_buffer_size (> 2.0M, or always use indexes with joins)
  tmp_table_size (> 16M)
  max_heap_table_size (> 16M)
  table_cache (> 4096)
  innodb_buffer_pool_size (>= 1726G)
.

Я должен слепо доверять этому или есть еще один способ сделать это?

Я знаю, что первое, что перенастроить БД после обновления, что еще я должен знать и что я должен попробовать? Время простоя должна быть как можно более короткими, поэтому я действительно не хочу запустить запрос, который будет работать на 5H прямо.

Это было полезно?

Решение

Забудьте о MySqltuner и проверьте <крепкий> человеческий совет . Этот инструмент говорит вам общие рекомендации, которые могут быть бесполезными и даже вредными в некоторых случаях. Оптимизация таблицы, вероятно, будет бесполезной, но он блокирует ваши таблицы для пишетов. Консультант может сэкономить вам время и деньги в долгосрочной перспективе.

Smapping должен быть недоходом на MySQL . Обязательно настроить innodb_buffer_pool_size , чтобы максимизировать использование памяти без замены. Пожалуйста, убедитесь, что вы понимаете, что могут быть другие вещи, использующие память: CACHELECESTEMSSEMASTEMASTEM , необходимо для ведения журнала и других операций, и per-client используемой памяти, как буфет соединения и сортировки . Все вместе должно быть меньше, чем доступная физическая память, так как MySQL / InnoDB имеет свой собственный способ буферизации, и если она использует виртуальную память, что на самом деле она на диске, вы собираетесь иметь плохое время.

Трудно предоставить надежные «общие советы» без полного обзора вашего сервера. Но по моему опыту 90% проблем состоит из запросов и дизайна базы данных , а не с конфигурацией сервера.

Тем не менее, здесь у вас есть Хорошее введение в MySQL / InnoDB Оптимизация конфигурации хорошим человеком (Питер Зайцев). Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top