¿Qué significa ' tablas de distribución ' ¿significa?


La mejor respuesta

Pasar las mesas es un trabajo en un restaurante. Significa limpiar la mesa entre clientes. Esto incluye quitar todos los artículos sucios o usados ​​(platos, cubiertos, servilletas) y luego limpiar la mesa.

El título de trabajo tradicional para esto es «ayudante de camarero», pero no todos los que hacen este trabajo son niños . Es posible que ahora haya un término más neutral en cuanto al género.

Respuesta

En el escenario que describe, indica que los campos más utilizados en la tabla son la clave principal (CompanyId ), un campo de datos único (CompanyName) y una clave externa (IndustryId). Si hay índices en estos campos, lo cual está garantizado para la clave principal, y muy probable para la clave externa, ya que de lo contrario el rendimiento de su base de datos sería malo, entonces las consultas que hacen referencia solo a estos campos, en muchos casos, serán satisfechas totalmente de los índices . No se leerán las páginas de la base de datos. Puede comprobarlo usted mismo solicitando un plan de ejecución de consultas al analizador de consultas. Si el plan de ejecución utiliza un «índice de buscar» o «carrete índice», entonces «es el uso de un índice para construir los resultados de la consulta. Si está agrupado el índice de clave principal, la situación es algo diferente, pero yo» ll dejo a para investigar qué es un índice agrupado en SQL Server y cómo cambia la forma en que se almacena y se accede a la base de datos. En general, si SQL Server puede construir un conjunto de resultados usando datos de un índice, lo hará en lugar de usar las páginas de la tabla de la base de datos, porque eso significa leer menos datos. Un índice está estructurado de manera idéntica a una tabla, excepto que solo tiene las columnas especificadas en el índice, más un campo localizador de filas que es un puntero al lugar donde se almacena la fila; ese puntero (24 bytes) es típicamente más pequeño que los datos de la fila en sí y, por lo tanto, casi invariablemente caben más filas de la tabla de índice que filas de la tabla en una página de base de datos.

El tamaño de la página de la base de datos en SQL Server se fija en 8192 bytes. Se utilizan 96 bytes de la página para un encabezado; esto más otros gastos generales deja un tamaño máximo de fila de 8060 bytes. Sin embargo, SQL Server 2008 permitirá que las columnas varchar, nvarchar, varbinary y sql\_variant superen este límite, y moverá estos campos a páginas de desbordamiento cuando su inclusión en una fila provoque que una fila supere este límite de tamaño de fila. Además, las columnas text, ntext, image, nvarchar (max), varchar (max), varbinary (max) y xml siempre se almacenan en páginas separadas sin importar cuántos datos se almacenan realmente en la columna. La definición de tabla que ha publicado muestra anchos de columna totales que superan con creces el límite de 8060 bytes, pero la mayor parte de esto está en campos varchar (n), por lo que terminará con páginas de desbordamiento de filas para las filas donde el tamaño real de la variable columnas de ancho es suficientemente grande. Por lo tanto, el número de páginas que utilizará una fila en esta tabla variará, dependiendo de cuánto tiempo los datos realmente almacenados en las columnas de ancho variable sean para cada fila.

En términos de mejorar el rendimiento, si solo tiene unos pocos campos que se usan comúnmente, probablemente pueda obtener la misma mejora simplemente asegurándose de que los campos y combinaciones de campos que usa comúnmente estén disponibles como índices. Esto significa que la mayoría de los conjuntos de filas se pueden completar a partir de datos de índice en lugar de datos de tabla, lo que evitará problemas al cargar filas grandes desde la base de datos. Lo mejor de todo, esto se puede hacer por completo a nivel DBA; la aplicación no tiene que ser reescrita para reflejar el cambio en el esquema causado por agregar (o quitar) índices. Y obviamente, cualquier columna que usará como parte de una combinación debe estar indexada; de lo contrario, estará haciendo escanea la tabla en busca de combinaciones que son bastante lentas.

Podría sugerir que considere ntext en lugar de campos nvarchar grandes para algunos de esos campos más grandes, aunque esto puede requerir cambios en el código de la aplicación porque la semántica del texto / ntext son diferentes a los de varchar / nvarchar. Las columnas de texto / ntext se siempre se almacenan en páginas LOB, en lugar de almacenarse condicionalmente en la página de datos de fila, y si estas columnas suelen estar presentes y son de tamaño moderado (digamos , 1000-2000 bytes), almacenarlos como texto / ntext mantendrá el resto de las páginas de datos de filas más pequeñas y puede permitir más filas por página, lo que acelerará los escaneos de tablas que en realidad no tienen que hacer referencia a estas columnas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *