Почему простой запрос MySQL занимает более 5 секунд? - PullRequest
0 голосов
/ 07 декабря 2011

Обновление 2011/12/12: Теперь выделено как FastCGI на моем (на основе IIS) хостинг-пакете. Я заставил их отключить его, потому что запланированное задание не выполнялось. Я знаю, где я сейчас нахожусь. Еще раз спасибо всем.

Марк Илифф


Обновление 2011/12/11: Хорошо, я должен поднять руки до случайного неверного направления.

Благодаря вашим многочисленным предложениям я теперь идентифицировал это как проблему со страницами PHP в моем пакете хостинга, а не конкретно с MySQL. Загрузка пустой страницы PHP по-прежнему занимает 5-6 секунд, тогда как та же страница с расширением ASP или HTML загружается слишком быстро, чтобы ее можно было измерить. Я обращаюсь к этому с моим хостинг-провайдером.

Извините, что не подумал проверить это в первую очередь, и спасибо за подачу: очень признателен.

Марк Илифф


Я относительно новичок в MySQL / PHP и подозреваю, что делаю что-то глупое со следующим:

        <?
        // Slave page: block/unblock merchant
        $id = $_POST["id"] ;
        $val = $_POST["val"] ;

        if ( isset( $id ) && isset( $val ) ) {
            $conx = mysqli_connect ( "sql05", $dbAc, $dbPwd, "finewine" ) 
                or die ("Conx failed") ;

            // update record
            $sql = "UPDATE wsMerchants SET 
                blockem = ".$val.", updateDT = '".date( "Y-m-d H:i:s" )."' 
                WHERE id = ".$id.";" ;
            $result = mysqli_query( $conx, $sql ) ;

            //tidy
            mysqli_close( $conx ) ;
            };
        ?>

Result of SHOW CREATE:
CREATE TABLE `wsmerchants` (
 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `merchant` text NOT NULL,
 `country` tinytext NOT NULL,
 `blockem` tinyint(1) DEFAULT '0',
 `benchmark` tinyint(1) DEFAULT '0',
 `createDT` datetime NOT NULL,
 `updateDT` datetime NOT NULL,
 UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8

Я звоню из JQuery (используя $.post). В таблице БД 29 записей и 7 полей.

Работает, но невероятно медленно.

С такими печальными старыми Access (+ Classic ASP) запросами, как этот, для всех практических целей, мгновенно. В MySQL, согласно таймеру в Firebug, запрос занимает 5-6 секунд.

Я использую MySQL 5.0.51a + PHP 5.2.13 в среде Windows.

Я нашел здесь другие вопросы, но в основном они связаны со сложными SQL-запросами.

Ответы [ 3 ]

0 голосов
/ 07 декабря 2011

Я не вижу в этом запросе ничего, что заняло бы> 5 секунд. Firebug, вероятно, дает вам время общего запроса, а не только запроса. Тем не менее, если задержка особенно высока между клиентом и сервером приложений или сервером приложений и базой данных, то 5 секунд немыслимы. Я бы начал с тестирования сценария, чтобы точно выяснить, что занимает так много времени. Это можно сделать, взяв временные метки с помощью microtime () по всему сценарию, а затем вычтя их, чтобы выяснить, сколько времени занимает каждая часть сценария.

0 голосов
/ 09 декабря 2011

Судя по разговору в комментариях, похоже, что ваша проблема связана с сетью, а не с вашим кодом. Моя интуиция говорит мне, что это, вероятно, проблема DNS, и в этом случае вы можете захотеть взглянуть на этот раздел руководства MySQL. В качестве альтернативы попробуйте использовать IP-адрес вместо "sql05" в строке подключения, посмотрите, не ускоряет ли это процесс.

0 голосов
/ 07 декабря 2011

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

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

Затем выполните простоеТестовый скрипт, который подключается только к базе данных и не выполняет никаких запросов.Убедитесь, что вы поместили что-то после вызова подключения, чтобы видеть, когда оно завершит подключение.

В любом случае, это мое предположение - узкое место заключается в подключении к базе данных.

Еще одна вещь,это стек AMP (WAMP, XAMPP) в Windows, или вы используете PHP через IIS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...