Cuando planeamos una nueva base de datos, debemos tomar en consideración algunos aspectos, estos son algunos de ellos.
Tipo de almacenamiento de datos: Debemos pensar en que tipo de base de datos vamos a tener, puede ser OLTP o OLAP los cuales tienen diferentes propósitos y por lo mismo un diferente diseño.
Nivel transaccional: Las bases de datos OLTP en lo general requieren de un alto número de transacciones por minuto. Un diseño eficiente, con un apropiado nivel de normalización, índices y particiones nos pueden dar un nivel transaccional muy alto.
Crecimiento de la base de datos: Las bases de datos grandes requieren de un apropiado hardware para soportarlo, como es memoria, CPU y espacio en disco. El estimar la cantidad de datos que la base de datos va a almacenar en los siguientes meses y años nos va a ayudar a mantener un nivel adecuado de performance. Podemos configurar a que la base de datos crezca automáticamente hasta un tamaño máximo especificado, pero el crecimiento automático degrada el rendimiento. Por esa razón debemos siempre crear la base de datos de un tamaño adecuado, monitorear el espacio y solo asignar más espacio cuando sea realmente necesario. Con esto debemos recordar que no solo exista la fragmentación de las tablas, sino de la base de datos a nivel del disco, y el estar creciendo la base de datos continuamente, genera fragmentación que no se elimina con reindexar los índices, sino con otro tipo de tareas de administración.
Archivos de Datos: Donde nosotros alojemos los archivos de datos, pueden tener un impacto en rendimiento. Si tenemos la posibilidad de tener varios discos en nuestro servidor, podemos distribuir los archivos de datos en más de un solo disco. Esto permite que SQL Server pueda tener más conexiones múltiples y múltiples cabezas de discos para hacer más eficientes las lecturas y escrituras de los datos.
Si se requiere más información de cómo podemos estimar el tamaño de una base de datos, podemos ver el capitulo de “Estimating the size of a Database”, en el Books Online de SQL Server.