Начало » Использование СУБД » Firebird, HQbird, InterBase » isc_bpb_type_stream (не вижу разницы)
isc_bpb_type_stream [сообщение #1145] |
Fri, 16 December 2022 17:39 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
Здравствуйте, ВСЕ!
Помнится когда-то давно обсуждалось, что isc_bpb_type_stream == Рулез, а isc_bpb_type_segmented == Сакс.
Переключил работу с блобами на isc_bpb_type_stream и не увидел разницы.
Было:
Result := isc_open_blob2(Status, db_handle, tran_handle, blob_handle, blob_id, 0, nil);
Стало:
const
aBPB: array[0..2] of Char = Chr(isc_bpb_version1) + Chr(isc_bpb_type) + Chr(isc_bpb_type_stream);
begin
Result := isc_open_blob2(Status, db_handle, tran_handle, blob_handle, blob_id, SizeOf(aBPB), @aBPB);
Я что-то не так понял, или недокурил?
ЗЫ: Блобы до 30 мегабайт.
Канал относительно узкий.
Сжатие на уровне коннекта включено.
|
|
|
|
|
|
|
|
|
Re: isc_bpb_type_stream [сообщение #1159 является ответом на сообщение #1158] |
Mon, 19 December 2022 17:40 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
SDНу, ты же помнишь Джимову байку, что блобы были сделаны чисто "чтобы были" и "не хуже, чем у других". Без чётко определённой цели. угу.
и то что на SEGMENT SIZE (на который все забили) отводится unsigned short, по той же причине.
может имеет смысл его таки заюзать для однозначной дефиниции типа (потоковый/сегментный)?
если SEGMENT SIZE = 0, знач потоковый и нефиг туда пихать сегменты.
ну и наоборот.
ы?
[Обновления: Mon, 19 December 2022 18:02] Известить модератора
|
|
|
|
|
|
|
Re: isc_bpb_type_stream [сообщение #1170 является ответом на сообщение #1164] |
Fri, 23 December 2022 14:39 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
SDСкорее всего у тебя в базе сегменты недостаточно большие. я правильно понимаю, что какими "кусками"/сегментами записано, так сервер и отдаёт?
и это не обязательно то, что возвращает isc_blob_info() с параметром isc_info_blob_max_segment ?
SDБуфер при записи мало кто ставит больше 32к дык там тип short, больше 32к - число "некрасивое" будет.
SDisc_get_segment сегменты доставляет по одному, не объединяя. Или это ты потоковые ковыряешь?.. только начинаю ковырять. если есть чуток времени, поясни пожалуйста ньюбу, как в этом плане работают потоковые, и в чем таки их цимес?
зы: у нас сейчас все сервера переехали на арендованную площадку в дата-центр.
канал не очень широкий, но для приложений терпимо.
всё, кроме БЛОБов.
с БЛОБами всё медленно и печально...
[Обновления: Fri, 23 December 2022 14:39] Известить модератора
|
|
|
|
Re: isc_bpb_type_stream [сообщение #1181 является ответом на сообщение #1170] |
Mon, 26 December 2022 10:15 |
sim_84
Сообщений: 330 Зарегистрирован: June 2022
|
Senior Member |
|
|
Цитата:зы: у нас сейчас все сервера переехали на арендованную площадку в дата-центр.
канал не очень широкий, но для приложений терпимо.
всё, кроме БЛОБов.
с БЛОБами всё медленно и печально...
Если верить Владу (я верю), то с точки зрения сетевого протокола большой разницы между потоковыми и сегментированными блобами нет.
При чтении потокового блоба будет прочтено столько сколько запросили. При чтении сегментированного тоже, но внутри прочитанного могут быть байты отделяющие сегменты,
то есть прочтётся столько сегментов, сколько помещается в запрошенный размер.
С точки зрения оптимизации чтения блобов есть один рецепт, когда блобы короче 32K, но увы этот рецепт требует модификации запросов и специальную обработку.
select
case
when octets_length(b) < 32765
then cast(b as varbinary(32765))
end as s_b,
b
from
Для текстовых блобов надо под кодировку подстраивать.
Смысл в том что клиент читает запись, и если там короткий блоб, то мы получаем его значение через строку, если в ней пусто, то читаем уже из самого блоба
[Обновления: Mon, 26 December 2022 10:15] Известить модератора
|
|
|
|
|
Re: isc_bpb_type_stream [сообщение #1184 является ответом на сообщение #1183] |
Mon, 26 December 2022 15:55 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
"автоматом" БЛОБы на клиента не тащу.
в датасете фигурирует только Blob_ID.
фетчи с закачкой БЛОБа не чередуются.
когда юзеру нужен конкретный БЛОБ, он жамкает кнопку.
БЛОБ целиком затаскивается на клиента и отдаётся юзеру.
в процессе этого дёргается:
1. isc_open_blob2()
2. определение размера БЛОБа isc_blob_info()
3. выделение памяти под весь БЛОБ
4. закачка на клиента в цикле isc_get_segment()
5. isc_close_blob()
в локалке, когда сервер и клиенты сидят в одном сегменте сети, тормозов нет.
а вот как вынесли сервер на стороннюю площадку, стало грустно.
в качестве бреда: может ещё размеры пакетов покрутить?
[Обновления: Mon, 26 December 2022 16:28] Известить модератора
|
|
|
|
|
|
|
Re: isc_bpb_type_stream [сообщение #1192 является ответом на сообщение #1190] |
Tue, 27 December 2022 02:20 |
|
Старый Плюшев
Сообщений: 95 Зарегистрирован: August 2022 Географическое положение: Ленинград
|
Member |
|
|
Dmitry Kovalenko писал(а) Mon, 26 December 2022 23:49Привет.
МП писал(а) Mon, 26 December 2022 15:55
в локалке, когда сервер и клиенты сидят в одном сегменте сети, тормозов нет.
а вот как вынесли сервер на стороннюю площадку, стало грустно.
в качестве бреда: может ещё размеры пакетов покрутить?
Я бы запилил прокладку, которая бы отдавала блобы с локального хранилища
+1. Что-то я вдруг проснулся. МП, помнишь такую приблуду - fclient? Так вот, когда я перевёл справочник номенклатуры с длинными названиями, не блобы, варчары, с закачки на старте на репликацию в Столяровскую клиентскую базу, один хрен джойны на клиенте локейтами в клиентдатасетах, в самых проблемных по инету филиалах время включения сократилось с 40 минут до 40 секунд.
|
|
|
Re: isc_bpb_type_stream [сообщение #1195 является ответом на сообщение #1192] |
Tue, 27 December 2022 12:40 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
Старый Плюшев+1. Что-то я вдруг проснулся. МП, помнишь такую приблуду - fclient? Так вот, когда я перевёл справочник номенклатуры с длинными названиями, не блобы, варчары, с закачки на старте на репликацию в Столяровскую клиентскую базу, один хрен джойны на клиенте локейтами в клиентдатасетах, в самых проблемных по инету филиалах время включения сократилось с 40 минут до 40 секунд. у-вы, не могу я в офисе ничего держать. не моя вина, но мне вменено.
ибо начальство не иллюзорно основание имеет опасаться маски-шоу.
все сервера (даже с отладочными базами) вынесены вовне.
зы: файло-помойка вместе с почтовиком тоже вынесена.
мышки плачут, колются, но продолжают... ©
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Re: isc_bpb_type_stream [сообщение #1216 является ответом на сообщение #1214] |
Wed, 28 December 2022 22:40 |
|
Старый Плюшев
Сообщений: 95 Зарегистрирован: August 2022 Географическое положение: Ленинград
|
Member |
|
|
Всё-таки прогресс - он от лукавого и развращает, порождает шаблонность мышления. Вот году эдак в 96м, ещё в здании ВЧК на углу Гороховой и Адмиралтейской, с ихним музеем на втором этаже, выкопали яму во дворе-колодце, оборудовали кессон, вытяжку наладили, поставили сервер, протянули провода, заасфальтировали и года полтора, пока не переехали на Робеспьера, в ус не дули. Облака, датацентры... Крылья, крылья... Ноги!
|
|
|
Переход к форуму:
Текущее время: Fri Nov 22 06:53:50 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01306 секунд
|