Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / varchar в Firebird / 25 сообщений из 26, страница 1 из 2
30.09.2018, 05:03
    #39710440
Eugene New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Со всем уважением хочу поинтересоваться - как хранится varchar в последних версиях Firebird - выделяется место под максимальную длину или под реальную длину хранимой строки.
...
Рейтинг: 0 / 0
30.09.2018, 08:13
    #39710452
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
как и во всех предыдущих. В памяти - максимальной длины, на диске - реальной (с RLE сжатием всей записи).
...
Рейтинг: 0 / 0
02.10.2018, 09:33
    #39711469
a7exander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Насколько я помню RLE жмет фрагментами в 128 байт, в результате чего пустая (или даже null) строка varchar(32000) займет порядка 500 байт на диске после сжатия, вроде хотели увеличить RLE, но на той тройке что я тестил было еще 128
...
Рейтинг: 0 / 0
02.10.2018, 09:35
    #39711471
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
a7exander,

это решение было отложено до 4.0, так как 3.0 и так сильно отставал по срокам
...
Рейтинг: 0 / 0
02.10.2018, 12:21
    #39711572
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Симонов Денисэто решение было отложено до 4.0

Но и в четвёрку патч для LZ-сжатия так и не приняли.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2018, 13:25
    #39711633
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Dimitry Sibiryakov,

Наверно потому, что она "и так сильно отстает по срокам".)))
...
Рейтинг: 0 / 0
02.10.2018, 15:22
    #39711750
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Dimitry SibiryakovНо и в четвёрку патч для LZ-сжатия так и не приняли.
ибо он кривокосячный, а аффтар встал в позу обиженного и исправлять не захотел
...
Рейтинг: 0 / 0
02.10.2018, 15:26
    #39711755
V.Borzov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
dimitrкак и во всех предыдущих. В памяти - максимальной длины, на диске - реальной (с RLE сжатием всей записи).

Я правильно понимаю, что это и есть причина, чтобы НЕ лупить все поля varchar максимальной длины 8000, рассчитывая, что всё равно сохранится на диске столько, сколько надо, а потому и смысла ограничивать нету? А есть еще какие причины? А то я всё никак понять не мог, зачем мне вообще все эти ограничения. Кое-где налепил даже.
...
Рейтинг: 0 / 0
02.10.2018, 15:33
    #39711762
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
V.Borzov,

ограничивать надо здравым смыслом (или требованиями бизнес-логики). Ибо полноразмерные варчары идут еще и в сортировку, например. Где можно запросто получить 10 гигов временных файлов вместо ожидаемых 100МБ.
...
Рейтинг: 0 / 0
02.10.2018, 15:35
    #39711764
V.Borzov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Тьфу, извиняюсь, проглотил половину... Я правильно понимаю, что поля максимальной длины обернутся огромными расходами на используемую сервером память при обращении к этим данным? Это и есть причина, чтобы не лепить все поля varchar максимальной длины, так? Есть еще какие причины? А, ну индексы всякие еще лепить по таким полям не получится. А вот создавать это поле взамен blob-полей, когда размер вряд ли будет больше 8000 символов, но в целом - неизвестно сколько - вполне себе можно, так?
...
Рейтинг: 0 / 0
02.10.2018, 16:08
    #39711801
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
V.BorzovЯ правильно понимаю, что поля максимальной длины обернутся огромными расходами на используемую сервером память при обращении к этим данным?
в основном при сортировке. Потому что полные строки пойдут в память сортировки, и если не влезут - то на диск (в файл сортировки).
То же самое будет при индексировании такого столбца.
http://www.ibase.ru/files/articles/performance/Firebird Optimizer - ORDER vs SORT.pdf
со страницы 3.

В остальных случаях - не так страшно, потому что сервер такие объемы в памяти не держит, ему это ни к чему.
...
Рейтинг: 0 / 0
02.10.2018, 16:28
    #39711819
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Офтопну малость...

Господа разработчики, а вы не думали сжимать при хранении строки UTF8 несколько иначе? Ведь практически любую строку UTF8, содержащую национальные символы UNICODE (не ASCII) в определенном диапазоне, можно сжать почти вдвое, если первый байт, определяющий начало диапазона UNICODE и количество байт на символ, задавать только один раз, используя его как маркер, пока не встретится другой маркер?

