Escalado de bases de datos con discos duros SSD baratos

25

Espero que muchos de ustedes estén trabajando con sitios web basados ​​en bases de datos de alto tráfico, y es probable que sus principales problemas de escalabilidad estén en la base de datos. Noté un par de cosas últimamente:

  1. La mayoría de las bases de datos grandes requieren un equipo de DBA para escalar. Luchan constantemente con las limitaciones de los discos duros y terminan con soluciones muy caras (SAN o RAID grandes, ventanas de mantenimiento frecuentes para desfragmentar y volver a particionar, etc.) El costo anual real de mantener tales bases de datos está en el rango de $ 100K- $ 1M que es demasiado empinado para mí :)

  2. Finalmente, tenemos varias compañías como Intel, Samsung, FusionIO, etc. que acaban de comenzar a vender discos duros SSD extremadamente rápidos pero asequibles basados ​​en la tecnología SLC Flash. Estas unidades son 100 veces más rápidas en lectura / escritura aleatoria que los mejores discos duros giratorios del mercado (hasta 50,000 escrituras aleatorias por segundo). Su tiempo de búsqueda es prácticamente nulo, por lo que el costo de las E / S aleatorias es el mismo que la E / S secuencial, lo cual es increíble para las bases de datos. Estas unidades SSD cuestan alrededor de $ 10- $ 20 por gigabyte, y son relativamente pequeñas (64 GB).

Entonces, parece haber una oportunidad para evitar los ENORMES costos de escalar bases de datos de la manera tradicional simplemente construyendo una matriz RAID 5 lo suficientemente grande de unidades SSD (que costaría solo unos pocos miles de dólares). Entonces no nos importa si el archivo de la base de datos está fragmentado, y podemos permitirnos 100 veces más escrituras de disco por segundo sin tener que distribuir la base de datos en 100 ejes. .

¿Alguien más está interesado en esto? He estado probando algunas unidades SSD y puedo compartir mis resultados. Si alguien en este sitio ya ha resuelto su cuello de botella de E / S con SSD, ¡me encantaría escuchar sus historias de guerra!

PD. Sé que existen muchas soluciones costosas que ayudan con la escalabilidad, por ejemplo, las SAN basadas en RAM probadas con el tiempo. Quiero dejar en claro que incluso $ 50K es demasiado caro para mi proyecto. Tengo que encontrar una solución que no cueste más de $ 10K y que no tome mucho tiempo implementarla.


Dave, NXC y Burly,

Gracias por tus respuestas! Me gustaría aclarar que la palabra "barato" es muy importante en mi situación. Entonces, tengo que usar servidores Dell baratos ($ 4K 2950 que tienen solo 8 bancos de memoria). Ya tengo 32 GB de RAM instalados, así que no puedo seguir escalando de esta manera. Además, agregar RAM no lo salva de los cuellos de botella de ESCRITURA del disco, que es mi principal problema en este momento.

Solía ​​preocuparme por la vida útil de los SSD, pero después de leer sobre los algoritmos modernos de nivelación de desgaste, estoy bastante seguro de que estas unidades durarán lo suficiente. Mi base de datos escribe 300GB por día, y se proyecta que supere los 1TB por día en 2009. Los SSD Enterprise están diseñados para manejar alrededor de 10TB de escrituras por día durante varios años.

No estoy de acuerdo con el punto de Burly de que se necesita demasiado trabajo para migrar de SAS a SSD. Mi base de datos es un espejo síncrono, así que puedo actualizar un lado del espejo, luego mirarlo durante unos meses, y si falla, puedo conmutar por error al segundo servidor que todavía tiene los viejos discos duros SAS buenos ...

Dennis Kashkin
fuente
2
Por cierto, si bien declara cómo el rendimiento mejorado reduciría potencialmente los costos de hardware, no expresa claramente cómo los SSD reducirían su costo principal: la mano de obra. Supongo que probablemente se está dando cuenta del hecho de que una reducción en el tamaño de la instalación puede reducir las necesidades de personal
Burly
2
Mi base de datos funcionó felizmente en producción durante 3 años sin ningún DBA o asesor a tiempo completo. Luego, la carga aumentó hasta el punto en que nos topamos con los cuellos de botella de E / S. Por lo tanto, podría tener que pagar mucho dinero a los DBA para particionar y desfragmentar la base de datos. O simplemente obtener algunos SSD baratos.
Dennis Kashkin
Actualicé mi respuesta para analizar las limitaciones de costos que agregó. Dependiendo del espacio, el tamaño, el rendimiento, el mantenimiento y los requisitos de modificación de su base de datos, los SSD ciertamente pueden ofrecer una solución rentable. El diseño de la solución y el análisis de costos están más allá de nuestro alcance aquí. ¡La mejor de las suertes!
Burly
Has estado bebiendo demasiado koolaid, SSD es, en el mejor de los casos, 1,5 veces más rápido para leer que una unidad RAID, pero las escrituras son más lentas que los discos magnéticos. Un SANS basado en fibra con un RAID de alta velocidad destruirá cualquier SSD sin importar cuán bueno sea.
TravisO
Solo quería compartir: llevamos 5 meses ejecutando una base de datos de 400 GB en SSD. Esta base de datos recibe mucha actividad de escritura (hasta 1200 transacciones por segundo). Hasta ahora no tuvimos problemas, y el rendimiento ha sido dramáticamente mejor en comparación con los RAID10 con unidades SAS de 15K rpm. Los discos permanecen 96% inactivos. Entonces, teniendo en cuenta que los SSD se están volviendo increíblemente baratos ahora ($ 600 por una unidad Intel de 160 GB), afirmaría que esta es una mejor manera de escalar E / S que las SAN.
Dennis Kashkin

Respuestas:

20

Problemas potenciales

Tengo un par de problemas con el uso de SSD para bases de datos de producción en este momento.

  • La mayoría de las transacciones de bases de datos en la mayoría de los sitios web son lecturas, no escrituras. Como dijo Dave Markle, primero maximiza este rendimiento con RAM.
  • Los SSD son nuevos en los mercados principales y empresariales y ningún administrador que valga la pena moverá una base de datos de producción que actualmente requiere discos U320 de 15K RPM en comunicación RAID5 a través de un canal de fibra a una tecnología no probada.
  • El costo de la investigación y las pruebas de pasar a esta nueva tecnología, examinarla en su entorno, actualizar los procedimientos operativos, etc., es un costo inicial más grande, tanto en términos de tiempo como de dinero, que la mayoría de las tiendas tienen de sobra.

Beneficios Propuestos

Dicho esto, hay una serie de elementos, al menos en papel, a favor de los SSD en el futuro:

  • Menor consumo de energía en comparación con un HDD
  • Generación de calor mucho menor
  • Mayor rendimiento por vatio en comparación con un HDD
  • Rendimiento mucho mayor
  • Latencia mucho más baja
  • La mayoría de los SSD de la generación actual tienen del orden de millones de ciclos de resistencia de escritura, por lo que la resistencia de escritura ya no es un problema. Vea un artículo algo anticuado aquí

Entonces, para un punto de referencia de rendimiento dado, cuando se tiene en cuenta el costo total de propiedad, incluidos los costos directos de energía y de enfriamiento indirecto, los SSD pueden ser muy atractivos. Además, dependiendo de los detalles de su entorno, la reducción en la cantidad de dispositivos requeridos para un determinado nivel de rendimiento también podría resultar en una reducción de los requisitos de personal, reduciendo los costos de mano de obra.

Costo y rendimiento

Agregó que tiene una restricción de costos por debajo de $ 50K USD y realmente desea mantenerla por debajo de $ 10K. También ha declarado en un comentario que puede obtener algunos SSD "baratos", eludiendo que los SSD serán más baratos que los DBA o consultores. Esto puede ser cierto según la cantidad de horas que necesitaría un DBA y si es un costo recurrente o no. No puedo hacer el análisis de costos por usted.

Sin embargo, una cosa que debes tener mucho cuidado es el tipo de SSD que obtienes. No todos los SSD se crean de la misma manera. En general, las unidades SSD "baratas" que ve a la venta en los $ 200-400 dólares (2008/11/20) están destinadas a entornos de baja potencia / calor, como las computadoras portátiles. Estas unidades tienen niveles de rendimiento más bajos en comparación con un disco duro de 10K o 15K RPM, especialmente para escrituras. Las unidades de nivel empresarial que tienen el rendimiento impresionante del que habla, como la serie Mtron Pro, son bastante caras. Actualmente están alrededor:

  • 400 USD por 16GB
  • 900 USD por 32GB
  • 1400 USD por 64GB
  • 3200 USD por 128GB

Dependiendo de su espacio, rendimiento y requisitos de redundancia, podría soplar fácilmente su presupuesto.

Por ejemplo, si sus requisitos requerían un total de 128 GB de almacenamiento disponible, RAID 0 + 1/10 o RAID 5 con 1 hotspare serían ~ $ 5600

Sin embargo, si necesita una TB de almacenamiento disponible, RAID 0 + 1/10 sería de ~ $ 51K y RAID 5 con 2 hotspares sería de ~ $ 32K.

Cuadro grande

Dicho esto, la instalación, configuración y mantenimiento de una gran base de datos de producción requiere un individuo altamente calificado. Los datos dentro de la base de datos y los servicios proporcionados a partir de esos datos son de un valor extremadamente alto para las empresas con este nivel de requisitos de rendimiento. Además, hay muchas cosas que simplemente no se pueden resolver lanzando hardware al problema. Un DBMS configurado incorrectamente, un esquema de base de datos o una estrategia de indexación deficientes pueden / arruinar / el rendimiento de un DB. Solo mire los problemas que Stackoverflow experimentó en su migración a SQL Server 2008 aquí y aquí. El hecho es que una base de datos es una aplicación extenuante no solo en el disco sino también en la RAM y la CPU. Equilibrar el problema de rendimiento de múltiples variantes junto con la integridad de los datos, la seguridad, la redundancia y la copia de seguridad es un poco complicado.

En resumen, aunque creo que cualquier mejora en la tecnología de hardware y software es bien recibida por la comunidad, la administración de bases de datos a gran escala, como el desarrollo de software, es un problema difícil y continuará requiriendo trabajadores calificados. Una mejora dada puede no cosechar los costos de reducción de mano de obra que usted o una empresa podrían esperar.

Un buen punto de partida para algunas investigaciones podría ser el sitio web / blog de Brent Ozar aquí . Es posible que reconozca su nombre: es él quien ha ayudado al equipo de stackoverflow con sus problemas de rendimiento de MS SQL Server 2008. Su blog y recursos que vincula ofrecen bastante amplitud y profundidad.

Actualizar

Los mismos Stackoverflow van por la ruta del consumidor basada en SSD para su almacenamiento. Lea sobre esto aquí: http://blog.serverfault.com/post/our-storage-decision/

Referencias

Fuerte
fuente
Excelente respuesta
NotMe
Pasaste
Impresionantes explicaciones. Cortado en madera para todos. ¡Buen trabajo!
BerggreenDK
4

Si tiene un sitio de mucho, mucho tráfico que puede beneficiarse de un SSD para un mayor rendimiento de escritura, probablemente tendrá un problema con la vida útil del SSD, por lo que todavía no estoy vendido en ellos por eso.

Con eso en mente, ¿qué hacer con las bases de datos que tienen altos niveles de lecturas? La respuesta es simple: atasca el servidor con tanta RAM como puedas soportar. Descubrirá que las tablas más populares casi siempre se mantienen en la memoria caché de RAM de todos modos, y cualquier gran impacto en el disco probablemente se deba a una gran tabla o exploración de índice, que a menudo se puede optimizar con una indexación adecuada.

Dave Markle
fuente
Revisaría su comentario sobre la preocupación de la vida útil del SSD. En términos de MTBF, el SSD tiene una calificación mucho más alta que un HDD. En términos de resistencia del ciclo de escritura, anteriormente un problema, la generación actual es> 1 millón de ciclos de escritura, lo que hace que no sea un problema, especialmente en configuraciones RAID.
Burly
(Sin caracteres) ... No es que no deba preocuparse por la vida útil de un SSD, es solo que las clasificaciones técnicas actuales sugieren que los SSD son iguales o superiores a una contraparte de HDD. El hecho de que los SSD no tengan décadas de experiencia en producción significa que no están comprobados.
Burly
Los SSD son más lentos en escritura que los
HD
Los SSD son generalmente sustancialmente más rápidos en escrituras aleatorias, particularmente escrituras aleatorias 4K. Pueden ser más lentos para las escrituras secuenciales, pero eso no es necesariamente importante para los servidores de bases de datos.
ChrisInEdmonton
1

He trabajado como DBA durante más de 5 años y pensar en formas de mejorar el rendimiento de la base de datos siempre está detrás de mi mina. He estado observando el espacio SSD y creo que definitivamente se están convirtiendo en una opción cada vez más viable.

