powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
25 сообщений из 145, страница 5 из 6
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193151
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то торкнуло проверить скорость varchar(32762) vs binary blob.

База FB 2.1.3 win1251, чарсет коннекта win1251.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE "TestVarchars" (
    ID  INTEGER NOT NULL,
    V1  VARCHAR( 32762 )
);

CREATE TABLE "TestBlobs" (
    ID  INTEGER NOT NULL,
    B   BLOB SUB_TYPE  0  SEGMENT SIZE  80 
);
вставил в каждую таблицу по 1001 записи(32762 байта бинарных данных на каждую запись(часть gif-картинки))


Дальше делаю while not eof + присваивание значеня в переменную(для порядка).

тест на SS(TCP, Host 127.0.0.1):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 31 . 03 . 2011   21 : 46 : 29 . 171 :
Start Transaction: Ok, Id =  2954 

 31 . 03 . 2011   21 : 46 : 29 . 187 :
[TransId =  2954 ]
select
  "TestBlobs"."ID" as "Id",
  "TestBlobs"."B"
from "TestBlobs"
[OpenTime =  15  ms]

 31 . 03 . 2011   21 : 46 : 29 . 328 :
Commit Transaction [Id =  2954 , WorkTime =  0 . 156  sec] Ok

 31 . 03 . 2011   21 : 46 : 29 . 359 :
Start Transaction: Ok, Id =  2956 

 31 . 03 . 2011   21 : 46 : 29 . 359 :
[TransId =  2956 ]
select
  "TestVarchars"."ID" as "Id",
  "TestVarchars"."V1"
from "TestVarchars"
[OpenTime =  0  ms]

 31 . 03 . 2011   21 : 46 : 29 . 453 :
Commit Transaction [Id =  2956 , WorkTime =  0 . 094  sec] Ok
и на Embedded:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 31 . 03 . 2011   21 : 47 : 39 . 125 :
Start Transaction: Ok, Id =  2966 

 31 . 03 . 2011   21 : 47 : 39 . 125 :
[TransId =  2966 ]
select
  "TestBlobs"."ID" as "Id",
  "TestBlobs"."B"
from "TestBlobs"
[OpenTime =  0  ms]

 31 . 03 . 2011   21 : 47 : 39 . 203 :
Commit Transaction [Id =  2966 , WorkTime =  0 . 078  sec] Ok

 31 . 03 . 2011   21 : 47 : 39 . 218 :
Start Transaction: Ok, Id =  2968 

 31 . 03 . 2011   21 : 47 : 39 . 218 :
[TransId =  2968 ]
select
  "TestVarchars"."ID" as "Id",
  "TestVarchars"."V1"
from "TestVarchars"
[OpenTime =  0  ms]

 31 . 03 . 2011   21 : 47 : 39 . 343 :
Commit Transaction [Id =  2968 , WorkTime =  0 . 125  sec] Ok
см. значения WorkTime.

правда это не FIBPlus, a UIB. Ну и Delphi XE.
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193181
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO

NickDee, Молочный Александр,

мужики, чего вы там меряете на сотне записей, в диапазоне меньше полсекунды?
во-первых там точность измерения сравнима с результатом,
а во-вторых, разница "170 мс против 320 мс" - вы думаете, пользователь на сайте это заметит?
или кто-то будет бороться за ускорение страницы целиком на 100ms ?

если вы реально хотите сравнить - поднимите в 30-50 раз кол-во записей.

Юзер рассуждает так: то, что дольше 3 сек - это "тормоза". то, что быстрее секунды - "шустро".
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193185
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_mIMHO

NickDee, Молочный Александр,

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

Я мерял на 1000 записях. Итого данных получилось на 32МБ. Можно конечно увеличить количество до 10000, но этот case будет уже совсем не из реальной жизни, т.к. отдавать в web за раз 320MB - это уже ни к чему :)
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193201
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeЯ мерял на 1000 записях. Итого данных получилось на 32МБ. Можно конечно увеличить количество до 10000, но этот case будет уже совсем не из реальной жизни, т.к. отдавать в web за раз 320MB - это уже ни к чему :)
понимаю. но я уже не относительно вэба, а именно относительно заявления "блобами [значительно] медленн ее ", типа "по-определению"
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193211
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeЧего-то торкнуло проверить скорость varchar(32762) vs binary blob
а зачем кислое с пресным сравнивать? Если тебе нужен чарсет, то блоб должен быть текстовым, если не нужен, то варчар должен быть бинарным (octets).
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193243
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrNickDeeЧего-то торкнуло проверить скорость varchar(32762) vs binary blob
а зачем кислое с пресным сравнивать? Если тебе нужен чарсет, то блоб должен быть текстовым, если не нужен, то варчар должен быть бинарным (octets).
Если чарсет коннекта win1251, то разницы между varchar-ами win1251 и octets по скорости нет.
Но если чарсет коннекта UTF8, то есть проблемка: как понять что у нас поле типа octets, т.е. что данные этого поля нужно интерпретировать именно как бинарные? У нас где-нибудь передаётся charset поля?
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193255
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

