powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как часто вы ребилдите индексы? Как оценить результат после ребилда?
57 сообщений из 57, показаны все 3 страниц
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38193798
Меня интересует вопрос: с какой частотой необходимо ребилдить индексы и нужно ли?
Как после ребилда оценить результат? Что-то типа: после ребилда время отклика сократилось
на N секунд, и т .д.?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38193813
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38193841
andrey_anonymous http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:2913600659112

Если я правильно понял то, что написано на английском языке, то смысла в ребилде никакого нет.
Производительность от этого не увеличится, и нет наглядных средств для её измерения.

У меня ещё один вопрос тогда: это характерно только для Oracle, или для других СУБД тоже?

меня интересует вопрос ребилда только с точки зрения увеличения производительности. Про другие СУБД
спросил потому что у меня в MS SQL индексы по ночам ребилдятся, а в Oracle нет.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38193998
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребилд индексовandrey_anonymous http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:2913600659112

Если я правильно понял то, что написано на английском языке, то смысла в ребилде никакого нет.
Производительность от этого не увеличится, и нет наглядных средств для её измерения.

У меня ещё один вопрос тогда: это характерно только для Oracle, или для других СУБД тоже?

меня интересует вопрос ребилда только с точки зрения увеличения производительности. Про другие СУБД
спросил потому что у меня в MS SQL индексы по ночам ребилдятся, а в Oracle нет.
теоретически, может и не надо перестраивать индексы, на практике ИМХО надо

банальный пример
индекс распухает, после перестройти занимает места в разы меньше,
производительность тоже возрастает,
бывало что до перестройки оптимизатор не использовал рапухший индекс

.....
stax
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194003
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..банальный пример
индекс распухает, после перестройти занимает места в разы меньше,
Если я правильно понял, то речь идет о bitmap на row-by-row вставках/обновлениях?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194444
авторпроизводительность тоже возрастает,

в этом-то и главный вопрос. с чего вы взяли что производительность возрастает?
потому что в плане индекс стал использоваться? а если он использовался до ребилда?

Том Кайт отвечает, что мол нет наглядного примера, те кто говорят, что ребилд индексов увеличивает
производительность не могут показать как было и как стало. Это всё на словах. Типа поверьте мне, я крутой
dba, я знаю, что это так.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194587
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У Льюиса есть неплохая старая заметка: http://www.jlcomp.demon.co.uk/14_index_rebuild_i.html
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194599
Фотография djeday84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderУ Льюиса есть неплохая старая заметка: http://www.jlcomp.demon.co.uk/14_index_rebuild_i.html

IMHO лучше этого не найти :))

Index Internals – Rebuilding The Truth - Richard Foote's Oracle Blog
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194669
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ребилд индексовТом Кайт отвечаетКстати, не помню где, но Кайт писал как раз о необходимости ребилда AQ'шных индексов
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194676
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousЕсли я правильно понял, то речь идет о bitmap на row-by-row вставках/обновлениях?Да не важно. Обычный индекс в зависимости от характера DML может пухнуть. Достаточно удалять не все данные, чтобы в блоках индекса оставались строки и они не помещались в список свободных блоков и вставлять справа. С bitmap проблему пофиксили: Bitmap Index Degradation Since 10g (Fix You)
ребилд индексовв этом-то и главный вопрос. с чего вы взяли что производительность возрастает?
потому что в плане индекс стал использоваться? а если он использовался до ребилда?

Том Кайт отвечает, что мол нет наглядного примера, те кто говорят, что ребилд индексов увеличивает
производительность не могут показать как было и как стало. Это всё на словах. Типа поверьте мне, я крутой
dba, я знаю, что это так.Да наглядный пример не проблема показать. Другое дело что в подавляющем большинстве случаев действительно ребилдить ничего не надо.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194685
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wurduОбычный индекс в зависимости от характера DML может пухнуть.
Может.
Но кейс довольно специфичен.
И это можно измерить .
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194698
xtenderребилд индексовТом Кайт отвечаетКстати, не помню где, но Кайт писал как раз о необходимости ребилда AQ'шных индексов

авторДругое дело что в подавляющем большинстве случаев действительно ребилдить ничего не надо.

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

AQ-индекс - это что??
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38194719
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребилд индексовxtenderпропущено...
Кстати, не помню где, но Кайт писал как раз о необходимости ребилда AQ'шных индексов

авторДругое дело что в подавляющем большинстве случаев действительно ребилдить ничего не надо.

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

Такого вывода сделать нельзя. Есть случаи когда ребилд может дать существенное увеличение производительности. Deleted Index Entries Part V (Trouble)
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195021
flawy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня наприм было такое (правда с MS SQL serv) что после ребилда индексов исчезла ошибка при вставке новых строк в таблицу. айдишники както странно присваивались. те же айдшники автоинкриментальные присваивались. разным строкам. приколись
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195116
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wurduЕсть случаи когда ребилд может дать существенное увеличение производительности. Deleted Index Entries Part V (Trouble) Оно как-то лишено какого-то более-менее практического смысла, зачем вообще брать и удалять половину таблицы?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195177
Андрей ПанфиловwurduЕсть случаи когда ребилд может дать существенное увеличение производительности. Deleted Index Entries Part V (Trouble) Оно как-то лишено какого-то более-менее практического смысла, зачем вообще брать и удалять половину таблицы?
К примеру у нас есть таблица проданных билетов. данные о проданных билетах 5 лет тому назад навряд ли кому-то нужны, по ним отчёты никакие в БД не делаются. А если делаются, то в DWH.
либо ещё один пример с таблицей логов, старые логи удаляем из таблицы.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195281
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребилд индексовК примеру у нас есть таблица проданных билетов. данные о проданных билетах 5 лет тому назад навряд ли кому-то нужны, по ним отчёты никакие в БД не делаются. А если делаются, то в DWH.
либо ещё один пример с таблицей логов, старые логи удаляем из таблицы.

И?
Код: plsql
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
create table ane_t1(a varchar2(2000));
 
Table created

create index ane_t1$a on ane_t1(a);
 
Index created

insert into ane_t1 select rpad(rownum,2000,'x') from dual connect by level < 1000;
 
999 rows inserted

commit;
 
Commit complete

select segment_type, segment_name, bytes,blocks,extents from dba_segments where segment_name like 'ANE_T1$A';
 
SEGMENT_TYPE       SEGMENT_NA      BYTES     BLOCKS    EXTENTS
------------------ ---------- ---------- ---------- ----------
INDEX              ANE_T1$A      4194304        512         19

insert into ane_t1 select rpad('b'||rownum,2000,'x') from dual connect by level < 1000;
 
999 rows inserted

commit;
 
Commit complete

select segment_type, segment_name, bytes,blocks,extents from dba_segments where segment_name like 'ANE_T1$A';
 
SEGMENT_TYPE       SEGMENT_NA      BYTES     BLOCKS    EXTENTS
------------------ ---------- ---------- ---------- ----------
INDEX              ANE_T1$A      8388608       1024         23

-- Удалим "пол-таблицы логов"
delete ane_t1 where a < '999z';
 
997 rows deleted

commit;
 
Commit complete

select segment_type, segment_name, bytes,blocks,extents from dba_segments where segment_name like 'ANE_T1$A';
 
SEGMENT_TYPE       SEGMENT_NA      BYTES     BLOCKS    EXTENTS
------------------ ---------- ---------- ---------- ----------
INDEX              ANE_T1$A      8388608       1024         23

-- вставим справа
insert into ane_t1 select rpad('c'||rownum,2000,'x') from dual connect by level < 1000;
 
999 rows inserted

commit;
 
Commit complete

select segment_type, segment_name, bytes,blocks,extents from dba_segments where segment_name like 'ANE_T1$A';
 
SEGMENT_TYPE       SEGMENT_NA      BYTES     BLOCKS    EXTENTS
------------------ ---------- ---------- ---------- ----------
INDEX              ANE_T1$A      8388608       1024         23

drop table ane_t1 purge;
 
Table dropped
 
SQL> 
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195314
andrey_anonymous,

Ну и к чему это?
Людей интересует размер индекса, а не размер сегмента индекса.
То есть конкретно блоки, которые будут читаться при IFS и иже с ним.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195322
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странннннноЛюдей интересует размер индекса, а не размер сегмента индекса.
То есть конкретно блоки, которые будут читаться при IFS и иже с ним.
К тому, что в сценарии "удаляем старьё" место в сегменте индекса под "пол-таблицы" успешно использовано под новую вставку, "распухания" не произошло.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195369
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня интересует вопрос: с какой частотой необходимо ребилдить индексы и нужно ли?


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

У меня ещё один вопрос тогда: это характерно только для Oracle, или для других СУБД тоже?

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


Если я правильно понял то, что написано на английском языке, то смысла в ребилде никакого нет.
Производительность от этого не увеличится, и нет наглядных средств для её измерения.

У меня ещё один вопрос тогда: это характерно только для Oracle, или для других СУБД тоже?

меня интересует вопрос ребилда только с точки зрения увеличения производительности. Про другие СУБД
спросил потому что у меня в MS SQL индексы по ночам ребилдятся, а в Oracle нет.
теоретически, может и не надо перестраивать индексы, на практике ИМХО надо

банальный пример
индекс распухает, после перестройти занимает места в разы меньше,
производительность тоже возрастает,
бывало что до перестройки оптимизатор не использовал рапухший индекс

.....
stax

Это гон.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195382
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема развивается в правильном направлении.
Перестраивать индексы — никому ненужное занятие, если ты только не дба и тебе ну совсем ничего делать, а бд не занята на ночь.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195391
Timur Akhmadeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример когда нужно ребилдить.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195407
Можно взять тот же пример от andrey_anonymous и удалить 90% не с конца, а равномерно по всему диапазону.
Тогда вставка максимальных значений не будет заполнять старые блоки и ребилд будет весьма кстати.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195414
Timur Akhmadeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странннннноМожно взять тот же пример от andrey_anonymous и удалить 90% не с конца, а равномерно по всему диапазону.
Тогда вставка максимальных значений не будет заполнять старые блоки и ребилд будет весьма кстати.
Будет кстати, но необязателен. Проще, логичнее и "более лучше" в таком случае выполнить coalesce - это online операция в отличие от rebuild (rebuild online не совсем online).
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195482
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivstax..пропущено...

теоретически, может и не надо перестраивать индексы, на практике ИМХО надо

банальный пример
индекс распухает, после перестройти занимает места в разы меньше,
производительность тоже возрастает,
бывало что до перестройки оптимизатор не использовал рапухший индекс

.....
stax

Это гон.
ваше дело не верить, и я подчеркнул что ето имхо
я остаюсь при своем, идексы обычные (не битмап) составные ,
напр счет,параметр,дата

перестраивал и буду перестраивать

......
stax
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195585
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребилд индексовК примеру у нас есть таблица проданных билетов. данные о проданных билетах 5 лет тому назад навряд ли кому-то нужны, по ним отчёты никакие в БД не делаются. А если делаются, то в DWH.
либо ещё один пример с таблицей логов, старые логи удаляем из таблицы.удаляйте чаще
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195594
Timur AkhmadeevстранннннноМожно взять тот же пример от andrey_anonymous и удалить 90% не с конца, а равномерно по всему диапазону.
Тогда вставка максимальных значений не будет заполнять старые блоки и ребилд будет весьма кстати.
Будет кстати, но необязателен. Проще, логичнее и "более лучше" в таком случае выполнить coalesce - это online операция в отличие от rebuild (rebuild online не совсем online).

а пример coalesce индекса можете показать для начинающего? он 100% online?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195600
Timur Akhmadeev Пример когда нужно ребилдить.
оно то хорошо, да вот только не очень понятно начинающим.
насколько я понял там был сделан дамп блока, принадлежащего индексу...и была проблема, но в самом дампе я как-то
не разобрался...

если б кто разжевал...было бы мега круто!


вот если бы вас на собеседовании при приёме на работу спросили, надо ли ребилдить индексы, вы бы как ответили?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195628
бугогавр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловребилд индексовК примеру у нас есть таблица проданных билетов. данные о проданных билетах 5 лет тому назад навряд ли кому-то нужны, по ним отчёты никакие в БД не делаются. А если делаются, то в DWH.
либо ещё один пример с таблицей логов, старые логи удаляем из таблицы.удаляйте чаще
То есть меняйте свою бизнес логику, только чтобы только Андрей Панфилов смог доказать, что ребилдить не надо
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195695
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Timur AkhmadeevстранннннноМожно взять тот же пример от andrey_anonymous и удалить 90% не с конца, а равномерно по всему диапазону.
Тогда вставка максимальных значений не будет заполнять старые блоки и ребилд будет весьма кстати.
Будет кстати, но необязателен. Проще, логичнее и "более лучше" в таком случае выполнить coalesce - это online операция в отличие от rebuild (rebuild online не совсем online).я нарывался на то что coalesce не уменьшал blevel a rebuild уменьшал, и, немного почитав про его механизм, сделал вывод что он в принципе этого не делает(не меняет структуру индекса, а просто перемещает) - это действительно так? Кроме того, у меня сложилось ощущение, что coalesce вообще трогает только leaf блоки.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195764
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ребилд индексовМеня интересует вопрос: с какой частотой необходимо ребилдить индексы и нужно ли?
Как после ребилда оценить результат? Что-то типа: после ребилда время отклика сократилось
на N секунд, и т .д.?
Если дефрагментация индексов состоит более чем 20% в больших таблицах то я их делаю ребуилд, хороший выигрыш по месту дает
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38195871
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderTimur Akhmadeevпропущено...

Будет кстати, но необязателен. Проще, логичнее и "более лучше" в таком случае выполнить coalesce - это online операция в отличие от rebuild (rebuild online не совсем online).я нарывался на то что coalesce не уменьшал blevel a rebuild уменьшал, и, немного почитав про его механизм, сделал вывод что он в принципе этого не делает(не меняет структуру индекса, а просто перемещает) - это действительно так? Кроме того, у меня сложилось ощущение, что coalesce вообще трогает только leaf блоки.Собственно, RTFM says "COALESCE merge the contents of index blocks where possible to free blocks for reuse" Т.е. перекладывает содержимое листьев плотненько. При этом наверняка приходится править ссылки в нелистьевых блоках.
А у blevel-а только одна тенденция - к росту. Rebuild его не уменьшает, а создаёт.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38196282
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ElicСобственно, RTFM says "COALESCE merge the contents of index blocks where possible to free blocks for reuse" Т.е. перекладывает содержимое листьев плотненько.Ну фраза очень размытая, хотя, если подумать, то вполне логично, что c перестройкой структуры это уже rebuild, а не coalesce, а коль перестраивать, то легче и проще это делать с созданием с нуля и в новом сегменте, как rebuild это и делает. Наверное, и функция-то одна, что у создания индекса, что у rebuild'a.

Timur AkhmadeevстранннннноМожно взять тот же пример от andrey_anonymous и удалить 90% не с конца, а равномерно по всему диапазону.
Тогда вставка максимальных значений не будет заполнять старые блоки и ребилд будет весьма кстати.
Будет кстати, но необязателен. Проще, логичнее и "более лучше" в таком случае выполнить coalesce - это online операция в отличие от rebuild (rebuild online не совсем online).Сделал я маленький тестик с rebuild/coalesce после каждого миллиона вставок и удалений 90% строк:
Код: plsql
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
drop table xt1     purge;
drop table i_stats purge;
alter session set optimizer_dynamic_sampling=0;
set serverout on;

create table xt1(a int, constraint pk_xt1 primary key(a));
insert into xt1 
   with t as (select 1 a from dual connect by level<=4e3)
   select rownum from t,t t2
   where rownum<=1e7;
commit;

analyze index pk_xt1 validate structure;
create table i_stats as 
   select 'without delete' v,st.*
   from index_stats st
   where st.name='PK_XT1';

declare 
   procedure stat_save(p_desc varchar2) is
   begin
      execute immediate 'analyze index pk_xt1 validate structure';
      insert into i_stats st 
         select p_desc,st.*
         from index_stats st
         where st.name='PK_XT1';
      commit;
   end;

   procedure p_insert_delete(n int) is
   begin
      insert into xt1
         with t as (select 1 a from dual connect by level<=1e3)
         select rownum+n*1e6 from t,t t2;
      delete from xt1 where mod(a,10)!=0;
      commit;
   end;   

   procedure p_test(p_oper varchar2) is

      procedure p_iter(i int) is
      begin
         p_insert_delete(i);
         stat_save(p_oper || i || '_' || 0);
         execute immediate 'alter index pk_xt1 '||p_oper;
         stat_save(p_oper || i || '_' || 1);
      end;
   begin
      execute immediate 'drop table xt1     purge';
      execute immediate 'create table xt1(a int, constraint pk_xt1 primary key(a))';

      for i in 1..10 loop
         p_iter(i);
      end loop;
   end;
      
begin
   p_test('coalesce');
   p_test('rebuild');
end;
/
select 
 v,height,blocks
 ,lf_rows,lf_blks,lf_rows_len
 ,br_rows,br_blks,br_rows_len
 ,btree_space,used_space,pct_used
from i_stats i;


Разница получилась весьма существенной:
результат
Код: plsql
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.
41.
42.
43.
V                  HEIGHT     BLOCKS    LF_ROWS    LF_BLKS LF_ROWS_LEN    BR_ROWS    BR_BLKS BR_ROWS_LEN BTREE_SPACE USED_SPACE   PCT_USED
-------------- ---------- ---------- ---------- ---------- ----------- ---------- ---------- ----------- ----------- ---------- ----------
without delete          3      20480   10000000      19875   158888893      19874         31      236578   159248992  159125471        100
coalesce1_0             3       2048    1000000       2000    15989899       1999          4       23889    16032128   16013788        100
coalesce1_1             3       2048     100000        223     1589899        222          4        2643     1816128    1592542         88
coalesce2_0             3       3200    1099796       2223    17576534       2222          7       26643    17840224   17603177         99
coalesce2_1             3       3200     200000        446     3179798        445          7        5296     3624224    3185094         88
coalesce3_0             3       5248    1199627       2446    19163729       2445          9       29296    19640288   19193025         98
coalesce3_1             3       5248     300000        669     4769697        668          9        7949     5424288    4777646         89
coalesce4_0             3       6272    1299625       2669    20753596       2668         12       31949    21448384   20785545         97
coalesce4_1             3       6272     400000        893     6359596        892         12       10614     7240384    6370210         88
coalesce5_0             3       7936    1399610       2893    22343255       2892         14       34614    23256448   22377869         97
coalesce5_1             3       7936     500000       1116     7949495       1115         14       13266     9040448    7962761         89
coalesce6_0             3      10240    1499623       3116    23933362       3115         17       37266    25064544   23970628         96
coalesce6_1             3      10240     600000       1340     9539394       1339         17       15931    10856544    9555325         89
coalesce7_0             3      11264    1599610       3340    25523053       3339         19       39931    26872608   25562984         96
coalesce7_1             3      11264     700000       1563    11129293       1562         19       18583    12656608   11147876         89
coalesce8_0             3      13312    1699623       3563    27113160       3562         22       42583    28680704   27155743         95
coalesce8_1             3      13312     800000       1787    12719192       1786         22       21248    14472704   12740440         89
coalesce9_0             3      15360    1799610       3787    28702851       3786         24       45248    30488768   28748099         95
coalesce9_1             3      15360     900000       2010    14309091       2009         24       23900    16272768   14332991         89
coalesce10_0            3      16384    1899623       4010    30292958       4009         27       47900    32296864   30340858         94
coalesce10_1            3      16384    1000000       2234    15898990       2233         27       26565    18088864   15925555         89
rebuild1_0              3       2048    1000000       2000    15989899       1999          4       23889    16032128   16013788        100
rebuild1_1              2        256     100000        222     1589899        221          1        2630     1784032    1592529         90
rebuild2_0              3       2304    1099706       2222    17575094       2221          5       26630    17816160   17601724         99
rebuild2_1              2        512     200000        444     3179798        443          1        5272     3560032    3185070         90
rebuild3_0              3       2560    1199815       2444    19166737       2443          5       29272    19592160   19196009         98
rebuild3_1              2        768     300000        666     4769697        665          1        7914     5336032    4777611         90
rebuild4_0              3       2816    1299924       2666    20758380       2665          5       31914    21368160   20790294         98
rebuild4_1              3       1024     400000        887     6359596        886          3       10544     7120096    6370140         90
rebuild5_0              3       3072    1399630       2887    22343575       2886          6       34544    23144192   22378119         97
rebuild5_1              3       1152     500000       1109     7949495       1108          3       13184     8896096    7962679         90
rebuild6_0              3       3200    1499739       3109    23935218       3108          6       37184    24920192   23972402         97
rebuild6_1              3       1408     600000       1331     9539394       1330          3       15826    10672096    9555220         90
rebuild7_0              3       3456    1599849       3331    25526877       3330          6       39826    26696192   25566703         96
rebuild7_1              3       1664     700000       1553    11129293       1552          4       18468    12456128   11147761         90
rebuild8_0              3       3712    1699958       3553    27118520       3552          7       42468    28480224   27160988         96
rebuild8_1              3       1920     800000       1774    12719192       1773          4       21098    14224128   12740290         90
rebuild9_0              3       3968    1799664       3774    28703715       3773          7       45098    30248224   28748813         96
rebuild9_1              3       2048     900000       1996    14309091       1995          4       23738    16000128   14332829         90
rebuild10_0             3       4096    1899773       3996    30295358       3995          7       47738    32024224   30343096         95
rebuild10_1             3       2304    1000000       2218    15898990       2217          5       26380    17784160   15925370         90

...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38196463
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ух ты дискуссии развернулись )))

На исходный вопрос ответ давно дан, и ответ из серии "не чеши, где не чешится"
ребилд индексовМеня интересует вопрос: с какой частотой необходимо ребилдить индексы и нужно ли?
Как после ребилда оценить результат? Что-то типа: после ребилда время отклика сократилось
на N секунд, и т .д.?
Если админ не понимает, для чего нужно перестраивать конкретный индекс, то не нужно занимайся фигней.
Для перестройки индекса должны быть веские причины.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38198319
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+ 5 коп: еще пример перестроения индексов, которое имеет смысл: индексы в старых секциях таблиц, данные в которых больше не обновляются (пример - таблицы-логи, секционированные по дате). Индекс становится более компактным по размеру, т.к. уходят последствия расщепления блоков индексов при обновлении данных а новых расщеплений больше не происходит.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38299801
Paranoiac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят,так это я что-то не совсем понял rebuild индекса blevel и соответственно height не понижает что ли?
Код: plsql
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.
 
SQL> analyze index ibs.IDX_Z#RECORDS_COL_DATE_STAMP validate structure;
 
Index analyzed
 
SQL> select * from index_stats;
 
    HEIGHT     BLOCKS NAME                           PARTITION_NAME                    LF_ROWS    LF_BLKS LF_ROWS_LEN LF_BLK_LEN    BR_ROWS    BR_BLKS BR_ROWS_LEN BR_BLK_LEN DEL_LF_ROWS DEL_LF_ROWS_LEN DISTINCT_KEYS MOST_REPEATED_KEY BTREE_SPACE USED_SPACE   PCT_USED ROWS_PER_KEY BLKS_GETS_PER_ACCESS   PRE_ROWS PRE_ROWS_LEN OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
