PDA

Ver la versión completa : SQL Express Muuuy lenta



kapi2454
30-07-2020, 07:35 PM
Hola gente, estoy ahora con un problema en una empresa. Ellos usan SQL Express 2019 y una base de datos de unos 10Gb. Mueven muchos artículos por días. Tiene una pagina web enganchada y 5 cajas facturando, dos maquinas de consulta y alguna mas en la vuelta haciendo algo de contabilidad.
El tema es que dos por tres todo queda re lageado. Veo que el proceso de SQL queda al 100% por varios minutos. Tengo dos SSD de 1Tb en Raid 0. no recuerdo la placa madre que tiene pero si un Ryzen 3600 con 32Gb DDR4.
Me quede corto en recursos? Se armo esta maquina cuando recién salio el 3600, en ese momento funciono bien pero todo empezó mal cuando se empezo a enganchar la web. El software no es mio ni soy del soporte pero trae una SDK que usa otra empresa para publicar los artículos a la web. No se bien por donde esta el problema. Averigüe por SQL posta y nos pasaron 22.000 dolares ya que al estar abierta al publico no se sabe los usuario que usan la base y te encajan esta. Diría que 0 chances de que gasten esa plata. aparte de que no se si viene por ahí el problema.
Gracias!!

SEndero Luminoso
30-07-2020, 07:50 PM
Y por lo que decís papi es un problema de la WEB-SDK pedorros y aunque trates de meter fuerza bruta seguramente siga pasando lo mismo...

https://logicalread.com/troubleshoot-high-cpu-sql-server-pd01/

https://www.sqlshack.com/how-to-identify-slow-running-queries-in-sql-server/

Master of the Wind
02-08-2020, 07:22 PM
Hola gente, estoy ahora con un problema en una empresa. Ellos usan SQL Express 2019 y una base de datos de unos 10Gb. Mueven muchos artículos por días. Tiene una pagina web enganchada y 5 cajas facturando, dos maquinas de consulta y alguna mas en la vuelta haciendo algo de contabilidad.
El tema es que dos por tres todo queda re lageado. Veo que el proceso de SQL queda al 100% por varios minutos. Tengo dos SSD de 1Tb en Raid 0. no recuerdo la placa madre que tiene pero si un Ryzen 3600 con 32Gb DDR4.
Me quede corto en recursos? Se armo esta maquina cuando recién salio el 3600, en ese momento funciono bien pero todo empezó mal cuando se empezo a enganchar la web. El software no es mio ni soy del soporte pero trae una SDK que usa otra empresa para publicar los artículos a la web. No se bien por donde esta el problema. Averigüe por SQL posta y nos pasaron 22.000 dolares ya que al estar abierta al publico no se sabe los usuario que usan la base y te encajan esta. Diría que 0 chances de que gasten esa plata. aparte de que no se si viene por ahí el problema.
Gracias!!

Un par de cosas

1) Por lo que describis tiene pinta que la base no es muy compleja, pero las tablas tienen muchos registros. Indexa las columnas mas accedidas.

2) Pensa en implementar un redis, o un memcached para cachear ciertas queries. Tambien, si ves que tenes alguna tabla con muuuuchos registros que no sea compleja de estructura, considera usar algun NOSQL para esas tablas.

3) Ahora, aca tenes el principal problema, y un par de cosas que te van a dar calidad de vida:

- SQL Server Express es una version de desarrollo, NO DE PRODUCCION. Muchos settings no estan disponibles (por ejemplo, hay mucho ajustes de pools y buffers que te salvarian la vida y no los vas a poder configurar), los default son malisimos y tiene muchas cosas para debug activadas que te dejan expuesto a ataques. Y muchisimo mas importante, no usa mas de 1GB de RAM y 1 hilo de CPU.

Para ese tipo de software, MySQL o PostgreSQL (que la odio) te da y te sobra, tendrias que dejar de usar el express, pero es un overkill tremendo pagar SQL server para esa aplicacion.

Esta sobrado ese hardware (demasiado, con la quinta parte de eso deberia funcionar), pero basicamente estas manejando un ferrari que para avanzar lo haces en reversa.

Yo hace tiempo deje de tratar con gente rata, ya de pique si usa hardware de PC para un servidor, y encima propone usar una version express para produccion, yo ni agarro esos laburos. Despues te comes dolores de cabeza como estos.

- YA MISMO QUE SAQUEN ESE RAID 0!!! Estas jugando con fuego. Y fuego del picante. Parece ser una PC de escritorio, y no hay nada menos confiable que el Fake RAID que hacen las placas de escritorio. Salvo que tengas replicacion, o que estes muy seguro de la politica de backups, solo estas buscando problemas.


Ahora, no me cerro eso de que "no se sabe que usuarios usan la base", eso esta definido en algun lado del codigo web de la aplicacion, y se puede ver en el sql server mismo.

