Tedious: Las inserciones en varbinary(max) col con FILESTREAM o las lecturas de esa columna tardan decenas de segundos

Creado en 18 sept. 2019  ·  10Comentarios  ·  Fuente: tediousjs/tedious

Por alguna razón, las inserciones en varbinary (max) col con FILESTREAM o las lecturas de esa columna tardan decenas de segundos con tedioso. Me tomé el tiempo para rastrear el cuello de botella en mi aplicación de nodo hasta volverlo tedioso. Probé la siguiente consulta usando aproximadamente dos archivos de 25 MB .

select * from documents where file_extension = 'zip'

Estudio de administración MSSQL

Screen Shot 2019-09-18 at 1 49 36 PM

Herramientas de desarrollo de Chrome

Screen Shot 2019-09-18 at 1 53 16 PM

Fragmento de código (no completo)

tedious-snippet.txt

Follow up discussion enhancement released

Comentario más útil

Bien, después de analizar todos los problemas abiertos actualmente, está claro que el bloqueo del rendimiento es un problema común (p. ej., #879, #781, #475, #467, #319, #303). Actualmente, tenemos en nuestra hoja de ruta cosas como la implementación de la función Always Encrypted, la validación/conversión de tipo de datos mejorada , los proveedores de autenticación conectables y la refactorización de los tipos de datos actuales . Pero según los problemas que se plantean, parece que este bloqueo de rendimiento es la barrera más común que enfrentan las personas cuando usan tedioso. Estoy discutiendo con Arthur y el equipo sobre qué trabajo debe priorizarse, por lo que si cree que mejorar el rendimiento es el mayor cambio que le gustaría ver, deje un Me gusta o comente sus pensamientos sobre cómo debemos avanzar. ¡Cualquier comentario sería de gran ayuda! 🙇

Todos 10 comentarios

Hola @sammaniamsam ,

Gracias por señalar esto. Creo que esto puede deberse a cómo se implementa el análisis de tokens en Tedious, es decir, hay muchas devoluciones de llamadas asincrónicas que ocupan mucha memoria, lo que se vuelve más cuando se usa varbinary(max) y quizás varchar(max) también. Tenemos un plan para refactorizar cómo se implementan las cosas en Tedious para aumentar el rendimiento en un futuro próximo.

¿Cuáles son sus pensamientos @arthurschreiber , @MichaelSun90 ?

Hola, @sammaniamsam , solo tengo curiosidad por saber qué versión de Tedious estás usando que causa este cuello de botella en el rendimiento. #1006

@IanChokS Estoy usando "^ 5.0.3"

Bien, después de analizar todos los problemas abiertos actualmente, está claro que el bloqueo del rendimiento es un problema común (p. ej., #879, #781, #475, #467, #319, #303). Actualmente, tenemos en nuestra hoja de ruta cosas como la implementación de la función Always Encrypted, la validación/conversión de tipo de datos mejorada , los proveedores de autenticación conectables y la refactorización de los tipos de datos actuales . Pero según los problemas que se plantean, parece que este bloqueo de rendimiento es la barrera más común que enfrentan las personas cuando usan tedioso. Estoy discutiendo con Arthur y el equipo sobre qué trabajo debe priorizarse, por lo que si cree que mejorar el rendimiento es el mayor cambio que le gustaría ver, deje un Me gusta o comente sus pensamientos sobre cómo debemos avanzar. ¡Cualquier comentario sería de gran ayuda! 🙇

WIP para solucionar problemas de rendimiento -> #1037

Descripción: #1038

Hola @sammaniamsam , recientemente fusionamos #1049, #1044, #1037 que esperamos mejore el rendimiento. ¿Le importa si vuelve a ejecutar su punto de referencia con la rama maestra más reciente y nos avisa si ve una mejora en el rendimiento de su parte?

¡Gracias! 🙇

editar: aún no se ha lanzado en npm, pero los cambios están en la rama maestra actual

@IanChokS ¡Absolutamente! Gracias chicos por ocuparse de esto. Estoy deseando probar las nuevas mejoras.

@IanChokS Los resultados están en la siguiente tabla. Hazme saber si tienes alguna pregunta.

Método | Versión tediosa | Número de archivos | Tamaño | Tiempo de ejecución (ms)
-- | -- | -- | -- | --
Leer | ^6.3.0 | 1 | 23,33 MB | 2435.834
Leer | ^6.3.0 | 2 | 46,66 MB | 5008.435
Leer | ^6.3.0 | 3 | 136,5 KB | 329.727
Insertar | ^6.3.0 | 2 | 11,9 MB | 4316.95
Insertar | ^6.3.0 | 4 | 59 KB | 42.864
Leer | Último maestro | 1 | 23,33 MB | 2771.478
Leer | Último maestro | 2 | 46,66 MB | 4877.394
Leer | Último maestro | 3 | 136,5 KB | 93.575
Insertar | Último maestro | 2 | 11,9 MB | 2535.267
Insertar | Último maestro | 4 | 59 KB | 43.886

Screen Shot 2020-03-06 at 1 32 17 PM
Screen Shot 2020-03-06 at 1 31 18 PM

¡Eso se ve bien! Coincide con nuestros resultados para inserciones. Por ejemplo, el uso de la memoria se ha reducido a la mitad.
image
image

Definitivamente buscaremos aumentar el tiempo de lectura también en el futuro 💪

:tada: Este problema se ha resuelto en la versión 8.1.0 :tada:

El lanzamiento está disponible en:

Su bot de liberación semántica :paquete::cohete:

¿Fue útil esta página
0 / 5 - 0 calificaciones