Mira esto;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

También hay un nuevo producto producido por Acard llamado ANS-9010, que es una versión mejorada del GC-Ramdisc que le permite usar ram DDR2 para crear una unidad SATA (hasta 64 gig) usando palos DDR2 con un teórico de 400 MB / s máximo.

http://techreport.com/articles.x/16255/3

^^ Pero la otra cosa que es útil en ese artículo es que compara el ANS-9010 con todos los jugadores en el mercado de SSD y resulta que Intel tiene un SSD x25-E de 64GB que es bastante comparable a tener un disco de hardware.

Lo que me preocuparía de la SSD es desgastarlos con todo el estrés por el que una DB grande los atravesaría, por lo que tendrías que usar raid para duplicar las unidades, lo que significa que estás pagando el doble;

Y la desventaja del disco de hardware es que la batería, en el caso de un corte de energía, solo la alimenta durante tanto tiempo, por lo que tendrá que encontrar una forma elegante de respaldarla. Creo que también puede comprar un enchufe de red para ellos, pero eso todavía depende de su UPS.

Le sugiero que use el disco RAM de hardware para la base de datos temporal y el archivo de intercambio de Windows, y coloque la base de datos en el Intel X25-E Extreme (aproximadamente 600 USD por 64 presentaciones).

De todos modos, gritaría y nos pondría muy celosos a todos los demás.

(También considere usar otro ANS-9010 para alojar el sitio web)

Saludos, Dave


fuente
1

Acabamos de armar un servidor w2k3 r2 64bit Sql 2008 en doble espejo híbrido Seagate Momentus XT de 2.5 pulgadas: 1/4 de carrera para el sistema operativo y 1/4 de carrera para la base de datos. Entonces usamos 125GB para OS y 125GB para DB. estaban obteniendo lecturas de 1500MB / s a ​​1900MB / s seq. En un Intel i7 2600K 3.4Ghz 8GB

Adam Smith
fuente
0

Hay productos en el mercado como este que hacen este tipo de cosas. Además, como dice el otro póster, agregar RAM adicional al servidor DB le dará mejores tasas de aciertos de caché, lo que reducirá el tráfico del disco.

Los servidores Opteron de 8 sockets, como el Sun X4600, le permitirán colocar hasta 256 GB de RAM en ellos a precios aún más baratos que un gran equipo de DBA. También podría considerar el uso de archivos planos en lugar de un DBMS (como lo hizo esta compañía ), lo que le brindará un mejor rendimiento que un DBMS. En este caso, una SAN le dará un grado de integridad de datos. Sin embargo, tendrá que diseñar su estrategia de acceso a datos con cuidado para evitar meterse en un lío. Al parecer, bastantes conjuntos de punto-com de gran volumen hacen esto. Es considerablemente más eficiente que un DBMS, lo que permite que un hardware bastante peatonal maneje cargas grandes y evita las tarifas de licencia de DBMS.

Preocupado por TunbridgeWells
fuente
-1

Las unidades SSD se basan en la memoria flash NAND (MLC o SLC). Si está comprando unidades SSD en un formato SATA (2 o 3), está limitando el rendimiento que puede obtener de ellas. Por lo general, las unidades SSD basadas en el controlador Sandforce SF-1200 rápido producen lecturas de 220 MB / segundo y escrituras de 205 MB / segundo, mucho más rápido que un disco giratorio mecánico anticuado.

Sin embargo, si cambia a una solución PCIe como FusioIO, que no tiene el conector lento SATA 2 o SATA 3 involucrado, está buscando soluciones que son 10-50 veces más rápidas que los toros mecánicos giratorios (me refiero a los discos).

Entonces, para su solución "barata", elija un SDD SATA 2/3 basado en el controlador Sandforce SF-1200. Esto le proporcionará una mejora de velocidad de 3-5 veces (basada en la experiencia del mundo real). Si tienes el presupuesto, entonces ve por el FusioIO. Nada lo superará en términos de rendimiento. Es increíblemente rápido. Sin embargo, espere gastar entre $ 20,000 y $ 50,000.

John DeRegnaucourt
fuente
2
Falacia. Un SSD moderno es bueno para aproximadamente 50,000 IOPS, con un rendimiento de 580mb. Un SAS produce menos de 500 IOPS. Las bases de datos no son servidores de archivos.
TomTom