kapi2454
02-08-2020, 08:02 PM
Recién ahora me estoy poniendo al día con este tema. Gracias Sendero por los link, le estuve pegando una revisada.
Master-of-the-Wind: Gracias por los piques y ayuda.
Tengo el tema de que yo no puedo administrar la base de datos ya que lo hace la gente del software. Quienes me parece que no lo están haciendo bien. De hecho te aseguraría que esa parte hasta la compraron hecha y no tiene idea de como funciona.
Me parece que voy a pasar la base a un M.2 que ya me presupuesto Sendero por que de mi lado y con el accesso que tengo no puedo hacer mucho mas. Voy a dejar ese disco exclusivo solo para la base y en el raid dejar las tablas temporales (Tengo que pedir a los del Software que lo hagan). Actualmente se hace un respaldo a diario de todo el sistema (Acronis 2020 original). Probé pasarlo a otra maquina y levanto bien, lo hice hace tiempo para ver si tenía sentido hacerlo y ver si funcionaba.
Como la gente del software no me da bola y se vive atascando las cosas, no me quedo otra que hacer que funcione a fuerza bruta. Pero bueno evidentemente esto tiene un limite y esta lejos de lo ideal.
En la pagina de Microsoft vi que tiene una version Developer y la express. Aclaran que la Express es para pequeños desarrollos
https://www.microsoft.com/es-es/sql-server/sql-server-downloads de todas formas estoy viendo de tramitar el tema de la compra de una base posta pero.....: el miedo que tengo es que lo que este fallando sea el software en si. entonces: hago gastar al cliente un re torta de guita y luego de todo sigue funcionando mal, por eso quería estar seguro de este tema.

Según el flaco de Microsoft me vende la licencia por terminal que use la base (CAL) pero en este caso puede haber 3 personas navegando o 10 o 200. entonces se supone es una versión sin limites de CAL, por eso el precio. Ahora me paso un pique un amigo y es el siguiente. La gente de la pagina web no es la misma que la del software de facturación. La gente de la pagina web puede clonar/sincronizar la base SQL con otra base MySQL, Maria,Mongo (lo que quieran) una vez al día o varias. Entonces los clientes por web se conectan a la base de la pagina y no al software del servidor, por lo que los CAL no serían infinitos.

Ahora navegando en eBay a lo rata también, encontré estas licencias. Que diferencia hay con las que me piden 22.000 lucas verdes?

https://www.ebay.com/itm/SQL-Server-2019-Standard-32-Cores-Unlimited-CAL-Product-Key-30-Sec-Delivery/184377446206?_trkparms=aid%3D555021%26algo%3DPL.SIMRVI%26ao%3D1%26asc%3D20190711100440%26meid%3D84ba 4aca98bb4ba285b65c3ec8e3cddf%26pid%3D100752%26rk%3D2%26rkt%3D16%26mehot%3Dpf%26sd%3D402329534589%26i tm%3D184377446206%26pmt%3D1%26noa%3D0%26pg%3D2047675%26algv%3DSimplRVIAMLv5WebWithPLRVIOnTopCombiner&_trksid=p2047675.c100752.m1982

Son los clientes que me tocaron y la cosa esta complicada, viene cerrando locales y tengo que acompañarlos en lo que pueda y cuidando la economía. No es que en Uruguay sobre clientes que tengan miles de dolares para gastar en equipos.
Master-of-the-Wind te dedicas a optimizar bases de datos? por que Podría hablar con la gente del Software y pedirles permiso para que te dejen revisar algunas cosas y con una segunda opinión me van a dar mas bola.

Master of the Wind
02-08-2020, 08:42 PM
No tenes un tema de hardware. No vas a ganar nada con el M2, ni con particionar las temporales en otro RAID. Los vas a hacer tirar plata con ese enfoque. Vos tenes un tema 100% software ahi, o software mal hecho, o base mal hecha, o el motor limitando, o todas a la vez posiblemente.

De hecho, aca tenes una tablita que compara versiones: https://www.fmsinc.com/MicrosoftAccess/SQLServerUpsizing/express/index.html. Las bases de datos usan MUCHISIMA MEMORIA. Que el engine este topeado a 1GB no lo solucionas con fuerza de hardware. Es un embudo.

Para que tengas una idea, la base de datos principal de mi laburo, que es del rubro loteria y casino online, hasta hace dos años era mas o menos esas prestaciones, 32gb de ram, RAID de SSD y unos cuantos cores, y estamos hablando de una DB que pasa el orden de miles de operaciones por segundo.


El criterio de pequeños desarrollos es para bases embedded, o que no tienen mucha concurrencia, que justamente es lo opuesto a lo que describis.

Ese enfoque que te pasaron esta bien, suponiendo que la gente que desarolle ande bien. Y la verdad, no es por ser sorete, pero no conozco ningun desarrollador bueno que se dedique a ese tipo de sistemas.

Lo que te puedo decir, es que si la pagina se conecta a la DB, puede ser una licencia sola, independiente de cuantas personas esten navegando ya que el que se conecta a la DB es el servidor web. El requerimiento ahi seria que la autenticacion no este implementada a nivel de SQL Server sino que a nivel de aplicacion, pero de nuevo, depende que tan bien anden los desarrolladores.

Si queres que me contacten, a ver que les puedo tirar.

Thalios
03-08-2020, 10:16 AM
Lo que te puedo decir, es que si la pagina se conecta a la DB, puede ser una licencia sola, independiente de cuantas personas esten navegando ya que el que se conecta a la DB es el servidor web. El requerimiento ahi seria que la autenticacion no este implementada a nivel de SQL Server sino que a nivel de aplicacion, pero de nuevo, depende que tan bien anden los desarrolladores.




venia a decir esto...si trabajan en capas, el servidor web va al servidor de aplicaciones, y este a la base de datos, por lo que no deberían tener usuarios ilimitados

kapi2454
03-08-2020, 04:34 PM
@Master of the Wind (https://www.gameover.uy/member.php?26-Master-of-the-Wind) te mande un privado pero tienes la casilla llena.

Master of the Wind
03-08-2020, 05:26 PM
Listo el poio