Tedious: Einfügungen in varbinary(max) col mit FILESTREAM oder Lesevorgänge aus dieser Spalte dauern 10 Sekunden

Erstellt am 18. Sept. 2019  ·  10Kommentare  ·  Quelle: tediousjs/tedious

Aus irgendeinem Grund dauert das Einfügen in varbinary(max) col mit FILESTREAM oder das Lesen aus dieser Spalte mühsam 10 Sekunden. Ich habe mir die Zeit genommen, den Flaschenhals in meiner Knotenanwendung auf mühsam zurückzuverfolgen. Ich habe die folgende Abfrage mit ungefähr zwei 25-MB-Dateien getestet.

select * from documents where file_extension = 'zip'

MSSQL-Verwaltungsstudio

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

Chrome-Entwicklungstools

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

Codeschnipsel (nicht vollständig)

langweiliges-snippet.txt

Follow up discussion enhancement released

Hilfreichster Kommentar

Ok, nachdem ich alle derzeit offenen Probleme durchgesehen habe, ist klar, dass Leistungsblockaden ein häufiges Problem sind (z. B. #879, #781, #475, #467, #319, #303). Derzeit haben wir Dinge auf unserer Roadmap wie die Implementierung der Always Encrypted-Funktion, verbesserte Datentypvalidierung/-konvertierung , austauschbare Authentifizierungsanbieter und Refactoring aktueller Datentypen . Aber basierend auf den angesprochenen Problemen scheint dieser Leistungsblock das häufigste Hindernis zu sein, mit dem Menschen konfrontiert sind, wenn sie mühsam verwenden. Ich diskutiere mit Arthur und dem Team darüber, welche Arbeit priorisiert werden muss. Wenn Sie also der Meinung sind, dass die Verbesserung der Leistung die größte Veränderung ist, die Sie sehen möchten, hinterlassen Sie bitte ein „Gefällt mir“ oder kommentieren Sie Ihre Gedanken darüber, wie wir vorankommen sollten. Jedes Feedback wäre eine große Hilfe! 🙇

Alle 10 Kommentare

Hallo @sammaniamsam ,

Danke für den Hinweis. Ich denke, dies kann daran liegen, wie Token-Parsing in Tedious implementiert ist, nämlich es gibt viele asynchrone Rückrufe, die viel Speicher beanspruchen, was bei Verwendung von varbinary(max) und vielleicht auch varchar(max) noch mehr der Fall ist. Wir haben einen Plan, um zu überarbeiten, wie Dinge in Tedious implementiert werden, um die Leistung in naher Zukunft zu steigern.

Was denkst du @arthurschreiber , @MichaelSun90 ?

Hallo @sammaniamsam , ich bin nur neugierig, welche Version von Tedious Sie verwenden, die diesen Leistungsengpass verursacht? #1006

@IanChokS Ich verwende "^5.0.3"

Ok, nachdem ich alle derzeit offenen Probleme durchgesehen habe, ist klar, dass Leistungsblockaden ein häufiges Problem sind (z. B. #879, #781, #475, #467, #319, #303). Derzeit haben wir Dinge auf unserer Roadmap wie die Implementierung der Always Encrypted-Funktion, verbesserte Datentypvalidierung/-konvertierung , austauschbare Authentifizierungsanbieter und Refactoring aktueller Datentypen . Aber basierend auf den angesprochenen Problemen scheint dieser Leistungsblock das häufigste Hindernis zu sein, mit dem Menschen konfrontiert sind, wenn sie mühsam verwenden. Ich diskutiere mit Arthur und dem Team darüber, welche Arbeit priorisiert werden muss. Wenn Sie also der Meinung sind, dass die Verbesserung der Leistung die größte Veränderung ist, die Sie sehen möchten, hinterlassen Sie bitte ein „Gefällt mir“ oder kommentieren Sie Ihre Gedanken darüber, wie wir vorankommen sollten. Jedes Feedback wäre eine große Hilfe! 🙇

WIP zur Behebung von Leistungsproblemen -> #1037

Beschreibung: #1038

Hallo @sammaniamsam , wir haben kürzlich #1049, #1044, #1037 zusammengeführt, was hoffentlich die Leistung verbessert. Haben Sie etwas dagegen, wenn Sie Ihren Benchmark noch einmal gegen den neuesten Master-Zweig laufen lassen und uns mitteilen, ob Sie eine Leistungsverbesserung von Ihrer Seite aus feststellen?

Danke! 🙇

Bearbeiten: Es wurde noch nicht auf npm veröffentlicht, aber die Änderungen befinden sich im aktuellen Master-Zweig

@IanChokS Absolut! Vielen Dank, dass Sie sich darum gekümmert haben. Ich freue mich darauf, die neuen Verbesserungen zu testen.

@IanChokS Die Ergebnisse sind in der folgenden Tabelle aufgeführt. Lassen Sie mich wissen, wenn Sie Fragen haben.

Methode | Mühsame Version | Anzahl der Dateien | Größe | Ausführungszeit (ms)
-- | -- | -- | -- | --
Lesen Sie | ^6.3.0 | 1 | 23,33 MB | 2435.834
Lesen Sie | ^6.3.0 | 2 | 46,66MB | 5008.435
Lesen Sie | ^6.3.0 | 3 | 136,5 KB | 329.727
Einfügen | ^6.3.0 | 2 | 11,9MB | 4316,95
Einfügen | ^6.3.0 | 4 | 59 KB | 42.864
Lesen Sie | Neuester Meister | 1 | 23,33 MB | 2771.478
Lesen Sie | Neuester Meister | 2 | 46,66MB | 4877.394
Lesen Sie | Neuester Meister | 3 | 136,5 KB | 93.575
Einfügen | Neuester Meister | 2 | 11,9MB | 2535.267
Einfügen | Neuester Meister | 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

Das sieht gut aus! Es stimmt mit unseren Ergebnissen für Einsätze überein. Beispielsweise ist die Speichernutzung um die Hälfte gesunken.
image
image

Wir werden auf jeden Fall versuchen, die Lesezeit auch in Zukunft zu erhöhen 💪

:tada: Dieses Problem wurde in Version 8.1.0 behoben :tada:

Die Ausgabe ist verfügbar unter:

Ihr Semantic-Release- Bot :package::rocket:

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen