Escalando bases de datos con discos duros SSD baratos

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

  1. La mayoría de las bases de datos grandes requieren un equipo de DBAs para escalar. Luchan constantemente con las limitaciones de los discos duros y terminan con soluciones muy costosas (SAN o RAIDs grandes, windows frecuentes de mantenimiento para desfragmentar y reparticionar, etc.) El costo anual real de mantener dichas bases de datos es de $ 100K- $ 1M que es demasiado empinado para mí

  2. Finalmente, obtuvimos varias compañías como Intel, Samsung, FusionIO, etc. que empezaron 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 escritos aleatorios por segundo). Su time de búsqueda es prácticamente nulo, por lo que el costo de I / O random es el mismo que E / S secuencial, lo cual es impresionante para las bases de datos. Estas unidades SSD cuestan alnetworkingedor de $ 10 – $ 20 por gigabyte, y son relativamente pequeñas (64GB).

Por lo tanto, parece haber una oportunidad para evitar los enormes costos de escalar las bases de datos de la manera tradicional, simplemente construyendo una matriz RAID 5 de unidades SSD lo suficientemente grande (que costaría sólo unos pocos miles de dólares). Entonces no nos importa si el file de database está fragmentado, y podemos permitirnos 100 veces más escrituras de disco por segundo sin tener que extender la database a través de 100 husos. .

¿Hay alguien más 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 hay un montón de soluciones costosas por ahí que ayudan con la escalabilidad, por ejemplo, el time probado basado en RAM RAM. Quiero ser claro que incluso $ 50K es demasiado caro para mi proyecto. Tengo que encontrar una solución que cuesta no más de $ 10K y no toma mucho time para implementar.


Dave, NXC y Burly,

Gracias por sus respuestas! Quisiera aclarar que la palabra "barato" es muy importante en mi situación. Por lo tanto, tengo que usar serveres baratos de Dell ($ 4K 2950s que tienen sólo 8 bancos de memory). Ya tengo 32 GB de RAM instalados, así que no puedo seguir escalando de esta manera. Además, la adición de RAM no te ahorra de los cuellos de botella del disco WRITE, que es mi principal problema ahora.

Yo solía estar preocupado con la vida de SSDs, pero después de leer acerca de los modernos algorithms de nivelación de desgaste estoy bastante seguro de que estas unidades durarán lo suficiente. Mi database escribe 300 GB por día y proyectado para ir más de 1 TB por día en 2009. Los SSD de la empresa están diseñados para manejar alnetworkingedor de 10 TB de escritos por día durante varios años.

