Diseño de MS SQL para un mejor rendimiento

Diseño de MS SQL para un mejor rendimiento

Hemos comprado un nuevo servidor para que actúe como backend de MS SQL. Tengo curiosidad por saber cuál sería la mejor configuración para ello.

El servidor es un Dell R710 y tiene 6 discos duros 2x 74GB 15k y 4x 146GB 15k

Actualmente está configurado en una configuración RAID 1/Raid10.

Mi pregunta es ¿dónde (qué matriz) debería ir lo siguiente?

TEMPDB (también cuántos, tamaño y crecimiento) Bases de datos del sistema (maestro, modelo, etc.) MDF de aplicación LDF de aplicación Archivo de página del sistema

El sistema operativo ya está instalado en el RAID1.

Respuesta1

Pondría el sistema operativo, el archivo de paginación y los LDF en la matriz RAID1. Todo lo demás en la matriz RAID10.

Si no está utilizando Windows 2008, asegúrese de que sus particiones estén alineadas correctamente:

http://msdn.microsoft.com/en-us/library/dd758814.aspx

Como ya se explicó, agregue 1 archivo TEMPDB por núcleo de CPU; hágalos todos del mismo tamaño.

Dimensione sus archivos de registro adecuadamente y créelos en un solo paso.

Considere hacer una copia de seguridad de sus bases de datos en un servidor diferente a través de un recurso compartido de red, si es posible, para mitigar el riesgo de que su matriz falle por completo y se lleve consigo su base de datos y sus copias de seguridad.

Respuesta2

TempDB

Hace un tiempo investigué un poco sobre la optimización de tempdb y respondí la mía.pregunta sobre Stackoverflow. Esto es lo que descubrí.

Para optimizar el rendimiento de tempdb, preste atención a la configuración del disco físico, la configuración de archivos y algunas configuraciones dentro de la base de datos.

Configuración del disco físico

tempdb debe residir en supropios discos físicos dedicados. Esto le permite dividir las transacciones de E/S del resto de los volúmenes en SQL Server.

Para mover tempdb a una nueva unidad de disco, utilice ALTER DATABASE. Es el comando T-SQL clave para realizar esta operación. Microsoft ofrece un buen ejemplo en los Libros en pantalla de SQL Server 2005. El nombre del artículo es ALTER DATABASE (Transact-SQL) y la sección específica es'GRAMO. Moviendo tempdb a una nueva ubicación.'

tempdb es una base de datos de muy alta escritura. Por lo tanto, una matriz RAID 5 no es el lugar adecuado para ello. Deberías poner el tempdben una matriz RAID 1 o RAID 10ya que están optimizados para aplicaciones de alta escritura. Si puede permitirse matrices RAID 1 o RAID 10 adicionales para cada archivo de base de datos física para tempdb, obtendrá un mayor rendimiento.

Archivos de base de datos

Deberíasun archivo físico por núcleo de CPU en el servidor. Por lo tanto, si tiene un servidor de doble chip y doble núcleo, debe tener cuatro archivos de base de datos físicos para la base de datos tempdb. Al agregar más archivos de base de datos, es importante configurar los archivos en lamismo tamaño inicial y con las mismas configuraciones de crecimiento. De esa manera, SQL Server escribirá los datos en los archivos de la manera más uniforme posible.

Tamaño del archivo de base de datos

El tamaño de la base de datos tempdb puede afectar el rendimiento de un sistema. Por ejemplo, si el tamaño definido para tempdb es demasiado pequeño, parte de la carga de procesamiento del sistema puede serocupado con tempdb de crecimiento automático hasta el tamaño requerido para soportar la carga de trabajo cada vez que reinicia la instancia de SQL Server. Puede evitar esta sobrecarga aumentando el tamaño de los datos de tempdb y del archivo de registro.

La determinación del tamaño adecuado para tempdb en un entorno de producción depende de muchos factores, incluida la carga de trabajo existente y las funciones de SQL Server que se utilizan. Microsoft recomienda analizar la carga de trabajo existente realizando las siguientes tareas en un servidor SQLpruebaambiente:

  1. Activar el crecimiento automático para tempdb(¡en un entorno de prueba!).
  2. Ejecute consultas individuales o archivos de seguimiento de cargas de trabajo y supervise el uso del espacio de tempdb.
  3. Ejecute operaciones de mantenimiento de índices, como reconstruir índices y monitorear el espacio tempdb.
  4. Utilice los valores de uso del espacio de los pasos anteriores para predecir el uso total de su carga de trabajo; ajuste este valor para la actividad simultánea proyectada y luego establezca el tamaño de tempdb en consecuencia.

