Compartir a través de


Procedimientos recomendados de optimización de esquemas

Un esquema de tabla define los nombres y los tipos de datos de todas las columnas de la tabla. El esquema de tabla se puede establecer durante la creación de tablas o como parte del proceso de ingesta de datos modificando la asignación de ingesta aplicable. La forma en que se define un esquema de tabla puede afectar significativamente al rendimiento de las consultas. El esquema ideal para los datos depende de muchos factores, como el caso de uso, los patrones de acceso a datos y los datos específicos que tiene previsto almacenar. En este artículo se describen los procedimientos recomendados para optimizar el rendimiento mediante el diseño de esquemas eficientes.

Tipos de datos

Para obtener información general sobre los tipos de datos, consulte tipos de datos escalares.

  • Los campos usados habitualmente deben ser columnas con tipo, no de tipo dinámico .

  • Las propiedades JSON agregadas o buscadas con frecuencia en una columna dinámica deben convertirse a una columna normal de la tabla con un tipo más específico, como string, long o real.

  • Las columnas dispersas que no se utilizan habitualmente para filtrar y agregar deben recogerse como una cesta de propiedades en una columna dinámica utilizando la DropMappedFields transformación de asignación.

  • El tipo de las columnas de fecha y hora debe establecerse como datetime y no long u otros tipos de datos.

  • El tipo decimal proporciona precisión exacta, lo que hace que sea más adecuado para las aplicaciones financieras y de otro tipo que requieren precisión exacta. Sin embargo, es mucho más lento que el tipo real. Use solo el tipo decimal cuando sea necesario.

  • El tipo de todas las columnas ID (identificación) debe definirse como string, nunca numérico. Este tipo hará que el índice sea mucho más eficaz y puede mejorar significativamente el tiempo de búsqueda. También habilitará la creación de particiones, ya que esta creación solo se puede definir en columnas de cadena. Si los filtros de consulta usados en esta columna son solo de igualdad, por ejemplo, si la columna tiene guids, puede usar el perfil de codificación Identifier. Para más información, consulte la directiva de codificación.

Tablas

  • Optimice para tablas estrechas, que se prefieren antes que las tablas anchas con cientos de columnas.
  • Para evitar uniones costosas durante el tiempo de consulta, desnormalice los datos de dimensión enriqueciéndolos durante la ingesta. Si la tabla de dimensiones usada para el enriquecimiento está actualizada y el escenario requiere el valor más reciente, use materializar vistas para mantener solo el valor más reciente.
  • Si hay más de 20 columnas que son dispersas, lo que significa que muchos valores son nulos, y estas columnas se utilizan raramente para búsquedas o agregación, entonces agrupe las columnas como una cesta de propiedades JSON en una columna dinámica utilizando el DropMappedFields mapeo de transformación.

Indización

Los campos en los que nunca se busca pueden deshabilitar la indexación. Use la directiva de codificación con el perfil BigObject para deshabilitar la indexación en columnas con tipo dinámico o de cadena.