powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Производительность работы с типами BLOB
25 сообщений из 33, страница 1 из 2
Производительность работы с типами BLOB
    #40076538
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Многие разработчики жалуются на производительность при работе с типами BLOB.

Поразмыслив мы пришли к выводу, что производительность чтения BLOB зависит от того каким образом он был записан.
В основном приложения используют сегментированные BLOB. В некоторые компоненты доступа могут писать такие BLOB сегментами малого размера, что в итоге может снизить скорость их чтения.

Я разработал небольшую утилиту, которая позволяет собрать статистику по выбранному BLOB полю и замерить скорость чтения такого BLOB. Естественно не имеет смысла проверять совсем маленькие BLOB поля.

Утилита также умеет преобразовывать сегментированные BLOB в потоковые и перезаписывать сегментированные BLOB сегментами большего размера, однако сейчас эта функциональность отключена.

Если вы хотите узнать насколько эффективно записывает BLOB поля ваше приложение вы можете воспользоваться утилитой выложенной здесь blob_opt

Если кто-то обнаружит, что приложение пишет BLOB не эффективно поделитесь результатами исследования и расскажите какие компоненты доступа вы использовали.

Спасибо.
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076540
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачал, ввел настройки. При нажатии на "Analize" сообщение - "Object reference is Nil.". Что не хватает - непонятно.
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076541
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

64-разрядный fbclient в папке с приложением, ну или установленный в системе
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076584
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПоразмыслив мы пришли к выводу, что производительность чтения BLOB зависит от того каким
образом он был записан.

Влад обычно утверждает, что нет, поскольку сегменты префетчатся в один большой буфер.

Но:
1. Нет префетча первых сегментов при open_blob.
2. Нет префетча при вычерпании буфера на клиенте.
3. У больших блобов не ставится флаг последовательного чтения, что вымывает кэш страниц.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076589
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

про 2 не понял. На 1 и 3 пункт совершенно точно не влияет как блоб записали.


Dimitry SibiryakovВлад обычно утверждает, что нет, поскольку сегменты префетчатся в один большой буфер.

это да, но это точно влияет на количество вызовов isc_get_segment чтобы полностью загрузить BLOB. Даже если оно по сети читается большим куском, то если блоб загружается в какую нибудь картинку по 100 байт, то это гораздо хуже чем загрузить его туда по 64Кбайт
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076591
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДаже если оно по сети читается большим куском, то если блоб загружается в какую нибудь
картинку по 100 байт, то это гораздо хуже чем загрузить его туда по 64Кбайт

Зависит от того как оно написано в fbclient. Это же не ядерный вызов чтобы тормозить, а
всего лишь два копирования память-память.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076613
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис

Поразмыслив мы пришли к выводу, что производительность чтения BLOB зависит от того каким образом он был записан.


Если база после backup/restore, влияет ли на производительность чтения то, каким образом этот BLOB был записан в исходной базе ?
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076614
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Запустил, оно выдало много похожих строк на определенную таблицу, типа таких

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Key DB_KEY=x'AF01000063260000';
Key DB_KEY=x'AF01000064260000';
NumSegments: 1; MaxSegmentSize: 603; TotalSize: 603; BlobType: Segmented;

Key DB_KEY=x'AF01000065260000';
NumSegments: 1; MaxSegmentSize: 628; TotalSize: 628; BlobType: Segmented;

Key DB_KEY=x'AF01000066260000';
NumSegments: 1; MaxSegmentSize: 2437; TotalSize: 2437; BlobType: Segmented;

Key DB_KEY=x'AF01000067260000';
NumSegments: 1; MaxSegmentSize: 222; TotalSize: 222; BlobType: Segmented;

Это хорошо или плохо?
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076616
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

тут всё нормально. Блобы маленькие, они записаны сегментом с размером равным размеру ваших данных.
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076617
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

backup/restore не влияет на размер сегментов с которыми был изначально записан BLOB
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076622
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, раз пошла такая пьянка, какой сейчас максимально допустимы размер сегмента в 3.0/4.0 ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076626
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-прежнему 65535.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076628
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.06.2021 14:22, Dimitry Sibiryakov пишет:
> По-прежнему 65535.

из-за почему?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076629
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийиз-за почему?

Из-за двух байт на него.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076630
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.06.2021 14:28, Dimitry Sibiryakov пишет:
> Из-за двух байт на него.

вопиющий архаизм!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076631
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нравится - используй стрёимные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076634
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.06.2021 14:33, Dimitry Sibiryakov пишет:
> Не нравится - используй стрёимные.

похоже, придётся допиливать под это дело библиотеку.
есть где-то референс API на эту тему?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076635
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийесть где-то референс API на эту тему?

Нет. Если не считать APIGuide от свежих IB где на эту тему два слова.

PS: Как по мне так гораздо забавнее вопрос: что скажет сервер если в CLOB поле с чарсетом
UTF-8 попытаться внести данные из CLOB поля с чарсетом Win1251 и сегментом в 65535.

PPS: И таки да, если сейчас попытаться такое поле прочитать в любой другой кодировке, то
получишь битые символы если заранее не позаботился о правильном их сохранении по сегментам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076636
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
YuRock,

тут всё нормально. Блобы маленькие, они записаны сегментом с размером равным размеру ваших данных.
Ну, слава богу))
Это IBX так пишет, по 16кб.
Хотя, конечно, бывают и побольше, и мегабайты...
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076639
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, аппликация 64х?
под 32 нету?

зы: есть у меня БЛОБы метров по 30

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076642
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийзы: есть у меня БЛОБы метров по 30

Как-то слабо. Найдёшь хотя бы в пару гигабайт - попробуй на нём новую функцию UNICODE_VAL.
"Вот тогда мы и повеселимся." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076648
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

могу собрать вечером.
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076649
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.06.2021 15:18, Симонов Денис пишет:
> могу собрать вечером.

Ок.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076666
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
PS: Как по мне так гораздо забавнее вопрос: что скажет сервер если в CLOB поле с чарсетом
UTF-8 попытаться внести данные из CLOB поля с чарсетом Win1251 и сегментом в 65535.
Проверь.


Dimitry Sibiryakov
И таки да, если сейчас попытаться такое поле прочитать в любой другой кодировке, то
получишь битые символы если заранее не позаботился о правильном их сохранении по сегментам
"Проблема" того же рода, как и при чтении большого файла небольшими частями.
Там есть сегменты ? И как жить дальше ? :'(
...
Рейтинг: 0 / 0
Производительность работы с типами BLOB
    #40076673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИ как жить дальше ? :'(

Плохо, но, к счастью, недолго. Свой код чтения файла по частям я изменить могу, код
транслитерации прочитанного сегмента в дебрях движка - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Производительность работы с типами BLOB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]