|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Многие разработчики жалуются на производительность при работе с типами BLOB. Поразмыслив мы пришли к выводу, что производительность чтения BLOB зависит от того каким образом он был записан. В основном приложения используют сегментированные BLOB. В некоторые компоненты доступа могут писать такие BLOB сегментами малого размера, что в итоге может снизить скорость их чтения. Я разработал небольшую утилиту, которая позволяет собрать статистику по выбранному BLOB полю и замерить скорость чтения такого BLOB. Естественно не имеет смысла проверять совсем маленькие BLOB поля. Утилита также умеет преобразовывать сегментированные BLOB в потоковые и перезаписывать сегментированные BLOB сегментами большего размера, однако сейчас эта функциональность отключена. Если вы хотите узнать насколько эффективно записывает BLOB поля ваше приложение вы можете воспользоваться утилитой выложенной здесь blob_opt Если кто-то обнаружит, что приложение пишет BLOB не эффективно поделитесь результатами исследования и расскажите какие компоненты доступа вы использовали. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 09:19 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Скачал, ввел настройки. При нажатии на "Analize" сообщение - "Object reference is Nil.". Что не хватает - непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 09:36 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
CyberMax, 64-разрядный fbclient в папке с приложением, ну или установленный в системе ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 09:38 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Симонов ДенисПоразмыслив мы пришли к выводу, что производительность чтения BLOB зависит от того каким образом он был записан. Влад обычно утверждает, что нет, поскольку сегменты префетчатся в один большой буфер. Но: 1. Нет префетча первых сегментов при open_blob. 2. Нет префетча при вычерпании буфера на клиенте. 3. У больших блобов не ставится флаг последовательного чтения, что вымывает кэш страниц. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 12:46 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, про 2 не понял. На 1 и 3 пункт совершенно точно не влияет как блоб записали. Dimitry SibiryakovВлад обычно утверждает, что нет, поскольку сегменты префетчатся в один большой буфер. это да, но это точно влияет на количество вызовов isc_get_segment чтобы полностью загрузить BLOB. Даже если оно по сети читается большим куском, то если блоб загружается в какую нибудь картинку по 100 байт, то это гораздо хуже чем загрузить его туда по 64Кбайт ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 12:57 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Симонов ДенисДаже если оно по сети читается большим куском, то если блоб загружается в какую нибудь картинку по 100 байт, то это гораздо хуже чем загрузить его туда по 64Кбайт Зависит от того как оно написано в fbclient. Это же не ядерный вызов чтобы тормозить, а всего лишь два копирования память-память. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 13:03 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Симонов Денис Поразмыслив мы пришли к выводу, что производительность чтения BLOB зависит от того каким образом он был записан. Если база после backup/restore, влияет ли на производительность чтения то, каким образом этот BLOB был записан в исходной базе ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:01 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Симонов Денис, Запустил, оно выдало много похожих строк на определенную таблицу, типа таких Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Это хорошо или плохо? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:04 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
YuRock, тут всё нормально. Блобы маленькие, они записаны сегментом с размером равным размеру ваших данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:08 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
ggreggory, backup/restore не влияет на размер сегментов с которыми был изначально записан BLOB ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:09 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
кстати, раз пошла такая пьянка, какой сейчас максимально допустимы размер сегмента в 3.0/4.0 ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:14 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
По-прежнему 65535. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:22 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
09.06.2021 14:22, Dimitry Sibiryakov пишет: > По-прежнему 65535. из-за почему? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:24 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Мимопроходящийиз-за почему? Из-за двух байт на него. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:28 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
09.06.2021 14:28, Dimitry Sibiryakov пишет: > Из-за двух байт на него. вопиющий архаизм! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:30 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Не нравится - используй стрёимные. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:33 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
09.06.2021 14:33, Dimitry Sibiryakov пишет: > Не нравится - используй стрёимные. похоже, придётся допиливать под это дело библиотеку. есть где-то референс API на эту тему? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:43 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Мимопроходящийесть где-то референс API на эту тему? Нет. Если не считать APIGuide от свежих IB где на эту тему два слова. PS: Как по мне так гораздо забавнее вопрос: что скажет сервер если в CLOB поле с чарсетом UTF-8 попытаться внести данные из CLOB поля с чарсетом Win1251 и сегментом в 65535. PPS: И таки да, если сейчас попытаться такое поле прочитать в любой другой кодировке, то получишь битые символы если заранее не позаботился о правильном их сохранении по сегментам. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:48 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Симонов Денис YuRock, тут всё нормально. Блобы маленькие, они записаны сегментом с размером равным размеру ваших данных. Это IBX так пишет, по 16кб. Хотя, конечно, бывают и побольше, и мегабайты... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:48 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Симонов Денис, аппликация 64х? под 32 нету? зы: есть у меня БЛОБы метров по 30 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 14:58 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Мимопроходящийзы: есть у меня БЛОБы метров по 30 Как-то слабо. Найдёшь хотя бы в пару гигабайт - попробуй на нём новую функцию UNICODE_VAL. "Вот тогда мы и повеселимся." (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:05 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Мимопроходящий, могу собрать вечером. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:18 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
09.06.2021 15:18, Симонов Денис пишет: > могу собрать вечером. Ок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:23 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PS: Как по мне так гораздо забавнее вопрос: что скажет сервер если в CLOB поле с чарсетом UTF-8 попытаться внести данные из CLOB поля с чарсетом Win1251 и сегментом в 65535. Dimitry Sibiryakov И таки да, если сейчас попытаться такое поле прочитать в любой другой кодировке, то получишь битые символы если заранее не позаботился о правильном их сохранении по сегментам Там есть сегменты ? И как жить дальше ? :'( ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:16 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
hvladИ как жить дальше ? :'( Плохо, но, к счастью, недолго. Свой код чтения файла по частям я изменить могу, код транслитерации прочитанного сегмента в дебрях движка - нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:36 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а с чего ты решил, что там есть проблемы ? Или ты что-то знаешь, чего не знает трекер ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:43 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
hvladа с чего ты решил, что там есть проблемы ? Наверное, я как-то неправильно интерпретировал комментарий Код: sql 1.
поскольку это не может быть правдой если клоб размером в один сегмент из 65353 русских символов пытается конвертироваться в utf-8. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 17:16 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ты пробовал, или как обычно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 18:04 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
hvladты пробовал, или как обычно ? Как обычно, конечно. Работа QA не в моём вкусе. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 18:15 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Мимопроходящий Симонов Денис, аппликация 64х? под 32 нету? зы: есть у меня БЛОБы метров по 30 выложил zip архивы вместе с fbclient 3.0 для x86 и x64 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 20:39 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hvladты пробовал, или как обычно ? Как обычно, конечно. Работа QA не в моём вкусе.Почему я не удивлён... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 22:06 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
hvladПочему я не удивлён... Потому что ты старый и не первый день меня знаешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 00:13 |
|
Производительность работы с типами BLOB
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PS: Как по мне так гораздо забавнее вопрос: что скажет сервер если в CLOB поле с чарсетом UTF-8 попытаться внести данные из CLOB поля с чарсетом Win1251 и сегментом в 65535. PPS: И таки да, если сейчас попытаться такое поле прочитать в любой другой кодировке, то получишь битые символы если заранее не позаботился о правильном их сохранении по сегментам. Сдается мне, если бы с этим были бы какие-то (реальные) проблемы, то они они бы вылезли лет 12-13 назад. Как, например, с кодировками ICU. --- Если я все правильно понял, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 07:44 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560013]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 234ms |
total: | 494ms |
0 / 0 |