Caché de resultados de consulta
Kusto incluye una caché de resultados de consulta. Puede elegir obtener resultados almacenados en caché al emitir una consulta. Experimentará un mejor rendimiento de las consultas y reducirá el consumo de recursos si la memoria caché puede devolver los resultados de la consulta. Sin embargo, este rendimiento se produce a costa de una "obsolescencia" en los resultados.
Uso de la caché
Establezca la query_results_cache_max_age
opción como parte de la consulta para usar la caché de resultados de la consulta. Puede establecer esta opción en el texto de la consulta o como una propiedad de solicitud de cliente. Por ejemplo:
set query_results_cache_max_age = time(5m);
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
El valor de opción es un timespan
valor que indica la "antigüedad" máxima de la memoria caché de resultados, medida a partir de la hora de inicio de la consulta. Más allá del intervalo de tiempo establecido, la entrada de caché está obsoleta y no se volverá a usar. Establecer un valor de 0 equivale a no establecer la opción .
Compatibilidad entre consultas
Consultas idénticas
La caché de resultados de la consulta devuelve resultados solo para las consultas que se consideran "idénticas" a una consulta almacenada en caché anterior. Dos consultas se consideran idénticas si se cumplen todas las condiciones siguientes:
- Las dos consultas tienen la misma representación (que las cadenas UTF-8).
- Las dos consultas se realizan en la misma base de datos.
- Las dos consultas comparten las mismas propiedades de solicitud de cliente. Las siguientes propiedades se omiten con fines de almacenamiento en caché:
Consultas incompatibles
Los resultados de la consulta no se almacenarán en caché si se cumple alguna de las condiciones siguientes:
- La consulta hace referencia a una tabla que tiene habilitada la directiva RestrictedViewAccess .
- La consulta hace referencia a una tabla que tiene habilitada la directiva RowLevelSecurity .
- La consulta usa cualquiera de las siguientes funciones:
- La consulta tiene acceso a una tabla externa o a datos externos.
- La consulta usa el operador evaluate plugin .
Ninguna entrada de caché válida
Si no se encontró un resultado almacenado en caché que satisfaga las restricciones de tiempo o no hay un resultado almacenado en caché de una consulta "idéntica" en la memoria caché, la consulta se ejecutará y sus resultados se almacenarán en caché, siempre y cuando:
- La ejecución de la consulta se completa correctamente y
- El tamaño de los resultados de la consulta no supera los 16 MB.
Resultados de la memoria caché
¿Cómo indica el servicio que los resultados de la consulta se sirven desde la memoria caché?
Al responder a una consulta, Kusto envía otra tabla de respuesta ExtendedProperties que incluye una Key
columna y una Value
columna.
Los resultados de la consulta almacenados en caché tendrán otra fila anexada a esa tabla:
- La columna de
Key
la fila contendrá la cadena.ServerCache
- La columna de
Value
la fila contendrá un contenedor de propiedades con dos campos:OriginalClientRequestId
: especifica el ClientRequestId de la solicitud original.OriginalStartedOn
: especifica la hora de inicio de ejecución de la solicitud original.
Distribución
Los nodos del clúster no comparten la memoria caché. Cada nodo tiene una caché dedicada en su propio almacenamiento privado. Si dos consultas idénticas llegan a nodos diferentes, la consulta se ejecutará y almacenará en caché en ambos nodos. Este proceso puede ocurrir si se usa una coherencia débil . Al establecer la coherencia de affinitizedweakconsistency
las consultas en , puede tener consultas de coherencia débil que sean idénticas en el mismo encabezado de consulta y, por tanto, aumentar la tasa de aciertos de caché.
Administración
Se admiten los siguientes comandos de administración y observabilidad:
- Mostrar caché de resultados de la consulta: devuelve estadísticas relacionadas con la caché de resultados de la consulta.
- Borrar caché de resultados de la consulta: borra la caché de resultados de la consulta.
- Actualizar entrada de caché de consultas: se puede actualizar una entrada de caché de consultas específica mediante
query_results_cache_force_refresh
la propiedad de solicitud de cliente (OptionQueryResultsCacheForceRefresh). Cuando se establecetrue
en , este comando forzará que la caché de resultados de la consulta se actualice también cuando haya una caché existente. Este proceso es útil en escenarios que requieren que los resultados de las consultas estén disponibles para realizar consultas. Esta propiedad debe usarse en combinación con "query_results_cache_max_age" y enviarse a través del objeto ClientRequestProperties. La propiedad no puede formar parte de una instrucción 'set'.
Capacity
La capacidad de caché se fija actualmente en 1 GB por nodo de clúster. La directiva de expulsión es LRU.
Caché de resultados de consulta de nivel de partición
La caché de resultados de la consulta es eficaz cuando la misma consulta se ejecuta varias veces en sucesión rápida y puede tolerar la devolución de datos ligeramente antiguos. Sin embargo, algunos escenarios, como un panel activo, requieren los resultados más actualizados.
Por ejemplo, una consulta que se ejecuta cada 10 segundos y abarca las últimas 1 hora puede beneficiarse de almacenar en caché los resultados de la consulta intermedia en el nivel de almacenamiento (partición).
La caché de resultados de la consulta de nivel de partición se habilita automáticamente cuando Query results cache
está en uso. Dado que comparte la misma memoria caché que Query results cache
, se aplican las mismas directivas de capacidad y expulsión.
Syntax
set
query_results_cache_per_shard
; Consulta
Nota
Esta opción se puede establecer en el texto de la consulta o como una propiedad de solicitud de cliente.
Más información sobre las convenciones de sintaxis.
Ejemplo
set query_results_cache_per_shard;
GithubEvent
| where CreatedAt > ago(180d)
| summarize arg_max(CreatedAt, Type) by Id
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de