Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Нужна таблица, в перспективе на сотни гигов.
По оценке аналогичных данных из параллельной системы, прирост 50-60 миллионов записей в год, объемом 65-70гиго в год.
Хочу выделить под нее отдельный tablespace big file, с автопортициями по месяцам
partition by range
 (OPER_DATE)
INTERVAL(NUMTOYMINTERVAL(1,'month'))
(PARTITION p_first VALUES LESS THAN (date '2000-01-01')
)

Чаще всего данные запрашиваются по месяцам, при обработке и построении отчетов. в месяц ожидается порядка 4-6лямов записей.
1. Нормальное решение?
2. Куда индексы лучше сохранять? создать отдельный tablespace или сунуть в готовый LARGE_INDX к другим большим индексам или сохранить вместе с таблицей?
13 авг 15, 17:17    [18014458]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
Alexey Zhidkov
Member

Откуда: Москва
Сообщений: 1256
barrabas
2. Куда индексы лучше сохранять? создать отдельный tablespace или сунуть в готовый LARGE_INDX к другим большим индексам или сохранить вместе с таблицей?

никто тут не знает о том, как и что у тебя хранится на дисках и их характеристики.
потому советую почитать best practice и немного подумать.
Если у тебя один LUN - то вообще фиолетово где хранить.
13 авг 15, 17:39    [18014569]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Alexey Zhidkov
barrabas
2. Куда индексы лучше сохранять? создать отдельный tablespace или сунуть в готовый LARGE_INDX к другим большим индексам или сохранить вместе с таблицей?

никто тут не знает о том, как и что у тебя хранится на дисках и их характеристики.
потому советую почитать best practice и немного подумать.
Если у тебя один LUN - то вообще фиолетово где хранить.

Будем считать что на продуктиве будет отличное железо.
Ну собственно меня интересовали именно внутренние грабли ораклы.
Мол индекс в одном месте с данными - плохо потому что ...
Просто, в тех системах которые я видел и с которыми работал было принято выносить индекс в отдельный тэйблспейс, но там не было отдельного тайблспецса на одну большую таблицу.
13 авг 15, 17:56    [18014646]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4917
Блог
barrabas
Alexey Zhidkov
пропущено...

никто тут не знает о том, как и что у тебя хранится на дисках и их характеристики.
потому советую почитать best practice и немного подумать.
Если у тебя один LUN - то вообще фиолетово где хранить.

Будем считать что на продуктиве будет отличное железо.
Ну собственно меня интересовали именно внутренние грабли ораклы.
Мол индекс в одном месте с данными - плохо потому что ...
Просто, в тех системах которые я видел и с которыми работал было принято выносить индекс в отдельный тэйблспейс, но там не было отдельного тайблспецса на одну большую таблицу.
Раньше было объяснение, что Oracle параллельно читает индекс и тут же по rowid дергает строки из таблицы. Но при современных дисковых системах это объяснение выглядит немного наивно.
А вот жизненный цикл индексов другой. Они периодически ребилдятся. В связи с этим могут усиливать фрагментацию таблиц, которые соседствуют с ним в ТС.
13 авг 15, 18:05    [18014672]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
barrabas
Нормальное решение?
Странное решение секционировать по месяцу а не дню. Есть ли серьезные причины против interval 1 day?
barrabas
сохранить вместе с таблицей?
Агрументов против можно придумать массу. А какие аргументы за?
Alexander Ryndin
Но при современных дисковых системах это объяснение выглядит немного наивно.
Я не в курсе какие принципиальные изменения были в аппаратной части, но в логиге было усовершенствование - oracle nested loop prefetching.
13 авг 15, 18:33    [18014788]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
dbms_photoshop
barrabas
Нормальное решение?
Странное решение секционировать по месяцу а не дню. Есть ли серьезные причины против interval 1 day?
barrabas
сохранить вместе с таблицей?
Агрументов против можно придумать массу. А какие аргументы за?
Alexander Ryndin
Но при современных дисковых системах это объяснение выглядит немного наивно.
Я не в курсе какие принципиальные изменения были в аппаратной части, но в логиге было усовершенствование - oracle nested loop prefetching.

А не будет секционирование по дню как из пушки по воробьям? Если основная масса запросов идет за месяц, не будет ли в таком случае излишнее порционирование мешать? Если нет то можно и по дню конечно.

За хранение индекса с таблицей у меня аргументов не было, просто посмотрел что PK и АК в основном (в системах которые видел) хранят с таблицей, а индексы отдельно. Но собственно это же тоже индексы, почему они не отдельно, а если им можно, то почему простые индексы вынесены.
Вот решил закрыть некоторые пробелы в знаниях на форуме.
14 авг 15, 07:07    [18016057]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
-2-
Member

