Capacidades Máximas en SQL

Muchas veces me hacen preguntan sobre las capacidades máximas de SQL Server. En las diferentes conversaciones, charlas y cursos salen preguntas como: ¿Existe algún límite en la cantidad de registros en una tabla?, ¿Cuántas bases de datos puedo tener en una instancia? o ¿cuántas instancias puedo tener en un servidor?

Esta información está al alcance de la mano en la documentación en línea de SQL Server. A continuación les presentamos un resumen de dichas capacidades máximas:

Objeto

(SQL Serer 2008 R2)

Tamaño/cantidad máxima

Cantidad de Objetos (tablas, vistas, procedimientos almacenados, funciones, triggers, reglas, valores predeterminados y restricciones) La suma de objetos en una base de datos no puede superar los 2,147,483,647
Bytes por columna de cadenas cortas 8,000
Bytes por GROUP BY y ORDER BY 8,060
Bytes por llave de índice 900
Bytes por llave foranea 900
Bytes por llave primaria 900
Bytes por registro 8,060
Bytes en texto de origen de un procedimiento almacenado El menor del tamaño del lote o 250 MB
Bytes por columna varchar(max), varbinary(max), xml, text o image (2^31)-1
Caracteres por columna ntext o nvarchar(max) (2^30)-1
Índices clúster por tabla 1
Campos en GROUP BY y ORDER BY Limitado solo por el número de bytes
Campos o expresiones en una instrucción GROUP BY WITH CUBE o WITH ROLLUP 10
Campos por llave de índice 16
Campos por llave foranea 16
Campos por llave primaria 16
Campos por tabla no ancha 1,024
Campos por tabla ancha 30,000
Campos por instrucción SELECT 4,096
Campos por instrucción INSERT 4,096
Conexiones por cliente Valor máximo de conexiones configuradas
Tamaño de la base de datos 524.272 terabytes
Bases de datos por instancia de SQL Server 32,767
Grupos de archivos por base de datos 32,767
Archivos por base de datos 32,767
Tamaño de archivo (datos) 16 terabytes
Tamaño de archivo (log) 2 terabytes
Referencias de tabla de llaves foráneas por tabla 253
Longitud del identificador (en caracteres) 128
Instancias por equipo 50 instancias en un servidor independiente para todas las ediciones de SQL Server.
SQL Server admite 25 instancias en un clúster de conmutación por error.
Longitud de una cadena que contiene instrucciones SQL (tamaño de lote) 65.536 * Tamaño de paquete de red
Bloqueos por conexión Máximo de bloqueos por servidor
Niveles de procedimientos almacenados anidados 32
Subquerys anidados 32
Niveles de triggers anidados 32
Índices no clúster por tabla 999
Número de expresiones distintas en la cláusula BY GROUP cuando cualquiera de los elementos siguientes está presente: CUBE, ROLLUP, GROUPING SETS, WITH CUBE, WITH ROLLUP 32
Número de conjuntos de agrupamiento generados por los operadores de la cláusula GROUP BY 4,096
Parámetros por procedimiento almacenado 2,100
Parámetros por función definida por el usuario 2,100
REFERENCES por tabla 253
Registros por tabla Limitado por el espacio de almacenamiento disponible
Particiones por tabla o índice con particiones 1,000
Estadísticas en columnas no indexadas 30,000
Tablas por instrucción SELECT Limitado solo por los recursos disponibles
Columnas por instrucción UPDATE (tablas anchas) 4,096
Conexiones de usuario 32,767
Índices XML 249

Conclusión: En la mayoría de los casos que conozco, las implementaciones de SQL Server están lejos de alcanzar sus límites. La cantidad de registros de las tablas están solo limitados por el espacio en disco que tengas para contenerlas. Además, no me imagino un servidor con cincuenta instancias (instalaciones de SQL Server) o una instancia con treinta y dos mil bases de datos o una base de datos con dos mil millones de objetos. Pero siempre es bueno conocer estos datos para estar tranquilos, pero teniendo cuidado de no exagerar sabiendo que estamos holgados.

Un comentario en “Capacidades Máximas en SQL

  • desarrollé un query para crear 32,767 bases de datos para probar los límites, pero me quedé en 1500 por que apareció el siguiente mensaje:

    Msg 701, Level 17, State 123, Line 1
    There is insufficient system memory in resource pool ‘internal’ to run this query.

    Es decir, tambien se requiere de mucha memoria para alojar todas esas bases de datos. Seguiré probando a ver si logro llegar al límite.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.