По какой-то причине вставка в столбец varbinary(max) с помощью FILESTREAM или чтение из этого столбца занимает утомительно 10 секунд. Я потратил время, чтобы проследить узкое место в моем приложении node до утомительного. Я протестировал следующий запрос, используя примерно два файла по 25 МБ .
select * from documents where file_extension = 'zip'
Студия управления MSSQL
Инструменты разработчика Chrome
Фрагмент кода (неполный)
Привет @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
Это выглядит хорошо! Это соответствует нашим результатам для вставок. Например, использование памяти сократилось вдвое.
Мы обязательно постараемся увеличить время чтения в будущем 💪
:tada: Эта проблема была решена в версии 8.1.0 :tada:
Релиз доступен на:
Ваш бот семантического выпуска :package::rocket:
Самый полезный комментарий
Хорошо, после просеивания всех открытых в настоящее время проблем становится ясно, что блокировка производительности является распространенной проблемой (например, # 879, # 781, # 475, # 467, # 319, # 303). В настоящее время в нашей дорожной карте есть такие вещи, как реализация функции Always Encrypted, улучшенная проверка/преобразование типов данных , подключаемые поставщики аутентификации и рефакторинг текущих типов данных . Но, судя по поднятым проблемам, кажется, что этот блок производительности является наиболее распространенным барьером, с которым люди сталкиваются при использовании утомительного. Я обсуждаю с Артуром и командой, какая работа должна быть приоритетной, поэтому, если вы считаете, что повышение производительности — это самое большое изменение, которое вы хотели бы увидеть, оставьте лайк или прокомментируйте свои мысли о том, как мы должны двигаться вперед. Любой отзыв будет очень полезен! 🙇