Медленная производительность MySQL для отчетов БД

В настоящее время у меня работает 3 сервера, 2 удаленных, основной сервер с MySQL 5.5.24 и резервным MySQL 5.1.63 и 1 локальный с MySQL 5.5.20 для разработки. Основной сервер используется для отчетов; в настоящее время имеется 144 таблицы (MyISAM и InnoDB) и около 80 ГБ данных, каждая из больших таблиц содержит около 13 миллионов строк.

На удаленных серверах у меня очень ограниченный доступ через webmin, из-за этого я не могу вносить изменения напрямую, мне нужно запрашивать их в ИТ-отделе.

У меня серьезные проблемы с производительностью на главном сервере после сбоя MySQL в прошлом месяце. На сервере была запущена разрабатываемая версия, в которой были некоторые ошибки записи на диск, после восстановления мы установили версию MySQL 5.5.23, и именно тогда начались проблемы с производительностью. Недавно мы установили MySQL 5.5.24 (последняя стабильная версия), но у нас все еще есть проблемы с производительностью.

Вот конфигурации серверов, все выделенные серверы:

Главное:

Operating system: Gentoo Linux
Kernel and CPU: Linux 2.6.31-gentoo-r6 on x86_64 
Processor information: Intel(R) Xeon(TM) CPU 2.66GHz, 8 cores
Real memory (ram): 23.55 GB total
Virtual memory: 3.74 GB total
Local disk space: 463.38 GB total (about 30% free)

Резервное копирование:

Operating system: Gentoo Linux
Kernel and CPU: Linux 2.6.31-gentoo-r6 on x86_64
Processor information: Intel(R) Core(TM)2 Duo CPU E6405 @ 2.13GHz, 2 cores
Real memory (ram): 15.68 GB total
Virtual memory: 16.01 GB total
Local disk space: 4.73 TB total (about 80% free)

Разработка:

Operating system: Ubuntu Linux 9.04
Kernel and CPU: Linux 2.6.32-33-server on x86_64
Processor information: Intel(R) Core(TM)2 Duo CPU E6550  @ 2.33GHz, 2 cores
Real memory (ram): 1.95 GB total
Virtual memory: 5.65 GB total
Local disk space: 141.15 GB total (about 5% free)

Все серверы имеют одинаковую конфигурацию my.cnf, за исключением innodb_buffer_pool_size

мой.cnf

[mysqld]
back_log = 50
max_connections = 100
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = MYISAM
thread_stack = 262K
stored_program_cache= 1024
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
binlog_format=mixed
slow_query_log
long_query_time = 2
key_buffer_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 240
server-id = 1
event_scheduler = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192

Я пробовал несколько больших Stored Procedures с большим количеством столбцов и данных, и сервер резервного копирования примерно в 10 раз быстрее, чем основной сервер, а запуск их на сервере разработки примерно в 5 раз быстрее, чем основной.

Поскольку основной сервер и резервный сервер находятся в одном и том же удаленном месте и через VPN, я знаю, что проблем со скоростью соединения нет.

Я не могу опубликовать код Stored Procedures, но я знаю, что проблема связана с окончательным SELECT, так как создание всех временных таблиц происходит довольно быстро, и я вижу в мониторе MySQL (используя SHOW FULL PROCESSLIST), что SELECT занимает 95% время. Большая часть Stored Procedures работает с тоннами данных, с множественными соединениями.

Есть идеи, почему основной сервер может иметь такую ​​​​плохую производительность, даже если он самый мощный?

Мы искали сообщения об ошибках производительности последних версий, но то, что мы нашли, совсем не помогло http://bugs.mysql.com/bug.php?id=44585

Я буду очень признателен за любую помощь

Этот вопрос лучше задать при сбое сервера? это мой первый вопрос

Извините за мой английский.


person Nico    schedule 30.05.2012    source источник
comment
Что вызвало сбой MySQL? Проблема полностью устранена? Например, если это был частичный отказ диска, а неисправный диск все еще используется, это может привести к очень низкой производительности ввода-вывода. Попробуйте профилировать свой запрос, чтобы увидеть, где именно при его обработке MySQL тратит пора. Этот вопрос лучше подходит для сбоя сервера или администраторов баз данных ; голосование за переезд.   -  person eggyal    schedule 30.05.2012
comment
Было ли повреждение базы данных из-за проблемы с диском? был запущен mysqlcheck после восстановления и оптимизации таблиц.   -  person MichaelN    schedule 30.05.2012
comment
Основной сервер находится под нагрузкой?   -  person Marcus Adams    schedule 30.05.2012
comment
@eggyal Сбой был вызван ошибкой версии разработки MySQL, поэтому мы перешли на стабильную версию, насколько я знаю, диск все еще используется. Сейчас я профилирую запросы. @MichaelN БД была восстановлена ​​из файла резервной копии .sql до сбоя. @Marcus Adams, сервер выделен и не имеет большей нагрузки, чем обычно. Спасибо всем   -  person Nico    schedule 30.05.2012


Ответы (2)


Одни и те же таблицы задействованы во всех проблемных операторах SELECT в хранимых процедурах, которые вы пробовали? Возможно, для некоторых из них необходимо перестроить статистику индекса — проверьте ОПТИМИЗИРОВАТЬ ТАБЛИЦУ.

person DrewCo    schedule 30.05.2012
comment
БД была восстановлена ​​из файла резервной копии .sql до сбоя, я все равно попробую оптимизировать - person Nico; 30.05.2012

Наконец мы перенесли БД на другой сервер, новая версия MySQL.

person Nico    schedule 24.07.2012