---------- ---------- ------------------------------ ------------------------------ ---------- ---------- ----------- ---------- ---------- ---------- ----------- ---------- ----------- --------------- ------------- ----------------- ----------- ---------- ---------- ------------ -------------------- ---------- ------------ -------------- ----------------
         4     384288 IDX_Z#RECORDS_COL_DATE_STAMP                                    57855566     381624  2152887278       7996     381623       1507     7989508       8028       11123          497063      57855566                 1  3063563700 2160876786         71            1                    5          0            0              1               16
 

SQL> alter index ibs.IDX_Z#RECORDS_COL_DATE_STAMP rebuild;
 
Index altered


SQL> analyze index ibs.IDX_Z#RECORDS_COL_DATE_STAMP validate structure;
 
Index analyzed
 
SQL> select * from index_stats;
 
    HEIGHT     BLOCKS NAME                           PARTITION_NAME                    LF_ROWS    LF_BLKS LF_ROWS_LEN LF_BLK_LEN    BR_ROWS    BR_BLKS BR_ROWS_LEN BR_BLK_LEN DEL_LF_ROWS DEL_LF_ROWS_LEN DISTINCT_KEYS MOST_REPEATED_KEY BTREE_SPACE USED_SPACE   PCT_USED ROWS_PER_KEY BLKS_GETS_PER_ACCESS   PRE_ROWS PRE_ROWS_LEN OPT_CMPR_COUNT OPT_CMPR_PCTSAVE
---------- ---------- ------------------------------ ------------------------------ ---------- ---------- ----------- ---------- ---------- ---------- ----------- ---------- ----------- --------------- ------------- ----------------- ----------- ---------- ---------- ------------ -------------------- ---------- ------------ -------------- ----------------
         4     302368 IDX_Z#RECORDS_COL_DATE_STAMP                                    57844443     300532  2152390215       7996     300531        846     6766864       8028           0               0      57844443                 1  2409845560 2159157079         90            1                    5          0            0              1               16
 
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38299813
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paranoiacrebuild индекса blevel и соответственно height не понижает что ли?
Индекс должен быть уж совсем "пустым", чтоб это произошло
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38299833
Paranoiac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мля,печалька(
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38299855
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня интересует вопрос: с какой частотой необходимо ребилдить индексы и нужно ли?

Никогда не нужно , если индекс не побитый. В олтп.

В олап — после каждой загрузки данных можно, если бд грузит данные быстрее без индексов.


Как после ребилда оценить результат? Что-то типа: после ребилда время отклика сократилось
на N секунд, и т .д.?


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



У меня ещё один вопрос тогда: это характерно только для Oracle, или для других СУБД тоже?

Для любой субд это верно, если только нет какой то специфики очень суровый в данной субд, какая перестройку требует.

Для mssql точно не стоит перестраивать индексы.

В более менее всех субд сейчас используют т.н. Fillfactor для индексов, часть места на страницах индексов типа 10%, оставляют пустым, чтобы можно было потом вставить туда индексную запись.

При пересоздании индекса обычно фактор укрывают в 100%, индекс таким образом занимает немного меньше места и становится немного быстрее его читать. За счет этого — ускорение. Небольшое, обычно.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38299882
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, опять протухшую тему подсунули...
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302510
инедксы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раз в год на клоне перестраиваем все индексы. Сравниваем с оригиналом и если разница по занимаемому месту >10%, то перестраиваем в продакшене. Экономия от последнего перестроения "бесплатное" место на 3 месяца роста. Выглядит очень не плохо, за запустить несколько скриптов.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302511
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
инедксы,

А еще в книжке по Оракел 8 советовали exp/imp делать регулярно. Тоже, типа, место экономит. Не нужно зацикливаться на индексах, товарищи.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302518
инедксы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Relic HunterА еще в книжке по Оракел 8 советовали exp/imp делать регулярно. Тоже, типа, место экономит. Не нужно зацикливаться на индексах, товарищи.

Ребилд позволяет экономить в нашем (!) случае до 25% годовой потребности в месте. Не пользоваться такой возможностью не профессионализм и разбазаривание конторских ресурсов.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302580
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
инедксыРебилд позволяет экономить в нашем (!) случае до 25% годовой потребности в месте. Не пользоваться такой возможностью не профессионализм и разбазаривание конторских ресурсов."не профессионализм" пользоваться для экономии места ребилдом.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302582
,ух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
инедксыРебилд позволяет экономить в нашем (!) случае до 25% годовой потребности в месте. Не пользоваться такой возможностью не профессионализм и разбазаривание конторских ресурсов.
видать заняться больше нечем
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302609
индекс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-"не профессионализм" пользоваться для экономии места ребилдом.
В каком месте? Затрат около нуля, польза видна не вооруженным взглядом, вреда нет. Где ошибка в этих рассуждениях? :)
Подскажите пожалуйста профессиональный и эффективный способ.

