1.5.1-stable
Nota:
Esta es la serie estble actual. Use esta versión en entornos de producción.
La documentación está completa.
1.5.0-alpha
Corrección de errores
Corregida la violación de acceso #60605 de PHP cuando mysqlnd_ms está habilitado.
Establecer la adhesión de transacciones deshabilita todo el equilibrado de carga, incluyendo lla tolerancia a fallos automática, durante una transacción. Por lo que podrían ocurrir intercambios de conexiones en mitad de una transacción en configuraciones multimaestro y durante la tolerancia a fallos automática aunque la monitorización de transacciones haya detectado los límites de la transacción apropiadamente.
Rotura de RC y error corregido. Las sugerencias SQL que fuerzan a un tipo
específico de servidor (MYSQLND_MS_MASTER_SWITCH
,
MYSQLND_MS_SLAVE_SWITCH
,
MYSQLND_MS_LAST_USED_SWITCH
) son ignoradas durante
una transacción si la adhesión de transacciones está habilitada y
se han detectado apropiadamente los límites de la transacción.
Este es un cambio de comportamiento. Sin embargo, también es una corrección de error y un paso para alinear comportamiento. Si, en versiones anteriores, con adhesión de transacciones, se combinaba una de las sugerencias SQL enumeradas el filtro de calidad de servicio, podía ocurrir que dichas sugerencias fueran ignoradas. En algún caso, las sugerencias SQL funcionaban, en otros no. El nuevo comportamiento es más consistente. Las sugerencias SQL siempre serán ignoradas durante una transacción si la adhesión de transacciones está habilitado.
Observe que la detección de los límites de transaccoines continua basándose en la monitorización de llamadas a la API. Los comandos SQL que controlan transacciones no son monitorizados.
Rotura de RC y error corregido. Las llamadas a mysqlnd_ms_set_qos() fallarán cuando se hacen en mitad de una transacción si la adhesión de transacciones está habilitada. Los intercambios de conexión no están permitidos durante una transacción. El cambio de la calidad de servicio probablemente resulta en un conjunto diferente de servidores elegidos para la ejecución de consultas, posiblemente haciendo necesario intercambiar conexiones. Así, la llamada no está permitida durante una transacción activa. La calidad de servicio puede ser, sin embargo, cambiada entre transacciones.
Cambios en las características
Se introdujo el filtro node_group
.
El filtro permite organizar servidores (maestro y esclavos)
en grupos. Las consultas se pueden dirigir a ciertos grupos de servidores
prefijando la sentencia de consulta con una sugerencia/comentario de SQL que contenga
el nombre de configuración de grupos. La agrupación se puede usar para
particionar y fragmentar, aunque también para optimizar la caché local.
En el caso de la fragmentación, se ha de pensar en un nombre grupo como una clave fragmentada.
Todas las consultas para una clave fragmentada dada serán ejecutadas en el
fragmento configurado. Nota: tanto el cliente como el servidor deben sorportar la fragmentación
para usar la misma con mysqlnd_ms.
Validación del fichero de configuración extendida durante el arranque de PHP (RINIT).
Se lanzará un error de nivel E_WARNING
si no se puede leer el
fichero de configuración (permisos), si está vacío, o si el fichero (JSON) no se pudo analizar.
Las advertencias podrían aparecer el ficheros log, lo que depende de cómo esté configurado PHP.
Las distribuciones que pretenden proporcionar una configuración precofigurada, incluyendo una
rutina auxiliar de fichero de configuración, se les interroga para colocar {}
en
el fichero de configuración para evitar esta advertencia sobre un fichero de
configuración inválido.
Se realiza una validación extra del fichero de configuración cuando se analizan secciones que abran una conexión. Por favor, observe que aún podrían haber situaciones en las que un fichero de configuración del complemento inválido no conduzca a mensajes de error apropiados, sino a un fallo de conexión.
A partir de PHP 5.5.0, se añadió la mejora de la detección de límites de transacciones para
mysqli
. La extensión mysqli
ha sido
modificada para usar las nuevas llamadas a la API en C de la biblioteca mysqlnd
para comenzar, consolidar y revertir una transacción o un punto de prevención.
Si se usa trx_stickiness
para habilitar transacciones que consideran equilibrado de carga, las funciones
mysqli_begin(), mysqli_commit() and mysqli_rollback()
ahora serán monitorizadas por el complemento, para aceptar la función mysqli_autocommit()
que ya estaba admitida. Todas las características de SQL para controlar
transacciones también están disponibles a través de las funciones mejoradas relacionadas
con el control de transacciones de mysqli
. Esto significa que no es necesario para
emitir sentencias SQL en lugar de usar llamadas a la API. Las aplicaciones
que utilicen las llamadas apropiadas a la API pueden ser equilibradas en carga por
PECL/mysqlnd_ms de una manera completamente consciente de transacciones.
Observe que PDO_MySQL
no ha sido actualizada
aún para usar las nuevas llamadas a la API de mysqlnd. Por lo tanto, la detección
de límites de transacciones con PDO_MySQL
continua estando limitada a
la monitorización pasando PDO::ATTR_AUTOCOMMIT
a
PDO::setAttribute().
Se introdujo trx_stickiness=on
. Esta opción de
trx_stickiness
difiere de trx_stickiness=master
en que
intenta ejecutar una transacción de solo lectura en un esclavo, si la
calidad de servicio (nivel de consistencia) permite el uso de un esclavo.
Las transacciones de solo lectura fueron introducidas en MySQL 5.6 y
ofrecen ganancias de rendimiento.
El soporte para la caché de consultas se considera beta si se usa con la API de
mysqli
. Debería funcionar bien con clústeres basados en copia primaria. Para
las demás API, este rasgo continua siendo experimental.
Los ejemplos de código del fichero fuente de mysqlnd_ms se actualizaron.