No estaría de acuerdo con el punto de Burly de que se necesita demasiado trabajo para migrar de SAS a SSD. Mi database es un espejo sincrónico, por lo que puedo actualizar un lado del espejo, luego verlo durante unos meses, y si sopla puedo conmutar por error al segundo server que todavía tiene las viejas buenas unidades de disco duro SAS …

  • ZFS: prácticas recomendadas para agregar caching a las agrupaciones
  • Configuración de SQL para un rendimiento óptimo ... SSD o HDD?
  • SSD - Ajustes / configuration recomendada
  • La limpieza es muy lenta. Muy poca entropía?
  • Ejecutar el command "find" genera carga alta
  • Fiabilidad de SSD vs HDD (Sobre grandes variaciones de temperatura)
  • performance de ssd contra el performance del hdd
  • SSD para files de database o página web?
  • 6 Solutions collect form web for “Escalando bases de datos con discos duros SSD baratos”

    Problemas potenciales

    Tengo un par de puntos de problema con el uso de SSD para las bases de datos de producción en la actualidad

    • La mayoría de las transactions de database en la mayoría de los sitios web son lecturas no escritas. Como dijo Dave Markle, maximiza este performance con RAM primero.
    • SSDs son nuevos en los mercados de la stream principal y de la empresa y ningún administrador digno de su sal va a mover una database de producción que actualmente requiere 15K RPM U320 discos en RAID5 la comunicación a través de fibrechannel a una tecnología no probada.
    • El coste de la investigación y de la testing de pasar a esta nueva tecnología, de examinarla en su entorno, de actualizar los procedimientos operativos, etc., es un costo inicial mayor, tanto en términos de time como de dinero, que la mayoría de las tiendas tienen que gastar.

    Beneficios Propuestos

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

    • Menor consumo de energía en comparación con un disco duro
    • Generación de calor mucho más baja
    • Mayor performance por vatio en comparación con un disco duro
    • Rendimiento mucho mayor
    • Mucho menor latencia
    • La mayoría de los SSDs de generación actual tienen un order de millones de ciclos de resistencia a la escritura, por lo que la resistencia a la escritura no es un problema como antes. Vea un artículo algo anticuado aquí

    Por lo tanto, para un punto de reference de desempeño dado, cuando se factoriza el costo total de propiedad, incluyendo la energía directa y los costos indirectos de refrigeración, los SSD podrían ser muy atractivos. Además, dependiendo de los detalles de su entorno, la networkingucción en el número de dispositivos necesarios para un determinado nivel de performance también podría resultar en una networkingucción de los requisitos de personal, networkinguciendo los costos laborales.

    Costo y performance

    Has agregado que tienes una restricción de coste inferior a $ 50K USD y realmente quieres mantenerla bajo $ 10K. Usted también ha indicado en un comentario que usted puede conseguir algunos "baratos" SSD, eludiendo que los SSD serán más baratos que los DBA o consultores. Esto puede ser cierto dependiendo del número de horas que necesitaría un DBA y si es un costo reoccuring o no. No puedo hacer el análisis de costos para usted.

    Sin embargo, una cosa que debe tener mucho cuidado es el tipo de SSD que obtiene. No todos los SSD se crean iguales. En general los SSD "baratos" que usted ve para la venta en el dólar $ 200-400 (2008/11/20) se piensan para los ambientes bajos de la energía / calor como los orderadores portátiles. Estas unidades tienen realmente niveles de performance más bajos en comparación con un 10K o 15K RPM HDD – especialmente para las escrituras. Las unidades de nivel empresarial que tienen el performance de asesino que usted habla de – como la serie Mtron Pro – son bastante caros. Actualmente están alnetworkingedor de:

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

    Dependiendo de sus requisitos de espacio, performance y networkingundancia, podría fácilmente explotar su presupuesto.

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

    Si necesitara un TB de almacenamiento disponible sin embargo, entonces RAID 0 + 1/10 sería ~ $ 51K y RAID 5 con 2 hotspares sería ~ $ 32K.

    Cuadro grande

    Dicho esto, la installation, configuration y mantenimiento de una gran database de producción requiere una persona altamente cualificada. Los datos dentro del DB y los services proporcionados a partir de esos datos son de un valor extremadamente alto para las empresas con este nivel de requisitos de performance. Además, hay muchas cosas que simplemente no se pueden resolver lanzando hardware en el problema. Un DBMS configurado incorrectamente, un esquema de database o una estrategia de indexing deficiente puede / arruinar / un performance de DB. Basta con ver los problemas que Stackoverflow experimenta en su migration a SQL Server 2008 aquí y aquí . El hecho de la cuestión es que una database es una aplicación extenuante no sólo en el disco, sino también en la RAM y la CPU. El equilibrio entre el problema de performance multi-variable y la integridad de los datos, la security, la networkingundancia y la copy de security es un poco complicado.

    En resumen, aunque creo que todas y cada una de las mejoras a la tecnología de hardware y software son bien recibidas por la comunidad, la administración de bases de datos a gran escala – como el desarrollo de software – es un problema difícil y seguirá requiriendo trabajadores calificados. Una mejora dada puede no cosechar los costos de networkingucción de mano de obra que usted o una empresa podría esperar.

    Un buen punto de salto para algunas investigaciones podría ser el website / blog de Brent Ozar aquí . Usted podría reconocer su nombre – él es el que ha ayudado a la tripulación stackoverflow con sus problemas de performance de MS SQL Server 2008. Su blog y resources que vincula para ofrecer un poco de amplitud y profundidad.

    Actualizar

    El propio Stackoverflow va a la ruta SSD basada en el consumidor para su almacenamiento. Lea sobre esto aquí: http://blog.serverfault.com/post/our-storage-decision/

    Referencias

    Si usted tiene un sitio muy, realmente de alto tráfico que puede beneficiarse de un SSD para boost el performance de escritura, probablemente tendrá un problema con la vida útil de la SSD, por lo que no se venden en ellos todavía para eso.

    Con eso en mente, ¿qué hacer con las bases de datos que tienen altos niveles de lecturas? La respuesta es simple: atasco el server con tanta RAM como usted puede estómago. Usted encontrará que las tablas más calientes casi siempre se mantienen en memory caching RAM de todos modos, y cualquier golpe grande en disco probablemente se deba a una gran tabla o índice de escaneo, que a menudo puede ser optimizado con la indexing adecuada.

    He trabajado como DBA durante 5 años y pensar en maneras de mejorar el desempeño DB siempre está en la parte de atrás de mi mina. He estado viendo el espacio SSD y creo que se están convirtiendo cada vez más en una opción 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 de la GC-Ramdisc que le permite usar RAM DDR2 para crear una unidad SATA (hasta 64gig) usando palos DDR2 con una teoría teórica de 400MB / 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 contra todos los jugadores en el mercado SSD y resulta que Intel tiene 64GB x25-E SSD que es bastante comparable a tener un hardware ramdisk.

    Lo que me preocupa acerca de la SSD es que se desgastan con todo el estrés que un gran DB que a través de ellos, y por lo que tendría que usar raid para reflejar las unidades, lo que significa que usted está pagando el doble;

    Y la desventaja con el hardware ramdisk es que la batería, en el caso de un corte de energía sólo los poderes durante tanto time por lo que tendría que elaborar una forma de fantasía para respaldarlo. Creo que también se puede comprar un enchufe de alimentación para ellos, pero luego que todavía depende de su UPS.

    Sugiero que utilice el disco de RAM de hardware para el file de intercambio de datos y DB de Windows y coloque la database en el Intel X25-E Extreme (aprox. 600 USD para 64 gig).

    De todos modos gritaría y haría que todo el rest de nosotros estuviera muy celoso.

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

    Saludos, Dave

    Simplemente montamos un server w2k3 r2 64bit Sql 2008 en un espejo híbrido Seagate Momentus XT de 2.5in. – 1/4 de carrera para OS y 1/4 de carrera para DB. Así que estaban usando 125GB para OS y 125GB para DB. estaban recibiendo 1500 MB / s a ​​1900 MB / s seq lecturas. En un Intel i7 2600K 3.4Ghz 8 GB

    Hay productos en el mercado como este que hacen este tipo de cosas. También, como el otro cartel dice, la adición de RAM adicional al server de DB le dará mejores tasas de éxito de caching, lo que networkingucirá el tráfico del disco.

    Los serveres Opteron de 8 zócalos, como un Sun X4600, le permitirán almacenar hasta 256GB de RAM en precios aún más baratos que los de un equipo DBA grande. También podría considerar el uso de files planos en lugar de un DBMS (como esta empresa hizo), que le dará un mejor performance que un DBMS. En este caso, una SAN le dará un grado de integridad de datos. Sin embargo, usted tendrá que diseñar su estrategia de acceso a los datos cuidadosamente para evitar meterse en un lío. Al parecer bastantes equipos dot-com de gran volumen hacen esto. Es considerablemente más eficiente que un DBMS, lo que permite hardware bastante peatonal para manejar grandes cargas, y evita las tarifas de licencia de DBMS.

    Las unidades SSD se basan en memory flash NAND (MLC o SLC). Si está comprando unidades SSD en un factor de forma SATA (2 o 3), está limitando el performance que puede get de ellas. Normalmente, las unidades SSD basadas en el controller Sandforce SF-1200 rápido producen lecturas de 220MB / segundo y escrituras de 205MB / segundo – mucho más rápido que un disco mecánico rotativo antiguo.

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

    Así que para su solución "barata", vaya con un SATA 2/3 SDD basado en el controller Sandforce SF-1200. Esto le conseguirá sobre un 3-5 veces sobre mejora de la velocidad (basada en experiencia del mundo real). Si usted tiene el presupuesto, entonces vaya para el FusioIO. Nada lo superará en términos de performance. Es increíblemente rápido. Esperar a gastar $ 20.000 a $ 50.000 sin embargo.

    El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.