2011-03-31 12 views
5

Tengo una base de datos muy grande en Mysql. Necesito que se mantenga de esta manera. por ejemplo, tiene alrededor de 300,000 registros en Innodb.Mysql phpMyadmin Timeout Pregunta

Analicé los registros en la base de datos, pero ahora debo refinarlo convirtiendo algunos de los tipos de campo, por ejemplo, un int largo a tinyint o algo así. Cuando ejecuto esto a través de phpMyadmin, la conexión después de 6 minutos se detiene y obtengo un error de tiempo de espera de conexión.

Desde que php envió la solicitud a mysql, ¿no debería mysql estar haciendo lo suyo sin importar nada hasta que se haga? entonces, incluso si la página php agota el tiempo de espera, ¿todavía se hará? ¿O cuando la conexión expira, Mysql simplemente abandona la solicitud?

Necesito ejecutar un filtro en la base de datos a través de php y quiero poder actualizar la página cada 30 segundos con nuevos resultados que encuentre mientras continúa su búsqueda, pero si el usuario se aleja, aún me gustaría termine la búsqueda ya que crea una tabla para ese usuario. Entonces, si ejecutan una consulta y cierran su navegador cuando regresan, ¿continuará con la búsqueda?

Nunca antes había trabajado con un gran DB como este, si los usuarios ejecutan una búsqueda textual sé que llevará mucho tiempo. Cualquier información/consejo u orientación sería apreciada.

Gracias

+0

@ user685590 1 para la pregunta ¿Qué versión de phpMyAdmin está usando – eisberg

+0

¿Cuáles son? las opciones de InnoDB de su servidor MySQL, como el tamaño de la agrupación de almacenamientos intermedios? –

Respuesta

1

También puede utilizar generalmente el cliente mysql en el servidor. Tiende a ser mi favorito para grandes DB importados.

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

o en su caso para llegar a la línea de comandos (igual que la ventana SQL en phpMyAdmin:.

mysql -u user -p -h localhost dbname 
+0

Gracias por el asesoramiento. Tal vez necesite mencionar que necesita tener import.sql accesible y cargado en su servidor. – kontur

0

In InnoDB, all user activity occurs inside a transaction. Por lo tanto, si la consulta no va en el extremo, no se confirma la transacción y que será con hojas.

Sin embargo, en PHP, puede indicarle a una secuencia de comandos que continúe incluso si el usuario está deteniendo la página web. Se realiza con la función ignore_user_abort().

pero creo que phpMyAdmin no da una función ignore_user_abort.

Otra solución sería utilizar una consulta MySQL asíncrona, pero creo que aún no es posible con PHP. Maybe here, pero no en phpMyAdmin tampoco.

Cuestiones relacionadas