На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Иногда mysql коннектится/выполняет запросы очень долго (5, 10, 20 секунд)
    Прошу помочь, не понимаю в чем дело..
    Файл конфига:
    ExpandedWrap disabled
      [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

    Табличка:
    ExpandedWrap disabled
      CREATE TABLE `table` (
        `myid` varchar(80) NOT NULL,
        `knock` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`myid`)
      ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    Тупящий запрос - отрабатывает иногда нормально, иногда по 20 секунд:
    ExpandedWrap disabled
      INSERT INTO `table` (`myid`, `knock`) VALUES ('$myid', NOW()) ON DUPLICATE KEY UPDATE `knock`=NOW()

    Коннекчусь так:
    ExpandedWrap disabled
      $mysqli = new mysqli("127.0.0.1", sql_user, sql_pass, sql_db, 3306);

    В чем может быть дело?? У меня еще в бд есть memory таблица, поэтому конфиг такой
      У меня есть подозрение, что виноват хостинг, у него что-то с файловой системой, подвисает все время. А так как этот запрос работает с ФС, то подвисания эти вечно.
      С конфигами все в порядке?
        Цитата Dart_Sitius @
        У меня есть подозрение,

        В скрипт добавь отладочных сообщений с временными штампами - тогда можно приблизительно определить "виновника". Действительно ли запрос зависает, а не сам скрипт.
          Измените структуру таблицы на
          ExpandedWrap disabled
            `knock` timestamp NOT NULL
                              DEFAULT CURRENT_TIMESTAMP
                              ON UPDATE CURRENT_TIMESTAMP

          и запрос на простое
          ExpandedWrap disabled
            INSERT INTO `table` (`myid`) VALUES ('$myid');

          А то у Вас масло масляное...

          Цитата JoeUser @
          В скрипт добавь отладочных сообщений с временными штампами - тогда можно приблизительно определить "виновника".

          Не надо ничего добавлять. Для это есть slow_log.
          Но если проблема лежит за пределами сервера БД, то ни хрена не увидишь - ни в логе, ни отладочными сообщениями.

          Цитата Dart_Sitius @
          есть подозрение, что виноват хостинг, у него что-то с файловой системой, подвисает все время.

          Обратись в техподдержку хостера с подробным описанием проблемы. Не помогут - меняй хостинг.
          Сообщение отредактировано: Akina -
            А другие части системы работают с таблицей? Мож, другой процесс локирует И читает всю таблицу?
              Цитата Akina @
              Не надо ничего добавлять. Для это есть slow_log.
              Но если проблема лежит за пределами сервера БД, то ни хрена не увидишь - ни в логе, ни отладочными сообщениями.

              В скрипте до запроса и после выдать в результат (в страницу) временные метки. Допустим, разница по меткам - пол секунды, а сам запрос по часам исполняется 20 сек. Ну очевиден же вывод кто уиноуник.
                Цитата JoeUser @
                В скрипт добавь отладочных сообщений с временными штампами

                Уже так и сделал, и в этом сообщении конкретно виновника описал, именно этот запрос. Остальные запросы идут в таблицу MEMORY, поэтому исполняются быстро.
                Переехал на другой хостинг, вроде бы теперь летает. Да уж.
                Проблемы с файловой системой на том хостинге стали очевидны, когда я большой файл решил разделить на несколько частей, и скрипт тратил разное время на каждую часть.
                Спасибо за ответы всем.
                Сообщение отредактировано: Dart_Sitius -
                  Цитата Dart_Sitius @
                  Проблемы с файловой системой

                  Не факт, что с ФС проблемы - возможно урезаны лимиты по памяти. Тогда БД пытается отработать на "чем есть", а есть временные таблицы на диске :-?
                    Цитата JoeUser @
                    В скрипте до запроса и после выдать в результат (в страницу) временные метки.

                    Это раздел по MySQL, а не по PHP. Не забыл?
                      Цитата Akina @
                      Это раздел по MySQL, а не по PHP. Не забыл?

                      Просто помочь хотелось ... :) Посыпаю голову пеплом)))
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0338 ]   [ 16 queries used ]   [ Generated: 20.04.24, 03:40 GMT ]