|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
Задачка по планированию места. Имеется таблица для хранения исторической информации самопального аудита create table "informix".audit_detail_hist ( audit_id integer not null , audit_column_id integer not null ... где audit_id - уникальное значение аудита (к нему может быть привязано несколько записей audit_detail, обычно от 1 до 5), audit_column_id - номер колонки в таблице аудируемых колонок (примерно 1000 штук). На таблице построены 2 индекса: create index idx_adh2_aud_id on "informix".audit_detail_hist (audit_id) using btree in aud_dtlh_aud_id_i; create index idx_adh2_col_id on audit_detail_hist (audit_column_id) using btree in aud_dtlh_col_id_i; В таблице будет ~620M записей. Под dbspace aud_dtlh_aud_id_i я запросил 16GB. Надо ли мне просить столько же под aud_dtlh_col_id_i ? В таком вот аксепте ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 00:48 |
|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
В чем смысл размещения каждого объекта в отдельном пространстве? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 10:09 |
|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
Выбегалло, попробую подойти к решению задачи "не как ДБА": 1) напрашивающееся само собой решение: "НЕТ, не нужно, т.к. 'это-же-и-ежу-понятно, что' проиндексировать всего на 1000 значений - по-любому меньше надо места, чем для уникальных audit_id" 2) но тогда - какой смысл было задавать здесь эту задачку? 3) следовательно, правильный ответ обратный: "ДА, нужно". :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 15:30 |
|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
Согласно методике оценки количества страниц индекса : 1. propunique1 (для первого индекса) равен 1, propunique2 (для второго индекса) равен 1/2.5 = 0.4 ("от одного до пяти записей") 2. при расчёте entrysize получим entrysize1 = (4*1)+5+4 = 13 entrysize2 = (4*0.4)+5+4 = 10.6 3. pagents1 = trunc(pagefree/entrysize1)=2020/13 = 155 pagents2 =2020/10.6=202 4. leaves1 = ceiling (rows/pagents) = 620M/155=4 leaves2 = = ceiling (620M/202)= ceiling (3.06)=4 Дальше по расчётам получается ВРОДЕ всё одинаково... Так что, если формально следовать методике и допущения (по вашим размерам страниц, длине ключей) я сделал корректно, то получается: ДА, просите столько же :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 16:09 |
|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
АнатоЛой, Кгм, кто-то из нас плохо читал методичку :) IBMIf a significant proportion of entries are duplicates, divide the number of unique index entries by the number of rows in the table to obtain a fractional value for propunique. For example, if the number of rows in the table is 4,000,000 and the number of unique index entries is 1,000,000, the value of propunique is .25. If the resulting value for propunique is less than .01, use .01 in the calculations that follow. т.е. в п.1 имеем, ИМХО всего записей: "~620M" уникальных: "примерно 1000 штук" т.е. 1000 / 620М надо делать, но, в соотв. с "If the resulting value for propunique is less than .01 ..." - надо брать в дальнейших расчетах число 0.01. Не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 16:32 |
|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
Короче, получил финальные результаты :) Общее число записей : 618,417,173 aud_dtlh_col_id_i: Number of pages used 804813 aud_dtlh_aud_id_i: Number of pages used 1599663 Индекс по audit_id занимает, как правило, 9 байт на странице (страницы 4K): 4 байта значение ключа, 4 байта rowid, 1 байт флаг удаленной записи addr stamp chksum nslots flag type frptr frcnt next prev 264:100 1416889423 5157 218 890 BTREE 1991 1229 34 2a slot ptr len flg 1 24 9 0 2 33 9 0 3 42 9 0 4 51 9 0 5 60 9 0 6 69 9 0 7 78 9 0 8 87 9 0 9 96 9 0 ... 198 1797 14 0 199 1811 9 0 200 1820 9 0 ... 218 1982 9 0 Индекс по audit_column_id занимает, как правило, всю страницу: 4 байта ключ и к нему привязаны куча пар rowid + флаг удаления addr stamp chksum nslots flag type frptr frcnt next prev 265:101 1418349480 1e4e 1 890 BTREE 2868 1220 35 29 slot ptr len flg 1 24 2844 0 slot 1: 0: 80 0 3 43 4 ae 8c 32 0 4 ae 8c 33 0 4 ae ...C...2....3... По факту, под этот индекс потребовалось в 2 раза меньше места. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 20:11 |
|
Задачка для ДБА - 4
|
|||
---|---|---|---|
#18+
Исправляем. Согласно методике оценки количества страниц индекса : 1. propunique1 (для первого индекса) равен 1/2.5=0.4 propunique2 (для второго индекса) равен max(1000/320M,0.01)= 0.01 2. при расчёте entrysize получим entrysize1 = (4*0.4)+5+4 = 10.6 entrysize2 = (4*0.01)+5+4 = 9.04 3. pagents1 = trunc(pagefree/entrysize1)=2020/10.6= 190 pagents2 =2020/9.04=223 4. leaves1 = ceiling (rows/pagents) = 620M/190=3.2M leaves2= 2.8M Уже на глаз видно, что на процентов 15 меньше. Так что, если формально следовать методике и допущения (по вашим размерам страниц, длине ключей) я сделал корректно, то получается: Нет, ради интереса посчитайте по методике до конца и сравните погрешость с практикой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2014, 21:01 |
|
|
start [/forum/topic.php?fid=44&tid=1606944]: |
0ms |
get settings: |
25ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
179ms |
get tp. blocked users: |
2ms |
others: | 289ms |
total: | 568ms |
0 / 0 |