,ухвидать заняться больше нечем
Тот кто это делает обходится в 15к-20к в год. Он за пару дней экономит места на в разы бОльшую сумму, не говоря о том, что справляется с рутиной помимо перестройки индексов раз в год.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302686
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индексПодскажите пожалуйста профессиональный и эффективный способ.
Пересмотрите архитектуру/метод удаления данных. Партицирование(правильное) + exchange|truncate|drop ?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302758
индекс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pravednikПересмотрите архитектуру/метод удаления данных. Партицирование(правильное) + exchange|truncate|drop ?
Пересмотреть архитектуру это в тысячи раз дороже, чем два дня работы в год Intermediate DBA в солнечной стране :) И скорее всего дороже чем вообще всё занимаемое место за весь период жизни системы.
Я исхожу из того, что решение, денежно не адекватное достигаемому результату, не может называться профессиональным, хотя вполне может быть технически красивым :) Не умоляю вашего профессионализма, исходные данные слишком малы. /оффтоп.
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #38302823
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индексГде ошибка в этих рассуждениях?нет аргументации, чем не подошли другие, менее ресурсоемкие способы освобождения места.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #39549529
helgisbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
djeday84xtenderУ Льюиса есть неплохая старая заметка: http://www.jlcomp.demon.co.uk/14_index_rebuild_i.html

IMHO лучше этого не найти :))

Index Internals – Rebuilding The Truth - Richard Foote's Oracle Blog


Понравилось изложение материала. А есть еще такие книжки-презентации?
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #39568788
DVD40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ramin Hashimzadeребилд индексовМеня интересует вопрос: с какой частотой необходимо ребилдить индексы и нужно ли?
Как после ребилда оценить результат? Что-то типа: после ребилда время отклика сократилось
на N секунд, и т .д.?
Если дефрагментация индексов состоит более чем 20% в больших таблицах то я их делаю ребуилд, хороший выигрыш по месту дает

А с такой вот фрагментацией стоит перестраивать индекс?))
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #39568793
DVD40,

А у тебя точно Oracle?

Так-то в доке по MS SQL Server вполне себе доходчиво расписано, что индексы со степенью фрагментации > 10% подлежат, как минимум, реорганизации, а со степенью фрагментации > 30% - перестройке.
НУ и размер индекса надо учитывать. Если он меньше 8 страниц, то и заморачиваться не стоит, ибо хранение быдет осуществляться в смешанных экстентах и reorganization / rebuild не даст никакого эффекта...
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #39568794
DVD40
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - ЭхDVD40,

А у тебя точно Oracle?



Так-то в доке по MS SQL Server вполне себе доходчиво расписано, что индексы со степенью фрагментации > 10% подлежат, как минимум, реорганизации, а со степенью фрагментации > 30% - перестройке.
[/quot]

OK!
...
Рейтинг: 0 / 0
Как часто вы ребилдите индексы? Как оценить результат после ребилда?
    #39569474
Фотография Aliona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DVD40
Так-то в доке по MS SQL Server вполне себе доходчиво расписано, что индексы со степенью фрагментации > 10% подлежат, как минимум, реорганизации, а со степенью фрагментации > 30% - перестройке.

А чё индексы в MS SQL Server и индексы в Oracle - это одно и тоже?
Я подозревала, что это несколько разные вещи.
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как часто вы ребилдите индексы? Как оценить результат после ребилда?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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