Mysql phpMyadmin Timeout Вопрос - PullRequest
       36

Mysql phpMyadmin Timeout Вопрос

5 голосов
/ 31 марта 2011

У меня очень большая база данных в Mysql. Мне нужно, чтобы это поддерживалось таким образом. например, его около 300 000 записей в Innodb.

Я проанализировал записи в базе данных, но теперь мне нужно уточнить ее, преобразовав некоторые типы полей, например long int в tinyint или что-то в этом роде. Когда я запускаю это через phpMyadmin, соединение через 6 минут останавливается, и я получаю ошибку тайм-аута соединения?.

Поскольку php отправил запрос в mysql, разве mysql не должен просто делать свое дело, несмотря на то, что до его завершения? так что даже если php-страница истечет, это все равно будет сделано? Или когда тайм-аут соединения, Mysql просто отказывается от запроса?

Мне нужно запустить фильтр для базы данных с помощью php, и я хочу иметь возможность обновлять страницу каждые 30 секунд с новыми результатами, которые он находит по мере продолжения поиска, но если пользователь уходит, я все равно хотел бы закончить поиск, поскольку он создает таблицу для этого пользователя. Так что, если они запустят запрос и закроют браузер, когда вернутся к нему, он продолжит поиск?

Никогда не работал с таким большим БД, как этот, если пользователи запускают текстовый поиск, я знаю, что это займет много времени. Любые идеи / советы или рекомендации будут оценены.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Вы также можете обычно использовать клиент MySQL на самом сервере. Это, как правило, мой фаворит для импортированных больших БД.

mysql -u user -p -h localhost dbname < import.sql

Или в вашем случае попасть в командную строку (так же, как окно SQL в phpmyadmin:

mysql -u user -p -h localhost dbname
0 голосов
/ 31 марта 2011

В InnoDB вся пользовательская активность происходит внутри транзакции. Таким образом, если запрос не завершается, транзакция не будет зафиксирована и будет завершена.

Тем не менее, в PHP вы можете указать сценарию продолжить работу, даже если пользователь останавливает веб-страницу. Это делается с помощью функции ignore_user_abort () .

но я думаю, что phpMyAdmin не предоставляет функцию ignore_user_abort.

Другим решением было бы использование асинхронного запроса MySQL, но я думаю, что это (пока) невозможно с PHP. Может быть, здесь , но не в phpMyAdmin.

...