Откуда:
Сообщений: 15330
barrabas
посмотрел что PK и АК в основном (в системах которые видел) хранят с таблицей, а индексы отдельно.
логичнее предположить, что кто-то не умеет задавать табличное пространство при определении констрейнта.
хотя в случае iot, да и если принимать во внимание доступ только по индексу, деление на данныые и индексы условное.
Куда более практично деление на архивы и логи, некритичные данные, основные данные и супергорячие данные в предположении, что дисковая система имеет разнохарактерные разделы по скорости и обеспечиваемой надежности.
14 авг 15, 07:55    [18016088]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
-2-
barrabas
посмотрел что PK и АК в основном (в системах которые видел) хранят с таблицей, а индексы отдельно.
логичнее предположить, что кто-то не умеет задавать табличное пространство при определении констрейнта.
хотя в случае iot, да и если принимать во внимание доступ только по индексу, деление на данныые и индексы условное.
Куда более практично деление на архивы и логи, некритичные данные, основные данные и супергорячие данные в предположении, что дисковая система имеет разнохарактерные разделы по скорости и обеспечиваемой надежности.

люди которые создавали систему и с которыми я в то время работал вполне дружили с синтаксисом, может просто не видели смысла.
Вот есть ли смысл? Мне не трудно разделить, по разным ТП.
По поводу разделение на актуальные и архивные думал тоже, создать под это дела отдельные ТП. Архив можно было бы спихнуть в дешевый и медленный дисковый массив, а рабочие данные с суперскоростной-дорогой. Но останавливает неудобство работы с двумя таблицами (архивной и актуальной). Как создать такое хитрое секционирование которое автоматом бы перещала данные из одной секции в другую (типа LESS THAN (sysdate - 500) в архивный тейблспейс, остальное в в актуальный и разбитый по дням ).
14 авг 15, 08:41    [18016193]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
kinky cat
Member

Откуда: с дивана23
Сообщений: 1238
barrabas
Архив можно было бы спихнуть в дешевый и медленный дисковый массив, а рабочие данные с суперскоростной-дорогой. Но останавливает неудобство работы с двумя таблицами (архивной и актуальной). Как создать такое хитрое секционирование которое автоматом бы перещала данные из одной секции в другую (типа LESS THAN (sysdate - 500) в архивный тейблспейс, остальное в в актуальный и разбитый по дням ).

Что ж тут хитрого - мувь старые партиции, можно и джоб написать.
14 авг 15, 08:51    [18016227]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
kinky cat,

Да про alter table partitioned move partition я как-то упустил :).
Спасибо.
14 авг 15, 08:55    [18016239]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
kinky cat,

а если создать архивный тайблспейс с компрессией, то при муве в него партиции данные сожмутся?
Как поведут себя глобальные индексы?
14 авг 15, 10:13    [18016535]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
barrabas
Member

Откуда: от махмуда
Сообщений: 10502
Лучше разбить данные по дням или все-таки по месяцам? С последующим мувом старых данных в отдельный тейблспейс.

Так и не понял, желательно ли вынести ВСЕ индексы, включая PK, в отдельный тейбрспейс. Тут еще вопрос локальные и глобальные индексы. Для локальных видимо нужно создавать тайблспейсы аналогично табличным (актуальные + архив)
14 авг 15, 10:18    [18016569]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
х.з.
Member

Откуда:
Сообщений: 765
barrabas
Лучше разбить данные по дням или все-таки по месяцам?

тебе стоит задуматься про статистику на новых секциях: например ,с утра данные полились, а статистика собранная ночью говорит ,что секция пустая. и только запросы на следующий день по этой секции начнут работать в штатном режиме ,но парадокс в том, что ты уже начнешь заполнять следующую. :)

в свое время при внедрении совместно с разрабами банковского софта мы огребли дикие тормоза при дневном секционировании. Тогда же переделали на помесячное и все пошло. Но периодически в начале месяца огребали тормоза то там то здесь.


автор
Как поведут себя глобальные индексы?

вот-вот.

забудь ты про разноску индексов и данных. сосредоточься на удобстве при переносе секций.
17 авг 15, 08:11    [18026811]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
kinky cat
Member

Откуда: с дивана23
Сообщений: 1238
х.з.,
Ну мув, то на глобальные индексы не влияет. Другое дело, что это дополнительные накладные расходы, нагрузка, блокировки( если без online), надо искать окно итп.
17 авг 15, 10:09    [18027173]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
х.з.
Member

Откуда:
Сообщений: 765
речь шла о том, что перестроение глобальных индексов при переносе секций таблицы все же несколько более затратная процедура нежели перестроение единичных секций локальных индексов.
17 авг 15, 10:55    [18027496]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
kinky cat
Member

Откуда: с дивана23
Сообщений: 1238
х.з., да протупил, без update indexes конечно мув влияет на индексы(если не iot).
17 авг 15, 11:06    [18027572]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
barrabas
а если создать архивный тайблспейс с компрессией, то при муве в него партиции данные сожмутся?
Почувствуй разницу между move vs move compress.
х.з.
в свое время при внедрении совместно с разрабами банковского софта мы огребли дикие тормоза при дневном секционировании.
Откройте для себя dbms_stats.copy_table_stats(... srcpartname ... dstpartname ...).
17 авг 15, 14:47    [18028832]     Ответить | Цитировать Сообщить модератору
 Re: Где хранить индексы для немаленькой таблицы  [new]
х.з.
Member

Откуда:
Сообщений: 765
dbms_photoshop
Откройте для себя dbms_stats.copy_table_stats(... srcpartname ... dstpartname ...).

на этапе внедрения (10.2.0.3 был самым свежим ораклом) открывать было нечего.
18 авг 15, 02:06    [18031650]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить