SQL Server Express para bases de datos de producción?


14

Estamos a punto de lanzar una aplicación transaccional dual web / interna donde cada cliente tiene su propia base de datos. Cada base de datos es muy pequeña, menos de 50 MB cada una, por lo que nos preguntamos si tendría sentido usar SQL Express 2008 en lugar del SQL Server completo.

Esto parece tener las ventajas de distribuir E / S de disco a través de servidores mientras se ahorra mucho dinero (ya que las unidades pequeñas de 15K y los servidores de doble núcleo usados ​​son económicos). Si en algún momento necesitamos demasiados servidores, podemos actualizar a SQL Server ... pero con docenas de usuarios internos, esto parece demasiado costoso en este momento (especialmente porque necesitaríamos un cuadro de conmutación por error).

La memoria de 1GB y el uso de 4 núcleos en un solo procesador no suena demasiado restrictivo dados nuestros pequeños tamaños de bases de datos. Nunca tendremos más de ~ 200 usuarios simultáneos, y la mayoría de las operaciones serán más transaccionales (lo que parece favorecer muchos discos de alta velocidad sobre RAM / CPU pesados, ¿verdad?)

¿Me estoy perdiendo alguna ventaja de SQL Server Standard que podría justificar la inversión adicional de $ 5-20K inicialmente?

Respuestas:


17

Las otras ediciones del servidor SQL le ofrecen cosas como el Agente SQL para que pueda programar el mantenimiento de la base de datos y otros trabajos.

Mientras su base de datos pueda ajustarse dentro de los límites de la edición Express, estará bien.

Al servidor SQL le gusta mucha RAM. Mientras más, mejor. Como el SQL Server no puede cargar datos en la memoria caché, esto supondrá una carga adicional en los discos. Debe consultar la edición Web o la edición Workstation de SQL Server. Esas ediciones tienen límites más altos que la edición Express, pero cuestan menos que la Edición Estándar.

Si comienza con la edición Express, siempre puede actualizar más tarde a la Edición estándar después de comprar la licencia.


+1 no puede agregar nada más a esa respuesta
Nick Kavadias

No creo que la licencia de grupo de trabajo y edición web se pueda utilizar para aplicaciones empresariales alojadas externas.
Akash Kava el

1
Las licencias de CPU están disponibles para todas las ediciones (excepto Express, que no necesita una licencia de CPU), lo que significa que puede usarla para un sitio web público. Aquí está el enlace a la Licencia de CPU de grupo de trabajo bit.ly/KDLDR . No pude encontrar la edición web fácilmente, pero cualquier VAR debería poder proporcionarla sin mirar mucho.
mrdenny

También sugiero comenzar con algo por encima de Express, y pasar de express a cualquier otra edición puede ser difícil a veces.
DanBig

3
SQL Express es exactamente el mismo motor que las otras ediciones, solo que con límites de tamaño establecidos. Pasar de Express a otra edición es simplemente una cuestión de separar la base de datos de la edición Express y adjuntarla a otra instancia que esté ejecutando otra edición.
mrdenny

15

Algunos problemas de producción y soluciones que he tenido con la edición Express:

Copias de seguridad programadas

SSIS

  • SQL Express 2008 tiene el Asistente de importación / exportación de datos, pero el tiempo de ejecución dtsexec de la edición Express no ejecutará todos los paquetes SSIS
  • Solución alternativa: puede desarrollar paquetes SSIS con la edición Developer. Si tiene una edición estándar en la red, puede programar y ejecutar paquetes SSIS desde ella. Incluso puede ejecutar paquetes SSIS desde la edición de desarrollador, siempre que no sea contra la licencia
  • Consulte también:
    ¿Puedo ejecutar paquetes SSIS con SQL Server 2008 Express / Web o Workgroup
    SSIS con Sql Server 2005 express

Perfilado

  • Sin perfilador SQL
  • Solución alternativa: pruebe SqlProfiler For Express Edition
  • Advertencia: no siempre lo he encontrado útil para resolver emergencias de producción, como cuando sqlexpress toma el 100% de la capacidad del procesador del servidor. No pude lograr que el generador de perfiles produjera ningún rastro en uno de esos casos.
  • Vea también: ¿Qué perfilador usar con sql express?

2
  1. Si lee la Licencia de SQL Server, no necesita comprar una licencia adicional para el servidor pasivo si solo se usa para la conmutación por error y no atiende consultas hasta que su primer servidor falla.

  2. Hemos usado SQL Server Express durante bastante tiempo, y es bueno y mucho mejor que el MSDE anterior, tenemos más de 200 conexiones simuladas, pero solo tenemos una base de datos de tamaño 2GB, y todo es fluido. Nunca tuvimos ningún problema siempre que evitemos uniones costosas y hagamos una buena indexación. Ahora estamos utilizando SQL Standard, pero hasta que el tamaño de su base de datos sea superior a 4 GB y su número de usuarios sea inferior a 200-500, ciertamente puede vivir con SQL Express.

  3. SQL Server Express usa poco menos espacio de memoria ~ 200 MB, donde la edición estándar usa ~ 1.5 GB, probablemente porque la edición estándar hará mucho almacenamiento en caché. Sus consultas serán más lentas en Express en unos pocos milisegundos en comparación con la edición estándar. Desafortunadamente, la edición Express no utiliza cpus multi-core (esa es una función limitada), por lo que no será de gran ayuda si tiene 2 core o 4 core.


¿Pensé que SSE 2008 usaba múltiples núcleos (hasta 4)?
Beep beep

@LuckyLindy Standard usará hasta 4 zócalos, con muchos núcleos por zócalo como usted tiene.
mrdenny

