Tedious: Вставка в столбец varbinary(max) с помощью FILESTREAM или чтение из этого столбца занимает 10 секунд

Созданный на 18 сент. 2019  ·  10Комментарии  ·  Источник: tediousjs/tedious

По какой-то причине вставка в столбец varbinary(max) с помощью FILESTREAM или чтение из этого столбца занимает утомительно 10 секунд. Я потратил время, чтобы проследить узкое место в моем приложении node до утомительного. Я протестировал следующий запрос, используя примерно два файла по 25 МБ .

select * from documents where file_extension = 'zip'

Студия управления MSSQL

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

Инструменты разработчика Chrome

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

Фрагмент кода (неполный)

утомительный-snippet.txt

Follow up discussion enhancement released

Самый полезный комментарий

Хорошо, после просеивания всех открытых в настоящее время проблем становится ясно, что блокировка производительности является распространенной проблемой (например, # 879, # 781, # 475, # 467, # 319, # 303). В настоящее время в нашей дорожной карте есть такие вещи, как реализация функции Always Encrypted, улучшенная проверка/преобразование типов данных , подключаемые поставщики аутентификации и рефакторинг текущих типов данных . Но, судя по поднятым проблемам, кажется, что этот блок производительности является наиболее распространенным барьером, с которым люди сталкиваются при использовании утомительного. Я обсуждаю с Артуром и командой, какая работа должна быть приоритетной, поэтому, если вы считаете, что повышение производительности — это самое большое изменение, которое вы хотели бы увидеть, оставьте лайк или прокомментируйте свои мысли о том, как мы должны двигаться вперед. Любой отзыв будет очень полезен! 🙇

Все 10 Комментарий

Привет @sammaniamsam ,

Спасибо за указание на это. Я думаю, это может быть связано с тем, как в Tedious реализован синтаксический анализ токенов, а именно, есть много асинхронных обратных вызовов, которые занимают много памяти, что становится еще больше при использовании varbinary(max) и, возможно, varchar(max). У нас есть план по рефакторингу того, как вещи реализованы в Tedious, чтобы повысить производительность в ближайшем будущем.

Что вы думаете @arthurschreiber , @MichaelSun90 ?

Привет @sammaniamsam , мне просто любопытно, какую версию Tedious вы используете, что вызывает это узкое место в производительности? #1006

@IanChokS Я использую «^ 5.0.3»

Хорошо, после просеивания всех открытых в настоящее время проблем становится ясно, что блокировка производительности является распространенной проблемой (например, # 879, # 781, # 475, # 467, # 319, # 303). В настоящее время в нашей дорожной карте есть такие вещи, как реализация функции Always Encrypted, улучшенная проверка/преобразование типов данных , подключаемые поставщики аутентификации и рефакторинг текущих типов данных . Но, судя по поднятым проблемам, кажется, что этот блок производительности является наиболее распространенным барьером, с которым люди сталкиваются при использовании утомительного. Я обсуждаю с Артуром и командой, какая работа должна быть приоритетной, поэтому, если вы считаете, что повышение производительности — это самое большое изменение, которое вы хотели бы увидеть, оставьте лайк или прокомментируйте свои мысли о том, как мы должны двигаться вперед. Любой отзыв будет очень полезен! 🙇

WIP для исправления проблем с производительностью -> #1037

Описание: #1038

Привет, @sammaniamsam , недавно мы объединили #1049, #1044, #1037, что, мы надеемся, улучшит производительность. Вы не возражаете, если вы снова запустите тест с последней основной веткой и сообщите нам, если вы увидите улучшение производительности с вашей стороны?

Спасибо! 🙇

редактировать: он еще не выпущен на npm, но изменения есть в текущей основной ветке

@IanChokS Абсолютно! Спасибо, ребята, что позаботились об этом. Я с нетерпением жду возможности протестировать новые улучшения.

@IanChokS Результаты представлены в таблице ниже. Дайте знать, если у вас появятся вопросы.

Метод | Утомительная версия | Количество файлов | Размер | Время выполнения (мс)
-- | -- | -- | -- | --
Читать | ^ 6.3.0 | 1 | 23,33 МБ | 2435.834
Читать | ^ 6.3.0 | 2 | 46,66 МБ | 5008.435
Читать | ^ 6.3.0 | 3 | 136,5 КБ | 329,727
Вставить | ^ 6.3.0 | 2 | 11,9 МБ | 4316,95
Вставить | ^ 6.3.0 | 4 | 59 КБ | 42.864
Читать | Последний мастер | 1 | 23,33 МБ | 2771,478
Читать | Последний мастер | 2 | 46,66 МБ | 4877,394
Читать | Последний Мастер | 3 | 136,5 КБ | 93,575
Вставить | Последний Мастер | 2 | 11,9 МБ | 2535,267
Вставить | Последний Мастер | 4 | 59 КБ | 43.886

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

Это выглядит хорошо! Это соответствует нашим результатам для вставок. Например, использование памяти сократилось вдвое.
image
image

Мы обязательно постараемся увеличить время чтения в будущем 💪

:tada: Эта проблема была решена в версии 8.1.0 :tada:

Релиз доступен на:

Ваш бот семантического выпуска :package::rocket:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги