phpBB SELECT последний раз на новом сервере - PullRequest
0 голосов
/ 08 апреля 2019

Я настраиваю новый сервер и хочу перенести существующую установку phpBB туда.Все прошло нормально, кроме одного SELECT в журнале SLOW и пожирает процессор вечно.Я не специалист по БД, поэтому я потерян.

Старый сервер - Win2008 R2, MySQL 5.7.24, php 5.6.39, одиночный четырехъядерный процессор i7, 24 ГБ ОЗУ

Новый сервер -Win2016, MySQL 8.0.15, php 7.1.5, двухъядерные процессоры Xeon, 96 ГБ ОЗУ

Я попытался открыть каждую таблицу и проверить на наличие ошибок, выполнил mysql_upgrade с результатом OK.Проблемный SELECT:

SELECT ug.user_id, a.forum_id, r.auth_setting, r.auth_option_id, ao.auth_option
            FROM phpbb_acl_groups a, phpbb_user_group ug, phpbb_groups g, phpbb_acl_roles_data r, phpbb_acl_options ao
            WHERE a.auth_role_id = r.role_id AND r.auth_option_id = ao.auth_option_id 
                AND a.group_id = ug.group_id
                AND g.group_id = ug.group_id
                AND ug.user_pending = 0
                AND NOT (ug.group_leader = 1 AND g.group_skip_auth = 1)


                AND ao.auth_option = 'm_';

На старом сервере выбор выполняется немедленно.На новом сервере это длится 25 - 30 секунд.Смотри картинки - смотри "проверенные строки".Но все таблицы выглядят нормально ...

Новый сервер

Старый сервер

Старый сервер my.ini выглядит следующим образом:

max_connections=151
table_open_cache=2000
tmp_table_size=922M
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=3G
key_buffer_size=8M
read_buffer_size=64K
read_rnd_buffer_size=256K
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=1024M
innodb_log_file_size=128M
innodb_thread_concurrency=17
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

Новый сервер my.ini выглядит следующим образом:

max_connections=151
table_open_cache=2000
tmp_table_size=5G
thread_cache_size=10
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=10G
key_buffer_size=8M
read_buffer_size=64K
read_rnd_buffer_size=256K
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=2048M
innodb_log_file_size=128M
innodb_thread_concurrency=24
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Итак, я:

  • сравнивал данные каждой таблицы, столбцы, строки, индексы между старой и новой базой данных. Я не нашел никакой разницы.
  • установил mysql 8.0.15 на другую машину и попробовал там - на случай, если на новом сервере что-то не так.

Без удачи.

Так что, как и в прошлой попытке, я скачал текущую версию mysql 5.7.25 и угадайте, что - это работает.

Так возможно ли, что это какая-то ошибка в ветке MySQL 8.x? Я не вижу других объяснений ...

0 голосов
/ 12 апреля 2019

Этот URL https://dev.mysql.com/doc/relnotes/mysql/8.0/en/ указывает на дату выпуска GA 2019-02-01 для 8.0.15. Каждый раз, когда вы НАЧИНАЕТЕ в выпуск с МЕНЬШЕ, чем 90 дней GA, вы указываете на свою готовность найти / сообщить об ошибках, которые были пропущены. Вы приняли мудрое решение вернуться к 5,7 кое-чему с практической историей успеха. Возможно, вы захотите установить 180 дней ПОСЛЕ Общей доступности, чтобы предотвратить обнаружение / сообщение или обнаружение ошибок, которые еще не были исправлены.

...