powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
6 сообщений из 6, страница 1 из 1
Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
    #38866262
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Имеется небольшая базейка:
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Database "E:\DATA\HUGE_CORE_4384.FDB"
Database header page information:
	Flags			0
	Generation		14032
	System Change Number	0
	Page size		4096
	ODS version		12.0
	Oldest transaction	1149
	Oldest active		11496
	Oldest snapshot		11496
	Next transaction	11497
	Sequence number		0
	Next attachment ID	5741
	Implementation		HW=Intel/i386 little-endian OS=Windows CC=MSVC
	Shadow count		0
	Page buffers		0
	Next header page	0
	Database dialect	3
	Creation date		Jan 18, 2015 19:02:14
	Attributes		

    Variable header data:
	*END*


Database file sequence:
File E:\DATA\HUGE_CORE_4384.FDB is the only file

Analyzing database pages ...
T (128)
    Primary pointer page: 211, Index root page: 212
    Pointer pages: 127855, data page slots: 103306800
    Data pages: 103306800, average fill: 67%
    Primary pages: 103306800, secondary pages: 0, swept pages: 0
    Empty pages: 5, full pages: 103306794
    Fill distribution:
	 0 - 19% = 5
	20 - 39% = 0
	40 - 59% = 1
	60 - 79% = 103306794
	80 - 99% = 0
- с табличкой:
Код: plaintext
1.
2.
3.
SQL> show table t;
ID                              BIGINT Nullable
S01                             VARCHAR(8) Nullable
S02                             VARCHAR(8) Nullable
Число записей в ней = 5.68 млрд.

FIREBIRD_TMP задан на диск с 800 Гб свободного места.

При выполнении команды create index t_id on t(id) получаю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> create index t_id on t(id);
Statement failed, SQLSTATE = HY001
 sort error: not enough memory 
Current memory = 292850616
Delta memory = 406312
Max memory = 2059775504
Elapsed time= 57163.749 sec
Buffers = 65536
Reads = 103421153
Writes = 15
Fetches = 11570714735

При этом макс. размер fb_sort-файла был 134'114'967'552 байта, т.е. до переполнения диска было как отсюда до Китая.
В логе - тишина.

Как понять, обо что споткнулись ?

Конфиг:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DefaultDbCachePages = 64K
LockHashSlots = 22111
TempCacheLimit = 2147483647

RemoteServicePort = 3333

# actual only in Win, FW = OFF
MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

ExternalFileAccess = Restrict C:\1INSTALL\FBTEST
#TempDirectories = c:\temp
MaxUserTraceLogSize = 99999

FileSystemCacheThreshold = 65536K
AuthServer = Legacy_Auth,Srp
AuthClient = Legacy_Auth,Srp,Win_Sspi
WireCrypt = Disabled
UserManager = Legacy_UserManager

BugcheckAbort = 1
...
Рейтинг: 0 / 0
Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
    #38866266
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. коннект был по XInet (если это играет роль).
...
Рейтинг: 0 / 0
Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
    #38866271
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
    #38866290
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трекер снова лёг.

Нарыл тут .
...
Рейтинг: 0 / 0
Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
    #38866293
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

статистику надо с ключик -r снимать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Analyzing database pages ...
AGE (128)
    Primary pointer page: 543, Index root page: 576
    Total formats: 1, used formats: 1
    Average record length: 21.82, total records: 11
    Average version length: 0.00, total versions: 0, max versions: 0
    Average fragment length: 0.00, total fragments: 0, max fragments: 0
    Average unpacked length: 35.00, compression ratio: 1.60
    Pointer pages: 1, data page slots: 1
    Data pages: 1, average fill: 5%
    Primary pages: 1, secondary pages: 0, swept pages: 0
    Empty pages: 0, full pages: 0
    Fill distribution:
         0 - 19% = 1
        20 - 39% = 0
        40 - 59% = 0
        60 - 79% = 0
        80 - 99% = 0

тогда можно получить Average unpacked length. Правда я не уверен что это поможет оценить затраты памяти на сортировку.
...
Рейтинг: 0 / 0
Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
    #38866298
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

на самом деле эта ошибка обнаружилась, когда KDV тестировал базу в 1 Тб. http://www.ibase.ru/devinfo/fb1tbtech.htm
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как по длине ключа и числу записей оценить затраты по памяти на сортировку ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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