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

Cuándo usar SQL_NO_CACHE

SQL_NO_CACHE

Simplemente agregue SQL_NO_CACHE después de la parte SELECT de la instrucción SELECT y antes de la lista de campos. La primera consulta a continuación utilizará la caché de consultas si está habilitada y la consulta está almacenada en caché:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

La segunda consulta a continuación no usará el caché de consultas:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Esto es particularmente útil cuando se compara una consulta; si la memoria caché de consultas está habilitada, aunque la primera consulta puede tardar algún tiempo, la segunda y las siguientes consultas son casi instantáneas. Con el uso de SQL_NO_CACHE, puede estar seguro de que la caché de consultas no se usa y puede comparar con seguridad los tiempos de los resultados. La sugerencia de SQL_NO_CACHE desactiva el mecanismo de almacenamiento en caché de consultas incorporado de MySQL para una consulta en particular. Puede ayudar a MySQL a hacer que la caché de consultas sea más eficiente utilizando esta sugerencia en consultas que son muy dinámicas (como una búsqueda de palabras clave o un informe que solo se ejecuta por la noche). Asegúrese de que la caché de consultas esté activada; de lo contrario, no es necesario. comando.

¿Qué SQL_CACHE y SQL_NO_CACHE?

Las opciones SQL_CACHE y SQL_NO_CACHE afectan el almacenamiento en caché de los resultados de la consulta en la caché de consultas. SQL_CACHE le dice a MySQL que almacene el resultado en la caché de consultas si se puede almacenar en caché y el valor de la variable del sistema query_cache_type es 2 o DEMAND. Con SQL_NO_CACHE, el servidor no utiliza la caché de consultas. No comprueba la caché de consultas para ver si el resultado ya está en caché, ni almacena en caché el resultado de la consulta. (Debido a una limitación en el analizador, un carácter de espacio debe preceder y seguir a la palabra clave SQL_NO_CACHE; un carácter que no sea un espacio, como una nueva línea, hace que el servidor verifique la caché de consultas para ver si el resultado ya está almacenado).

NO_CACHE, según mi opinión, se puede usar si 'CACHE' está habilitado y los datos en la base de datos se actualizan dinámicamente, es decir, no se puede confiar en la caché de datos de la base de datos, por ejemplo:almacenar el hash de la contraseña del usuario, no podemos confiar en CACHE ya que es frecuente posibilidad de cambio de datos

Actualizaciones de escenarios útiles

1) obligar a no usar caché para probar la velocidad de consulta