Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.189.13.43] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Прошу помочь, не понимаю в чем дело..
Файл конфига: [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] bind=127.0.0.1 datadir=/var/lib/mysql port = 3306 socket = /var/lib/mysql/mysql.sock user=mysql symbolic-links=0 skip-external-locking key_buffer_size = 384M max_allowed_packet = 8M table_open_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M thread_concurrency = 4 max_heap_table_size = 320M tmp_table_size = 320M slow_query_log=1 slow_query_log_file=/var/log/mysql_low.log long_query_time=1 server-id = 1 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout Табличка: CREATE TABLE `table` ( `myid` varchar(80) NOT NULL, `knock` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`myid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Тупящий запрос - отрабатывает иногда нормально, иногда по 20 секунд: INSERT INTO `table` (`myid`, `knock`) VALUES ('$myid', NOW()) ON DUPLICATE KEY UPDATE `knock`=NOW() Коннекчусь так: $mysqli = new mysqli("127.0.0.1", sql_user, sql_pass, sql_db, 3306); В чем может быть дело?? У меня еще в бд есть memory таблица, поэтому конфиг такой |
Сообщ.
#2
,
|
|
|
У меня есть подозрение, что виноват хостинг, у него что-то с файловой системой, подвисает все время. А так как этот запрос работает с ФС, то подвисания эти вечно.
С конфигами все в порядке? |
Сообщ.
#3
,
|
|
|
Цитата Dart_Sitius @ У меня есть подозрение, В скрипт добавь отладочных сообщений с временными штампами - тогда можно приблизительно определить "виновника". Действительно ли запрос зависает, а не сам скрипт. |
Сообщ.
#4
,
|
|
|
Измените структуру таблицы на
`knock` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP и запрос на простое INSERT INTO `table` (`myid`) VALUES ('$myid'); А то у Вас масло масляное... Цитата JoeUser @ В скрипт добавь отладочных сообщений с временными штампами - тогда можно приблизительно определить "виновника". Не надо ничего добавлять. Для это есть slow_log. Но если проблема лежит за пределами сервера БД, то ни хрена не увидишь - ни в логе, ни отладочными сообщениями. Цитата Dart_Sitius @ есть подозрение, что виноват хостинг, у него что-то с файловой системой, подвисает все время. Обратись в техподдержку хостера с подробным описанием проблемы. Не помогут - меняй хостинг. |
Сообщ.
#5
,
|
|
|
А другие части системы работают с таблицей? Мож, другой процесс локирует И читает всю таблицу?
|
Сообщ.
#6
,
|
|
|
Цитата Akina @ Не надо ничего добавлять. Для это есть slow_log. Но если проблема лежит за пределами сервера БД, то ни хрена не увидишь - ни в логе, ни отладочными сообщениями. В скрипте до запроса и после выдать в результат (в страницу) временные метки. Допустим, разница по меткам - пол секунды, а сам запрос по часам исполняется 20 сек. Ну очевиден же вывод кто уиноуник. |
Сообщ.
#7
,
|
|
|
Цитата JoeUser @ В скрипт добавь отладочных сообщений с временными штампами Уже так и сделал, и в этом сообщении конкретно виновника описал, именно этот запрос. Остальные запросы идут в таблицу MEMORY, поэтому исполняются быстро. Переехал на другой хостинг, вроде бы теперь летает. Да уж. Проблемы с файловой системой на том хостинге стали очевидны, когда я большой файл решил разделить на несколько частей, и скрипт тратил разное время на каждую часть. Спасибо за ответы всем. |
Сообщ.
#8
,
|
|
|
Цитата Dart_Sitius @ Проблемы с файловой системой Не факт, что с ФС проблемы - возможно урезаны лимиты по памяти. Тогда БД пытается отработать на "чем есть", а есть временные таблицы на диске |
Сообщ.
#9
,
|
|
|
Цитата JoeUser @ В скрипте до запроса и после выдать в результат (в страницу) временные метки. Это раздел по MySQL, а не по PHP. Не забыл? |
Сообщ.
#10
,
|
|
|
Цитата Akina @ Это раздел по MySQL, а не по PHP. Не забыл? Просто помочь хотелось ... Посыпаю голову пеплом))) |