"pero hasta que el tamaño de la base de datos sea más de 4 GB" 4 GB es la restricción por instancia. No recuerdo que haya restricciones en el número de instancias utilizadas
Gennady Vanin Геннадий Ванин

2

LuckyLindy: te animo a que te detengas por un segundo y verifiques que no necesitas el Agente SQL. Tu escribiste:

Estamos a punto de lanzar una aplicación transaccional dual web / interna donde cada cliente tiene su propia base de datos. Cada base de datos es muy pequeña, menos de 50 MB cada una, por lo que nos preguntamos si tendría sentido usar SQL Express 2008 en lugar del SQL Server completo.

¿Cuál es su plan para las copias de seguridad? No tiene que usar el Agente SQL, pero seguro le facilita la vida a un DBA. Puede escribir T-SQL / SMO / PowerShell / cualquier script que haga sus copias de seguridad y luego ejecutarlo a través de sqlcmd o PowerShell usando una tarea programada.

¿Cuál es su plan para el mantenimiento de la base de datos? Con el tiempo, esas bases de datos deberán desfragmentarse y comprobarse para mantener su coherencia. Standard Edition tiene todo tipo de beneficios para facilitar esto, mientras que en Express, tienes que trabajar (nuevamente con las secuencias de comandos y las tareas programadas).

¿Cómo se le notificarán los problemas en el servidor? El Agente lo ayuda aquí con Alertas para notificarle cuando un registro se está llenando, un disco se está llenando, etc.


Estas son tareas críticas del tipo DBA de SQL Server. Una cosa es ejecutar Express para una aplicación interna, pero una vez que comienza a decirnos que está alojando estos para clientes, me preocupa :)


La parte 2 de esto es preguntarle a cuántos clientes planea apoyar esto, tanto en el lanzamiento como después de un año. Si dice "100 clientes", entonces 100 bases de datos de 50 MB no serán suficientes en Express, simplemente no tiene suficiente memoria. Diablos: dependiendo de cuánto delta tengas, podrías alcanzar un máximo de 15 DB, no lo sé.

Nunca tendremos más de ~ 200 usuarios simultáneos, y la mayoría de las operaciones serán más transaccionales (lo que parece favorecer muchos discos de alta velocidad sobre RAM / CPU pesados, ¿verdad?)

Las operaciones transaccionales como INSERTs todavía se escriben en la memoria, por lo que no espere que necesite menos soporte de memoria. De hecho, dependiendo de cuántos INSERTs hagas, es posible que tengas mayores necesidades de memoria que la mayoría con esa cantidad de usuarios. Si está cargando muchos datos que la gente realmente no usará, entonces todavía ocupa memoria. Puede encontrar problemas de contención entre "datos que los usuarios consultan con frecuencia" y "datos que los usuarios están cargando y que nadie consultará por un tiempo". SQL nos protege al preservar los datos que las personas consultan con mayor frecuencia en la memoria durante más tiempo, pero aún tendrá contención.

En este punto, estoy divagando jajaja. Y 200 usuarios concurrentes tampoco están de acuerdo conmigo para Express. Digamos que 64k es un requisito promedio de memoria de conexión, ¿cuántas conexiones harán sus aplicaciones? ¿Utilizará la agrupación de conexiones?

En general, mi instinto al leer su descripción dice: "No - Express Edition simplemente no es lo suficientemente potente". Y odio la Workgroup Edition, creo que es un mal negocio, por lo que Standard me parece correcto.


2
Scott - Gran respuesta. A su punto ... SQL Server Express en realidad no tiene límite de tamaño de almacenamiento en las bases de datos, simplemente no puede tener una sola base de datos con más de 4 GB de datos. Como prueba, creé 10,000 bases de datos de 100MB (1TB) en un solo servidor, y SQL Server Express funcionó bien. Además, la memoria relacionada con cada conexión no se cuenta para el total de 1 GB. Estoy de acuerdo en que administrar todas estas bases de datos puede ser un poco complicado ... pero dado que en realidad tendremos miles de bases de datos, es probable que necesitemos scripts de todos modos (no hay forma de que quiera tocar manualmente una base de datos a menos que se convierta corrupto).
Beep beep

+1, estoy de acuerdo en que fue la respuesta gr8, pero también lo voté
Gennady Vanin Геннадий Ванин

1

¿Ha considerado usar uno de los DBMS gratuitos (MySQL, PostreSQL ...)? ¿Eso aliviaría sus preocupaciones de licencia?

Si esa no es una opción, SQL Server Express parece una buena solución.


2
En realidad, el año pasado realizamos pruebas de rendimiento en todas las bases de datos principales: MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express y SQL Desktop. Descubrimos que DB2, Oracle y SQL Server (y Express, pero no Desktop) volaron MySQL y PostgreSQL en Windows para nuestras operaciones transaccionales, por un factor de 2. 1/2 el rendimiento significa el doble del número de servidores. Cuando se alojó en Linux, MySQL y PostgreSQL lo hicieron un poco mejor, pero aún no a la par.
Beep beep

1

Ciertamente se puede usar para aplicaciones de producción importantes. Lo hemos usado en más de 1500 clínicas de atención médica, todas con instancias separadas de SQL Server Express instaladas para procesar millones de transacciones cada día. Puede evitar fácilmente la desventaja del Agente SQL Server utilizando uno de los siguientes:

  1. Producto de terceros como SQLAutomate
  2. Programador de tareas de Windows
  3. Una edición Standard o Enterprise de SQL Server con la capacidad del servidor maestro instalado 1 y 2 tiene un costo muy bajo o es gratis. 3 es costoso a menos que ya lo tenga disponible en su entorno.

Vea la excelente presentación de Michael Otey (google it) sobre "Uso de SQL Server Express en producción".


En realidad era una publicación de 7 años :)
BaronSamedi1958
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.