Las recomendaciones de tamaño mínimo para tempdb son las siguientes:

  Enviro. Tamaño Tamaño de base de datos (MB) Tamaño de registro (MB)
  ----------- ------------ -----------
  Pequeño 1024 256
  Mediano 5120 1024
  Grande 10024 2048

Configuración de la base de datos

Puede aumentar aún más el rendimiento de tempdbdeshabilitar las estadísticas de actualización automática, lo que le ahorrará algo de trabajo a tempdb. También puede configurar elopción de creación automática de estadísticas a falso.

Descargo de responsabilidad: la configuración debe cambiarse con cuidado. Dependiendo del tipo de carga que coloque en su tempdb, cambiar la configuración podría afectar negativamente el rendimiento del sistema.

Para lograr un rendimiento óptimo de tempdb, siga las pautas y recomendaciones proporcionadas enOptimización del rendimiento de tempdb.

¿Cómo monitorear el uso de tempdb?

Corrersin espacio en disco en tempdbpodercausar perturbaciones significativasen el entorno de producción de SQL Server y puede impedir que las aplicaciones que se están ejecutando completen sus operaciones.

Puede utilizar la sys.dm_db_file_space_usagevista de administración dinámica para monitorear el espacio en disco que utilizan estas funciones en los archivos tempdb. Además, para monitorear la actividad de asignación o desasignación de páginas en tempdb a nivel de sesión o tarea, puede usar las vistas de administración dinámica sys.dm_db_session_space_usagey .sys.dm_db_task_space_usage

Estas vistas se pueden utilizar para identificar consultas grandes, tablas temporales o variables de tabla que utilizan mucho espacio en disco de tempdb. También hay varios contadores que se pueden usar para monitorear el espacio libre disponible en tempdb y también los recursos que usan tempdb.

Enlaces:

Respuesta3

La respuesta genérica fácil es que cualquier cosa que implique un alto IO debe ir al grupo de discos RAID 10. ¿También ha decidido su estrategia de partición o esa parte de la pregunta?

Entonces, en su primer grupo de discos, probablemente crearía una única partición (aproximadamente 70 GB utilizables). Colocaría el sistema operativo y la aplicación MSSQL en esta.

En el segundo crearía las siguientes particiones

1) partición para el archivo de página (dependiendo de la cantidad de memoria que tenga, pero alrededor de 10-20 GB 2) partición para archivos de registro de transacciones 100 GB 3) partición para archivos de datos 100 GB

Esto le dejará alrededor de 50 GB de repuesto que yo dejaría sin asignar para que pueda ampliar la partición de registro o la de datos a medida que cambien sus requisitos.

Curiosamente, actualmente estoy trabajando en la misma máquina con especificaciones, solo que estoy usando Linux y Oracle, ¿eres del universo paralelo?

Jaime

Respuesta4

Lo siento, hice esta pregunta como usuario no registrado y ahora no puedo marcarla como respondida. Estoy esperando que los administradores me respondan para ver si pueden adjuntar mi cuenta a la pregunta nuevamente.

Para dar más información, este servidor no estará bajo una gran carga, en realidad es un backend de control de fuente. Comprar un servidor y DAS o ISCSI SAN o algo así habría sido excesivo y el costo habría arruinado las posibilidades del proyecto. Trabajo para una PYME de unas 100 personas, por lo que nuestro presupuesto de TI es ajustado, especialmente en estos momentos.

@mrdenny

Le hicimos la pregunta al proveedor de software que recomendó esta configuración. Lo compramos y cuando planteamos la misión que pedí aquí, dijeron que pusiéramos el registro, las bases de datos y los tempdbs en la partición raid 10. No soy un gran aficionado a las bases de datos (¿en serio?), pero esto sonó sospechoso, ya que casi todo el mundo sabe que no se deben mezclar ldfs y mdfs en los mismos ejes.

@splattne: gracias por la información sobre tempdb, esto será útil para esta y futuras instalaciones de SQL.

@SuperCoolMoss: he hablado con algunas personas de mi propia red de amigos de TI y están de acuerdo contigo en esto. SO, Pagefile y LDF en RAID1 y tempdb y MDF en RAID10

Gracias a todos los que comentaron.

Según mis lecturas, estas son las reglas básicas que creo que debes seguir al implementar SQL en lo que respecta a discos. En mi opinión se deben seguir en este orden, déjame saber si estás de acuerdo o en desacuerdo.

  1. Utilice discos redundantes (bastante obvio)
  2. Utilice discos rápidos (SCSI/SAS, 15k si es posible)
  3. Separe sus archivos ldf y mdf en diferentes ejes
  4. No use RAID5 para ldfs o tempdbs (use RAID10 o RAID1)
  5. Coloque su tempdb en sus ejes más rápidos; si es posible, separe los tempdbs de los ejes ldf y mdf.

No dude en compartir su versión modificada de esta lista.

información relacionada