|
Производительность работы с типами 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 |
|
|
start [/forum/topic.php?fid=40&msg=40076538&tid=1560013]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 300ms |
0 / 0 |