Tengo un servidor de base de datos bastante ocupado que ejecuta SQL Server 2008 R2 que tiene la siguiente configuración:
- SATA RAID 1 (2 unidades) - SO / Programas
- SAS RAID 10 (4 unidades) - Archivos de base de datos SQL (datos y registros)
- SAS RAID 1 (2 unidades) - TempDB (datos y registros)
Suponiendo que no puedo agregar unidades adicionales a este servidor, ¿he hecho el mejor uso de la configuración que tengo disponible? ¿O debería considerar otro esquema aquí donde los registros están aislados de los archivos de datos, por ejemplo?
Actualizar:
Para aquellos que solicitaron más detalles de hardware:
- Las unidades SATA (utilizadas para la partición OS / Programa) son: WD 7200 RPM 3 Gb / s SATA de 3,5 pulgadas
- Las unidades SAS utilizadas en las otras matrices son: Seagate 15K RPM 6 Gb / s SAS de 3.5 pulgadas
- El controlador RAID utilizado es un puerto LSI 9260-8i SAS / SATA de 6 Gb 8
Actualización 2:
En base a la retroalimentación que he recibido, parece que tengo las siguientes opciones viables para elegir - Voy a conceder la recompensa a alguien que me puede decir que es probable que ser el mejor en el ambiente que he descrito:
- Deja todo como está; probablemente no lo haré mucho mejor
- Muevo mis 2 unidades SAS RAID 1 a mi matriz RAID 10 existente para que se componga de 6 discos en total
- Mover mis archivos de registro al SAS RAID 1 y / o reubicar TempDB (datos o registros) de nuevo al RAID 10
sql-server
hardware
DanP
fuente
fuente
Respuestas:
Las variantes de esta pregunta aparecen semi-regularmente:
También hay peleas ocasionales sobre la "mejor práctica" de separación de datos / registros.
Sin un análisis más detallado de lo que está haciendo este servidor, se aplica el mismo consejo que se dio anteriormente.
Rara vez hay algún punto en una división con tan pocos husos disponibles. Una matriz única con una mayor capacidad de IOP típicamente absorberá los bultos y protuberancias de su carga de trabajo mejor que 2 matrices más pequeñas.
Una variante que vale la pena probar es poner tempdb en la unidad del sistema operativo. Solo hágalo si tiene una carga de trabajo representativa que pueda reproducir repetidamente, para garantizar una comparación equitativa de la configuración. Si opta por este arreglo en producción, asegúrese de que el crecimiento de tempdb esté restringido para no consumir inadvertidamente todo el espacio libre en la unidad del sistema operativo.
Dado que las unidades de su sistema operativo son montañas rusas de 7200 RPM, me sorprendería si tempdb en la configuración de la unidad del sistema operativo tuviera algún beneficio.
fuente
Todo depende de su carga de trabajo, pero con solo 6 unidades limita sus opciones. Si su carga de trabajo no depende en gran medida de tempdb para cosas como clases, tablas hash y aislamiento de instantáneas, entonces podría ser mejor usar las 6 unidades SAS juntas en RAID 10. Sin embargo, si conoce o tiene las métricas para demostrar que tempdb se utiliza mucho, entonces debe mantenerlo separado como lo ha hecho.
fuente
Depende mucho de lo que quiera decir con "muy ocupado": diferentes patrones de carga de trabajo (escribir pesado o no, operaciones masivas comunes o no, nivel de acceso concurrente, por nombrar solo tres de las muchas variables) pueden tener un efecto drástico en el rendimiento de cualquier disposición de husillo dada.
Para una situación grave de escritura, separar los registros de los datos puede hacer una diferencia significativa ya que cada escritura implica actualizar tanto el registro como los archivos de datos, por lo que implica una buena cantidad de volteo de cabeza adicional si ambos conjuntos de archivos están en el mismo conjunto de ejes .
Sin más referencia a su carga de trabajo (y la especificación de esas unidades y cualquier controlador que esté entre ellas y la máquina), me inclinaría por tres volúmenes: uno para programas OS + y tempdb (datos), uno para DB principal datos, y el tercero para registros (tempdb y DBs principales).
Por supuesto, si sus cargas de trabajo son muy ligeras en las operaciones de escritura, entonces no debería pasar demasiado tiempo preocupándose por mantener separados los datos y los registros, ya que hará poca diferencia en el rendimiento y dedicar un volumen completo para ellos sería un desperdicio bastante disponible. espacio.
fuente
La respuesta real depende de sus necesidades, pero generalmente "colocar datos e iniciar sesión en diferentes matrices" es de mayor importancia que "colocar tempdb en su propia matriz".
Dada la cantidad de unidades que tiene disponibles, mi punto de partida sería:
Lo que debe hacer es usar SQLIO para probar el rendimiento de diferentes configuraciones de unidades.
fuente
Dependiendo de para qué esté utilizando la base de datos (OLTP vs almacenamiento), su configuración parece una buena configuración general. Si tuviera más discos, tendría más opciones.
Podría obtener un mejor rendimiento si cambiara el disco de su TempDB a RAID 0 (stripe). Aumenta su riesgo de falla, pero dado que TempDB solo almacena datos en la memoria intermedia, no puede experimentar la pérdida de datos. Entonces, la mayoría de la gente considera que es una compensación razonable. Solo guarde un repuesto (o un repuesto en caliente).
Una cosa que no mencionó, pero que podría probar (si aún no lo ha hecho): Microsoft recomienda dividir su TempDB en varios archivos (uno por CPU). Por supuesto, es mejor si están en discos separados, pero simplemente tener archivos separados ayuda. http://msdn.microsoft.com/en-us/library/ms175527(v=SQL.105).aspx
fuente