Conceptos
PHP Manual

Integración de una caché

Nota: Requisitos de versión

Esta característica requiere el uso de PECL/mysqlnd_ms 1.3.0-beta o posterior y de PECL/mysqlnd_qc 1.1.0-alpha o posterior. PECL/mysqlnd_ms debe ser compilado para soportar esta característica. Se requiere PHP 5.4.0 o posterior.

Nota: Clústeres MySQL apropiados

Esta característica está pensada para usarla con la Repliación MySQL (copia primaria). Actualmente, no se admiten otros tipos de clústeres MySQL. Los usuarios de tales clústeres deben controlar PECL/mysqlnd_qc manualmente si están insteresados en el almacenamiento en caché de consultas en el lado del servidor.

El enfoque principal de PECL/mysqlnd_ms es el soporte para los clústeres de replicación MySQL (copia primaria asíncrona). Los esclavos de un clúster de replicación MySQL pueden o no reflejar las últimas actualizaciones del servidor. Los esclavos son asíncronos y pueden demorarse con respecto al maestro. Una lectura desde un esclavo se considera que es consistencia final desde una perspectiva total del clúster.

El mismo nivel de consistencia es ofrecido por el almacenamiento en caché, usando la estrategia de invalidación de tiempo de vida (TTL). Se pueden servir datos actuales o antiguos. Finalmente, los datos buscados en la caché no estarán disponibles, por lo que es necesario acceder al origen de la caché.

Dado que un esclavo de Replicación MySQL (secundario asíncrono) y una caché local que maneja TTL proporcionan el mismo nivel de servicio, es posible reemplzar de forma transparente un acceso a una base de datos remota con un acceso a la caché local para obtener mejores posibilidades.

A partir de PECL/mysqlnd_ms 1.3.0-beta, el complemento puede controlar de forma transparente PECL/mysqlnd_ms 1.1.0-alpha o posterior para almacenar en caché una consulta de solo lectura, si está explícitamente permitido, configurando una calidad de servicio apropiada a través de mysqlnd_ms_set_qos(). Por favor, lea la guía rápida para ver un ejemplo de código. Ambos complementos deben estar instalados, PECL/mysqlnd_ms debe ser compilado para soportar la característica de la caché y se ha de utilizar PHP 5.4.0 o posterior.

Las aplicaciones tienen control total sobre el uso de la caché y pueden solicitar datos actuales en cualquier momento si fuera necesario. Se puede habilitar y deshabilitar el uso de la caché durante la ejecución de un script. La caché se usará si mysqlnd_ms_set_qos() establece la calidad del servicio a consistencia final y habilita el uso de la caché. El uso de la caché se deshabilita solicitando niveles de consistencia superiores, por ejemplo, consistencia de sesión (lectura de sus datos). Una vez que la calidad del servicio ha vuelto a consistencia final, la caché se podrá usar de nuevo.

Si la caché está habilitada para sentencias de solo lectura, PECL/mysqlnd_ms podrá inyectar sugerencias SQL para controlar la caché mediante PECL/mysqlnd_qc. Se puede modificar la sentencia SQL si se obtiene de la aplicación. Se supone que los tratamientos de SQL subsiguientes ignorarán las sugerencias SQL. Una sugerencia SQL es un comentario SQL. Los comentarios no deben ser ignorados, por ejemplo, por el servidor de la base de datos.

El TTL de una entrada de la caché se calcula en base a cada sentencia. Las aplicaciones pueden establecer un máximo de edad para los datos que quieren recuperar mediante mysqlnd_ms_set_qos(). La edad establece un límite superior aproximado de los segundos que los datos devueltos pueden demorarse con respecto al maestro.

La siguietne lógica se utiliza para calcular el TTL real si la caché está habilitada. La lógica toma en cuenta la demora del esclavo aproximada para elegit un TTL. Si, por ejemplo, hay dos esclavos que se retrasan 5 y 10 y la edad máxima permitida es 60 segundos, el TTL se establece a 50 segundos. Observe que el establecimiento de la edad no es más que una aproximación.

El algoritmo puede parecer costoso. SHOW SLAVE STATUS es una operación muy rápida. Dado un número suficiente de peticiones y de usos de la caché por segundo, el coste de comprobar la demora de los esclavos puede superar fácilmente el coste de la decisiones de la caché.

Las sugerencias sobre un algoritmo mejor siempre son bienvenidas.


Conceptos
PHP Manual