Согласно правилам кодирования utf8, в старшем байте установленные старшие биты до ближайшего сброшенного бита в сторону младших разрядов определяют количество байт на символ. Для ASCII символов ничего не поменяется и они все будут однобайтными, а для национальных, например, для следующих подряд символов русской кириллицы, можно указать только один старший байт формата 110xxxxx, а все последующие, начинающиеся на 10xxxxxx (в бинарном виде) воспринимать как октеты, предварённые старшим октетом до тех пор, пока не встретится старший байт, отличный от начального. После чего, полученную строку можно прогнать через RLE алгоритм.
...
Рейтинг: 0 / 0
02.10.2018, 16:37
    #39711823
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
rdb_dev,

прелесть "тупого" RLE в однопроходном сжатии всей записи. Если мы начинаем гулять по столбцам и сжимать их отдельно, то заметно начинает расти ЦПУ-оверхед на компрессию.
...
Рейтинг: 0 / 0
02.10.2018, 17:17
    #39711859
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
dimitr, а, понятно - у вас RLE жмёт строку записи целиком.
...
Рейтинг: 0 / 0
02.10.2018, 17:19
    #39711862
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
rdb_dev,

про альтернативную упаковку был доклад то ли на нашем семинаре в Праге, то ли там же на конференции года два-три назад (если мне не изменяет память). И как-то не срослось.
Я помню, что сжатие каких-то символов было до 50%, а других - не очень, я в смысле кодировок. Так что...
...
Рейтинг: 0 / 0
02.10.2018, 18:35
    #39711944
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
dimitrЕсли мы начинаем гулять по столбцам и сжимать их отдельно, то заметно начинает расти ЦПУ-оверхед на компрессию.

всего лишь "гулять по столбцам"...
что же будет с LZ-сжатием.....

PS. Казалось бы можно бы было - чисто тиритисски - убить обоих овец:
1) хранить все тексты в UTF-8 ( или другом UTF-XX )
2) все текстовые поля собирать в начало или в конец строки. Переупорядочивать.
3) два половинки строки сжимать по разному: "тупым RLE" и "продвинутым префиксным UTF-ером"
...
Рейтинг: 0 / 0
02.10.2018, 18:39
    #39711947
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
AriochКазалось быКреститься надо ...
Мне вот сильно неочевидно, что разновсяческие оптимизации не станут пессимизациями.
Особенно, если приложение регулярно делает update или массовые "вставить-обработать-удалить и по циклу".
...
Рейтинг: 0 / 0
02.10.2018, 18:40
    #39711948
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Arioch,

примерно такие мысли и были. Но это будет ждать следующей мажорной ОДС.
...
Рейтинг: 0 / 0
02.10.2018, 18:41
    #39711951
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Basil A. Sidorov,

насколько помню эксперименты Олега в яффиле, эффект от отключенного сжатия был только при апдейтах
...
Рейтинг: 0 / 0
02.10.2018, 18:44
    #39711957
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Basil A. SidorovОсобенно, если приложение регулярно делает update
еще когда Yaffil появился, Олег в нём сделал на пробу параметр для регулирования "порога" сжатия.
Я провел мелкий тест, и выяснил, что при обновлениях база начинает пухнуть в 2 раза сильнее, а скорость обновлений тоже где-то раза в 2 повышается.
Но это было почти при царе Горохе, лет 14-15 назад. Сейчас и диски другие, и процессоры.
...
Рейтинг: 0 / 0
02.10.2018, 18:45
    #39711960
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Ну не знаю ...
Делать сортировку по фактическому размеру varchar можно и без обновления ODS.
Некоторое количество проблем это позволит решить.

P.S.
Нет, предоставить патч - не готов
...
Рейтинг: 0 / 0
02.10.2018, 18:48
    #39711961
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
dimitrпримерно такие мысли и были.

Помнится, Джим вообще предлагал перейти на кодирование записи вместо сжатия (как у
Оракула) и, возможно даже, на самоописывающийся код.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2018, 18:49
    #39711962
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
dimitr,

не знаю, как Олег, я подробно не проверял. Но отсутствие сжатия казалось чем-то ужасным, из-за непривычного роста объема.
Теоретически, если сжатие менять или отключать, надо будет модифицировать и % оставляемого на страницах места.
...
Рейтинг: 0 / 0
02.10.2018, 19:08
    #39711971
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
Basil A. SidorovОсобенно, если приложение регулярно делает update или массовые "вставить-обработать-удалить и по циклу".

Наоборот.

В этом смысле уменьшать запись на медленный HDD засчет процессорного времени - вполне разумно.

Хотя, конечно, практика - критерий истины.
...
Рейтинг: 0 / 0
02.10.2018, 19:10
    #39711974
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
varchar в Firebird
kdvСейчас и диски другие, и процессоры.

агась, где-то персоналка с HDD 5400 rpm, где-то ферма с Nve SSD RAID, а где-то телефон с китайской флэш-памятью
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / varchar в Firebird / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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