у нас передается, у вас - не знаю :-)
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193259
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrу нас передается, у вас - не знаю :-)
Это хорошо. А в чём он у вас передаётся? :)
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193299
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

в xsqlvar, вестимо. Поле sqlsubtype.
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193322
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв xsqlvar, вестимо. Поле sqlsubtype.

Кстати, где-то у kdv была статья про это, но я не смог её вчера найти. Там по результатам
исследований Коваленко была описана вся история сообщения чарсетов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193324
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrПоле sqlsubtype.
Спасибо.
У меня получилось sqlsubtype = 1 для octets.
А для поля win1251 зависит от чарсета коннекта:
для utf8 sqlsubtype = 4,
для win1251 sqlsubtype = 52.

Где можно посмотреть весь список этих констант? Посмотрел в ibase.h и не нашёл.
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193355
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeГде можно посмотреть весь список этих констант? Посмотрел в ibase.h и не нашёл.RDB$CHARACTER_SETS
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193357
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

Код: plaintext
1.
select rdb$type, rdb$type_name from rdb$types
where rdb$field_name = 'RDB$CHARACTER_SET_NAME'
дубликаты имен - это алиасы
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193367
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот спасибо :)
Кстати нашёл-таки обсуждение: FB 2.5 & VARCHAR & sqlsubtype & encoding
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193529
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Truhin> Что то не то натестировал, IBE вроде сразу в память блобы не загружает.

ХЗ, возможно. Я на всякий случай юзалc ibeblock
с ibe-trim-ом внутри (что дает доп.нагрузку и тест
получается более грязным, кстати). Не думаю, что
IBE умеет это делать, не загружая сами БЛОБы.
Но можно уточнить у АК, если настаиваешь.

Alex Truhin> Да и не откуда блобам быть быстрее.

ХЗ, факты есть факты. Возможно, что они не должны быть
быстрее и должны быть медленнее, но заявленной разницы
в скорости на порядок не в пользу БЛОБов не наблюдаю.
По крайней мере, на описанных автором условиях.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193533
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет, щас перепроверил - локально быстрее, а по сети медленнее.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193717
Alex Truhin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамХотя нет, щас перепроверил - локально быстрее, а по сети медленнее.

Ну, это похоже на правду. По сети все очень сильно зависит от пинга, а там отдельный запрос на каждый блоб
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193963
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TruhinПо сети все очень сильно зависит от пинга, а там отдельный запрос на каждый блоб

При такой длине записи на неё тоже отдельный запрос - размера сетевого буфера не хватает
чтобы доставлять по несколько записей за раз.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37193978
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex TruhinПо сети все очень сильно зависит от пинга, а там отдельный запрос на каждый блоб

При такой длине записи на неё тоже отдельный запрос - размера сетевого буфера не хватает
чтобы доставлять по несколько записей за раз.
blob open\get\close создают дополнительные roundtrip'ы.
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37194036
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladblob open\get\close создают дополнительные roundtrip'ы.

О как... Я думал, их тоже оптимизировали как alloc_statement/free_statement...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37194113
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovhvladblob open\get\close создают дополнительные roundtrip'ы.

О как... Я думал, их тоже оптимизировали как alloc_statement/free_statement...
Как ни оптимизируй, минимум 1 останется
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37194162
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladКак ни оптимизируй, минимум 1 останется

В этом случае скорости практически сравняются. Смотри: без блобов мы имеем для каждой
записи большой пакет, не влезающий в сетевой буфер. Т.е. грубо считая, каждый фетч
вызывает запрос к серверу. С блобами мы имеем маленькие записи, которых в буфер влезает
десяток, но должны тянуть блобы отдельно. Т.е. это тот же один сетевой запрос на каждый
блоб + один дополнительный на пачку записей.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37194174
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladКак ни оптимизируй, минимум 1 останется
В этом случае скорости практически сравняются. Возможно.
Я хотел комбинировать open\get и create\put, но руки не дошли в своё время.
Кстати, op_close_blob и op_cancel_blob уже оптимизированны, это я уже успел забыть.
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37194251
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ хотел комбинировать open\get и create\put, но руки не дошли в своё время.

В трекер?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
    #37194515
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор топика сделал тест, и получил результат (на картинке).
Он же выяснил, что тормоза при обработке блобов проявляются только если блоб сохранять как asString. Если сразу в файл (SaveToFile), то блобы чуть быстрее варчаров.
...
Рейтинг: 0 / 0
25 сообщений из 145, страница 5 из 6
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Длины полей и ограничения. Не понятно или глюк. FB2.5, IBExpert, UTF8+ASCI
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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