Я оптимизирую конфигурацию сервера MySQL, работаю только с Bromine. Это не относится к приложению и было отмечено только для полноты. Я пытаюсь определить, является ли переключение с MyISAM на InnoDB лучшим вариантом на нескольких доминирующих таблицах записи. эти таблицы берут на себя большую часть операций записи для сервера, но также и самый высокий процент всех запросов. Я не хочу делать все таблицы InnoDB, хотя на этот раз это меня спасло бы. Я предпочитаю MyISAM всему; InnoDB имеет свои сильные стороны, которые имеют смысл для написания тяжелых конкретных таблиц.
Я знаю, как посмотреть статистику чтения / записи для экземпляра MySQL и запустить все рекомендуемые сценарии анализа. Я просто хотел бы знать, как мне посмотреть статистику чтения / записи для конкретной таблицы?
Если у кого-то с соответствующим опытом есть рекомендуемые статистические данные. Буду признателен за вклад.
ОБНОВЛЕНИЕ: я писал об этой проблеме на форумах Bromine, и они сообщали мне, какие таблицы являются тяжелыми. Это не совсем ответ на вопрос, как я бы все равно хотел знать.
Просто для полноты картины вот моя таблица / движок
Name Engine
QRTZ_BLOB_TRIGGERS MyISAM
QRTZ_CALENDARS MyISAM
QRTZ_CRON_TRIGGERS MyISAM
QRTZ_FIRED_TRIGGERS MyISAM
QRTZ_JOB_DETAILS MyISAM
QRTZ_JOB_LISTENERS MyISAM
QRTZ_LOCKS MyISAM
QRTZ_PAUSED_TRIGGER_GRPS MyISAM
QRTZ_SCHEDULER_STATE MyISAM
QRTZ_SIMPLE_TRIGGERS MyISAM
QRTZ_TRIGGERS MyISAM
QRTZ_TRIGGER_LISTENERS MyISAM
activities InnoDB
browsers MyISAM
browsers_nodes MyISAM
combinations MyISAM
combinations_requirements MyISAM
commands InnoDB
configs MyISAM
echelons InnoDB
groups MyISAM
jobs InnoDB
myacos MyISAM
myaros MyISAM
myaros_myacos MyISAM
nodes MyISAM
operatingsystems MyISAM
plugins MyISAM
projects MyISAM
projects_reports MyISAM
projects_users MyISAM
reports MyISAM
requirements MyISAM
requirements_testcases MyISAM
seleniumservers InnoDB
sites MyISAM
suites InnoDB
testcases MyISAM
testcasesteps MyISAM
tests InnoDB
types MyISAM
users MyISAM
Я получил статистику через cacti
, с mysqlstats
плагин.
Если кто-то сделает это через командную строку, с каким-то скриптом, я буду признателен за информацию.
Вы не можете один раз взглянуть на таблицы и определить, какие из них являются тяжелыми для записи, особенно если база данных была запущена и работала в течение длительного времени. Из-за изменения шаблонов использования таблица, которая, по-видимому, получила большое количество операций записи, может больше не получать их.
Вам нужно сделать снимок всех таблиц в момент времени t, а затем еще один моментальный снимок в момент времени t + 1 (где интервал может составлять час, день или, что более вероятно, неделя, возможно, месяц). Когда они у вас есть, вы можете измерить разницу между ними и рассчитать по ней активность.
Вы хотите посмотреть на соотношение чтения таблицы и записи таблицы. Отношение 1 означает, что таблица никогда не записывается, а только читается. А коэффициент 0 означает, что таблица только записывается, но не читается. Большинство таблиц, конечно же, находятся где-то посередине.
SELECT t.table_name, s.rows_read/ (s.rows_read * 1.0 + s.rows_changed) as read_ratio, s.rows_read, s.rows_changed
FROM information_schema.tables t
LEFT JOIN information_schema.table_statistics s USING (table_schema, table_name)
ORDER BY 2, 3, 4, 1;
Глобальная переменная userstat
должен быть установлен на on
для записи активности в этих таблицах статистики.
Поместите вышеуказанный запрос в файл, а затем из командной строки вы можете запустить:
mysql -BNe < tablestats.sql