powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Стратегия увеличения размера блока памяти под сортировку в ФБ3
10 сообщений из 10, страница 1 из 1
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288368
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Вопрос такой, если серверу нужен большой блок под сортировку
(1-1.5 Гб), то как он будет выделяться?

1) Начиная с TempBlockSize и дальше равными приращениями размером
TempBlockSize?

2) Или начнет с TempBlockSize и будет каждый раз удваивать размер?

В нашей задаче такие выборки для группировки/сортировки не
редкость. Выделение по первой стратегии будет занимать много
времени -- тысяча изменений размера блока памяти для 1 Gb и
значения TempBlockSize по-умолчанию.

TempCacheLimit установлен в 32 Gb. Памяти на сервере хватает.
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288383
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22,

необходимый размер округляется вверх до значения, кратного TempBlockSize.
Блок такого размера и выделяется (в памяти или на диске).
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288423
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22Вопрос такой, если серверу нужен большой блок под сортировку
(1-1.5 Гб), то как он будет выделяться?

1) Начиная с TempBlockSize и дальше равными приращениями размером
TempBlockSize?

2) Или начнет с TempBlockSize и будет каждый раз удваивать размер?

первое. Для таких ситуаций как раз и рекомендуется увеличивать TempBlockSize.
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288467
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда, вопрос, как используется этот блок (эти блоки):

1) это одна область памяти на коннект, где располагаются GTT, сортировки и т.п.

2) или под каждую GTT, каждую сортировку, создается отдельная область памяти
начиная с TempBlockSize и вверх, по необходимости.

Если №2, то тогда проблема, так как на большом количестве конектов, при
большом TempBlockSize, много памяти будет теряться впустую.

PS: может поменять стратегию на геометрическую прогрессию?
это актуально для систем с большим количеством ОЗУ, где будут
настраивать большие размеры TempCacheLimit.
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288470
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22PS: может поменять стратегию на геометрическую прогрессию?

Память для сортировок выделяется и используется отдельными блоками. Геометрическая
прогрессия тут никак не поможет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288502
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок. буду эксперементировать с TempBlockSize
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288539
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22ок. буду эксперементировать с TempBlockSizeЭто ничего не даст, см мой ответ ещё раз
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288543
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempBlockSize это гранулярность аллокатора. Меньше он не может выделить, больше (если сортировщик начнет оперировать большими ранами) - сможет. Т.е. линейная цепочка из TempCacheLimit / TempBlockSize блоков это крайний случай, в реальной жизни (по крайней мере при сортировках) будет меньшее число бОльших блоков.
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288564
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сортировщик просит внешнюю память блоками по 1, 8 или 64 МБ. Это не абсолютные значения, реальные могут быть несколько меньше.
Не может быть одновременно более 7 блоков размера 1 или 8 МБ - они сливаются в блоки по 8 и 64 МБ соответственно.
Т.е. для гигабайтных сортировок у нас в конце концов будут блоки по 64МБ (много), 8 МБ (не более 7) и 1 МБ (не более 7)
...
Рейтинг: 0 / 0
Стратегия увеличения размера блока памяти под сортировку в ФБ3
    #39288571
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba222) или под каждую GTT, каждую сортировку, создается отдельная область памяти начиная с TempBlockSize и вверх, по необходимости.
неправильный вопрос. Как уже сказали, TempBlockSize это просто блок, а вот TempCacheLimit - ограничение размера памяти под сортировку.
Для супера и суперклассика это общее ограничение, для всех коннектов, т.к. сервер - это один процесс. Для классика - ограничение для одного коннекта, т.к. сервер - это процесс на коннект.
память для сортировки выделяется для конкретного запроса. Т.е. если есть 10 одинаковых запросов с plan sort - для них для всех будет выделяться память (и далее временные файлы на диске).

TempBlockSize если и есть смысл увеличивать, то не более чем в 2-3 раза от дефолтного значения (там вроде 1мб).
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Стратегия увеличения размера блока памяти под сортировку в ФБ3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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