Так что этот меня озадачивает. 2 дня назад почти все запросы на нашем сервере стали медленными. Журнал медленных запросов практически изменяется каждый раз, когда страница обслуживается.Почти все запросы стали медленными
Что меня озадачивает, так это то, что у нас нет особо большой таблицы, только 15 000 или около того записей, а индексы (насколько мне известно) не являются проблемой. Также выполнение тех же запросов в PHPMYADMIN выполняется практически в нулевое время.
Пользователи таблицы имеют идентификаторы, имя, страну, идентификатор, crmstatus, modified_time, last_comment и звонки.
Сервер имеет 8 ядер и 16 ГБ оперативной памяти.
Вот наш my.cnf:
[mysqld]
skip-name-resolve
innodb_file_per_table=1
innodb_buffer_pool_size=134217728
max_allowed_packet=268435456
open_files_limit = 1024000
query_cache_type = 1
innodb_buffer_pool_instances = 3
slow-query-log = 1
long_query_time = 0.5
query_cache_size=1G
join_buffer_size=16M
tmp_table_size=512M
max_heap_table_size=1G
thread_cache_size=8
table_open_cache=4096
innodb_buffer_pool_size=3G
key_buffer_size=256M
query_cache_limit=512M
tmp_table_size=512M
slow-query-log = 1
slow-query-log-file = /var/log/mysql/mysql-slow.log
log_error = /var/log/mysqlerror.log
default-storage-engine=MyISAM
bind-address = 127.0.0.1
И вот последние несколько медленных запросов, которые на самом деле не должно быть.
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 1.352077 Lock_time: 0.000062 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820458;
update `users` set `modified_time` = '2016-06-13 12:20:57', `last_comment` = '2016-06-13 12:20:57' where `id` = '50045170';
# Time: 160613 14:21:28
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 1.613013 Lock_time: 0.000041 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820488;
update users set calls = calls+1, modified_time="2016-06-13 12:21:26" where id = '50045127';
# Time: 160613 14:21:47
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 9.126265 Lock_time: 0.000055 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820507;
update `users` set `modified_time` = '2016-06-13 12:21:38', `last_comment` = '2016-06-13 12:21:38' where `id` = '50037097';
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 9.051441 Lock_time: 0.000053 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820507;
update users set calls = calls+1, modified_time="2016-06-13 12:21:38" where id = '50045104';
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 6.198130 Lock_time: 0.000042 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820507;
update `users` set `modified_time` = '2016-06-13 12:21:41', `last_comment` = '2016-06-13 12:21:41' where `id` = '50015310';
# Time: 160613 14:22:03
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 1.770877 Lock_time: 0.000074 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820523;
update users set calls = calls+1, modified_time="2016-06-13 12:22:01" where id = '50045235';
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 0.564553 Lock_time: 0.000043 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820523;
update users set calls = calls+1, modified_time="2016-06-13 12:22:02" where id = '50045126';
# Time: 160613 14:22:29
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 11.289152 Lock_time: 0.000064 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820549;
update users set calls = calls+1, modified_time="2016-06-13 12:22:18" where id = '50045232';
# [email protected]: REMOVED[REMOVED] @ localhost []
# Query_time: 11.016395 Lock_time: 0.000085 Rows_sent: 0 Rows_examined: 1
SET timestamp=1465820549;
update `users` set `crmstatus` = 'Decline', `modified_time` = '2016-06-13 12:22:18' where `id` = '50045055';
Это имеет значение, если вы НЕ ссылаетесь на идентификаторы в виде строки, то есть используете где id = 50045232 вместо id = '50045232' - возможно, что это может занять больше времени, чем нужно, потому что оно сравнивает строки, числа (проверьте, что поле ID тоже INT не VARCHAR) –
Я не пишу SQL напрямую, а использую встроенные функции Laravel 4. Вот как запрос выглядит код-накрест: DB :: таблица ('пользователи') \t \t \t \t -> где ('ID', $ _POST [ 'идентификатор пользователя']) \t \t \t \t -> обновление (array ('crmstatus' => $ _POST ['crmstatus'], 'modified_time' => date ('Ymd G: i: s'))); – PHPWhisperer
Большинство ваших запросов выглядят как ...... где 'id' = '50045055'; Используете ли вы строку (текст) в качестве первичного ключа? –