Гость
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Задачка для ДБА - 4 / 7 сообщений из 7, страница 1 из 1
25.06.2014, 00:48
    #38679124
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
Задачка по планированию места.

Имеется таблица для хранения исторической информации самопального аудита

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 ?


В таком вот аксепте
...
Рейтинг: 0 / 0
25.06.2014, 10:09
    #38679325
яфшуеі
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
В чем смысл размещения каждого объекта в отдельном пространстве?
...
Рейтинг: 0 / 0
25.06.2014, 15:30
    #38679906
svat2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
Выбегалло,

попробую подойти к решению задачи "не как ДБА":
1) напрашивающееся само собой решение: "НЕТ, не нужно, т.к. 'это-же-и-ежу-понятно, что' проиндексировать всего на 1000 значений - по-любому меньше надо места, чем для уникальных audit_id"
2) но тогда - какой смысл было задавать здесь эту задачку?
3) следовательно, правильный ответ обратный: "ДА, нужно".

:)
...
Рейтинг: 0 / 0
25.06.2014, 16:09
    #38679982
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
Согласно методике оценки количества страниц индекса :
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

Дальше по расчётам получается ВРОДЕ всё одинаково...
Так что, если формально следовать методике и допущения (по вашим размерам страниц, длине ключей) я сделал корректно,
то получается: ДА, просите столько же :)
...
Рейтинг: 0 / 0
25.06.2014, 16:32
    #38680029
svat2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
АнатоЛой,

Кгм, кто-то из нас плохо читал методичку :)

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.

Не так ли?
...
Рейтинг: 0 / 0
25.06.2014, 20:11
    #38680296
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
Короче, получил финальные результаты :)

Общее число записей : 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 раза меньше места.
...
Рейтинг: 0 / 0
25.06.2014, 21:01
    #38680316
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка для ДБА - 4
Исправляем.
Согласно методике оценки количества страниц индекса :
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 меньше.
Так что, если формально следовать методике и допущения (по вашим размерам страниц, длине ключей) я сделал корректно,
то получается: Нет, ради интереса посчитайте по методике до конца и сравните погрешость с практикой :)
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Задачка для ДБА - 4 / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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