Compartir a través de


Caché de resultados de consulta

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Kusto incluye una caché de resultados de consulta. Puede optar por 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é:
    • ClientRequestId
    • Application
    • Usuario

Consultas incompatibles

Los resultados de la consulta no se almacenarán en caché si se cumple alguna de las condiciones siguientes:

No hay 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 almacenadas en caché tendrán otra fila anexada a esa tabla:

  • La columna de Key la fila contendrá la cadena. ServerCache
  • La columna de la Value fila contendrá un contenedor de propiedades con dos campos:
    • OriginalClientRequestId: especifica clientRequestId de la solicitud original.
    • OriginalStartedOn : especifica la hora de inicio de ejecución de la solicitud original.

Distribución

Los nodos de 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 distintos nodos, 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 affinitizedweakconsistencylas 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 consulta: devuelve estadísticas relacionadas con la caché de resultados de la consulta.
  • Borrar caché de resultados de 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 establece trueen , este comando forzará la actualización de la caché de resultados de la consulta 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

Puede usar la caché de resultados de consulta de nivel de partición para escenarios que requieran los resultados más actualizados, como un panel activo. Por ejemplo, una consulta que se ejecuta cada 10 segundos y abarca las últimas 1 hora puede beneficiarse del almacenamiento en caché de 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.

Sintaxis

setquery_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.

Obtenga 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