sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo hacer que una consulta mysql se actualice constantemente en PHP?

Está atascado con las encuestas con su pila tecnológica actual. MySQL no tiene ninguna buena manera de enviarle una notificación de que hay algo nuevo que ver.

(Podría considerar agregar un subsistema de cola de mensajes, como RabbitMQ, por ejemplo, pero eso requeriría un gran cambio en la estructura de su aplicación).

Algunas pautas para manejar las encuestas al menor costo posible.

  1. Establezca las expectativas del usuario en una latencia de unos segundos en los mensajes en lugar de milisegundos.

  2. Realice consultas con la frecuencia necesaria para cumplir con las expectativas de latencia.

  3. Evite consultar muchos datos con cada consulta. ¿Cómo puedes hacer eso?

    una. Guarde la marca de tiempo más reciente cada vez que ejecute una consulta

    b. No use SELECT * . En su lugar, proporcione los nombres de las columnas que realmente necesita. Esto permite que el optimizador de MySQL ayude a reducir el costo de sus consultas.

    C. Haga que sus consultas hagan SELECT whatever WHERE timestamp > saved_timestamp ORDER BY timestamp por lo que solo obtiene elementos nuevos de su mesa, en orden. Si su sistema no está muy ocupado, estos SELECT a menudo no devolverán filas. Eso es bueno.

    d. Asegúrese de tener un índice de varias columnas en la marca de tiempo y las otras columnas en su instrucción SELECT. Esto se llama un índice de cobertura .

    mi. Inmediatamente después de abrir su conexión a MySQL, emita esta instrucción SQL. Permite que MySQL obtenga sus datos con menos contención con otros clientes de MySQL insertando filas en la tabla.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Si está haciendo esto con AJAX desde los navegadores de sus usuarios, desea incluir la marca de tiempo más reciente en las solicitudes de AJAX para que pueda entregar los nuevos elementos necesarios para el navegador de cada usuario.