ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 18.04.11 04:16
Оценка:
Добрый день.

У нас есть программа некая программа в которой храняться данные по работе всей компании. Структура бд, организовано не грамотно. грубо говоря есть одна главная таблица в которую постоянно закидываются данные, их уже 7.5 миллионов.
И все отчеты завязаны на ней. Т.е при вызове одного(любого!) отчета тормозится вся работа с программой.

Разработчики советуют типа делать пересчет индексов каждую неделю причем для всей бд!!!


Данных за день не так много. 300 записей в среднем в эту таблицу. Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?



Oracle 9
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re: ПЕРЕСТРОЙКА (индексов)
От: Аноним  
Дата: 18.04.11 05:26
Оценка:
Здравствуйте, AC1D, Вы писали:

ACD>Структура бд, организовано не грамотно.грубо говоря есть одна главная таблица в которую постоянно закидываются данные, их уже 7.5 миллионов.

ACD> Данных за день не так много. 300 записей в среднем в эту таблицу. Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?

Вряд ли вы можете судить о грамотности организации БД, если не в курсе про перестройку индексов. Как бы рано вам наверно так самоуверенно оценивать квалификацию других людей.
Смысл тут и везде много раз обсуждался (причин несколько, основная — в фрагментации при вставке данных в середину индекса), а для всей БД вместо одной таблицы, потому что, если грубо говоря есть одна таблица, то грубо говоря, это одно и то же, а хуже в любом случае не будет .
Re: ПЕРЕСТРОЙКА (индексов)
От: octo47  
Дата: 18.04.11 05:28
Оценка: 4 (1)
Здравствуйте, AC1D, Вы писали:

ACD>Добрый день.


ACD>У нас есть программа некая программа в которой храняться данные по работе всей компании. Структура бд, организовано не грамотно. грубо говоря есть одна главная таблица в которую постоянно закидываются данные, их уже 7.5 миллионов.

что-то ерунда какая-то. при чем тут "одна таблица". А сколько их должно быть? 7.5млн — это мало даже для десктопа.

ACD>И все отчеты завязаны на ней. Т.е при вызове одного(любого!) отчета тормозится вся работа с программой.

Оракл — версионник. По этому вставка (тем более 300 строк) не должна сильно влиять на конкурентное чтение.
Если конечно кто-то не додумался воткнуть блокировки (но этому индексы никак не помогут)

ACD>Разработчики советуют типа делать пересчет индексов каждую неделю причем для всей бд!!!

ACD>
ACD> Данных за день не так много. 300 записей в среднем в эту таблицу.
Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных?

ACD> Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?

Смысл есть: для ребалансировки дерева, для того, чтобы вернуть свободное место.
Более подробно Том рассказывал: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2913600659112
Re: ПЕРЕСТРОЙКА (индексов)
От: rm822 Россия  
Дата: 18.04.11 05:53
Оценка: 4 (1)
ACD> Данных за день не так много. 300 записей в среднем в эту таблицу. Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?
это актуально для средних и больших баз, которые не влезают в оперативку и работа постоянно идет с диском.
для маленьких баз, как у тебя, особого смысла не имеет
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: ПЕРЕСТРОЙКА (индексов)
От: MasterZiv СССР  
Дата: 18.04.11 06:36
Оценка: 4 (1)
On 18.04.2011 8:16, AC1D wrote:
>
> Разработчики советуют типа делать пересчет индексов каждую неделю причем для
> всей бд!!!

Это очень тупой совет. Нужно разбираться с БД вашей, может быть перестройка
индексов вовсе и не нужна.

Вообще перестройка индексов делает эффективно две вещи:
-- немного оптимизирует физическую структуру индекса, он после этого занимает
немного меньше места и физически читается немного быстрее. Эффект от этого очень
сильно зависит от БД и операций в ней, например, если изменений и удалений в БД
нет, и fillfactor-ы настроены хорошо, то эффект от операции будет нулевой.

-- делает неявно update statistics, собирает новую статистику. Статистику
можно update-ить и отдельно от перестройки индексов, это и быстрее, и не
требует на долгое время блокировать таблицу от всех операций.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 18.04.11 11:34
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 18.04.2011 8:16, AC1D wrote:

>>
>> Разработчики советуют типа делать пересчет индексов каждую неделю причем для
>> всей бд!!!

MZ>Это очень тупой совет. Нужно разбираться с БД вашей, может быть перестройка

MZ>индексов вовсе и не нужна.

Разработчики не хотят разбираться. По этому только дают советы)
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[2]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 18.04.11 11:34
Оценка:
Здравствуйте, octo47, Вы писали:

O>что-то ерунда какая-то. при чем тут "одна таблица". А сколько их должно быть? 7.5млн — это мало даже для десктопа.

таблиц много. просто большинство отчетов завязаны на ней.

O>Если конечно кто-то не додумался воткнуть блокировки (но этому индексы никак не помогут)

Да. в некоторых отчетах, есть блокировки.

ACD>> Данных за день не так много. 300 записей в среднем в эту таблицу.

O>Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных?
ммм. непонял? каков что?

O>Смысл есть: для ребалансировки дерева, для того, чтобы вернуть свободное место.

O>Более подробно Том рассказывал: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2913600659112
кстати там сказано, что в некоторых случаях перестройка индекса не полезна.. в каких я не понял. можете пояснить?
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[2]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 18.04.11 11:34
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Вряд ли вы можете судить о грамотности организации БД, если не в курсе про перестройку индексов. Как бы рано вам наверно так самоуверенно оценивать квалификацию других людей.

Ну может вы ответите тогда: как повлияет перестройка индекса на таблицы которые не используются и на таблицы из которых происходит полная выборка?

А>Смысл тут и везде много раз обсуждался (причин несколько, основная — в фрагментации при вставке данных в середину индекса), а для всей БД вместо одной таблицы, потому что, если грубо говоря есть одна таблица, то грубо говоря, это одно и то же, а хуже в любом случае не будет .


Посмотрите ссылку которую привел octo47 , там написано что перестройка может и навредить..
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[3]: ПЕРЕСТРОЙКА (индексов)
От: MasterZiv СССР  
Дата: 18.04.11 18:33
Оценка:
On 18.04.2011 15:34, AC1D wrote:

> MZ>Это очень тупой совет. Нужно разбираться с БД вашей, может быть перестройка

> MZ>индексов вовсе и не нужна.
>
> Разработчики не хотят разбираться. По этому только дают советы)

Так это ТЕБЕ надо разбираться.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: ПЕРЕСТРОЙКА (индексов)
От: MasterZiv СССР  
Дата: 18.04.11 19:02
Оценка: 2 (1)
On 18.04.2011 15:34, AC1D wrote:

> ACD>> Данных за день не так много. 300 записей в среднем в эту таблицу.

> O>Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных?
> ммм. непонял? каков что?

Объём, процен от уже существующих данных (по-видимому).

> кстати там сказано, что в некоторых случаях перестройка индекса не полезна.. в

> каких я не понял. можете пояснить?

В тех случаях, когда она не помогает ничему. Далеко не всегда перестройка
индекса что-то в индексе улучшает (сжимает индекс). А процесс ДОЛГИЙ и
МОНОПОЛЬНЫЙ (блокирует таблицу на время построения индекса).
К тому же он ещё жрёт ресурсы сервера во время построения индекса,
немалые в общем-то.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: ПЕРЕСТРОЙКА (индексов)
От: octo47  
Дата: 18.04.11 19:22
Оценка: 2 (1)
Здравствуйте, AC1D, Вы писали:

ACD>Здравствуйте, octo47, Вы писали:


O>>Если конечно кто-то не додумался воткнуть блокировки (но этому индексы никак не помогут)

ACD>Да. в некоторых отчетах, есть блокировки.
Ну так ССЗБ. При наличии транзакций необходимость блокировки для _read only_ операция
типа отчетов ну очень сомнительна.

ACD>>> Данных за день не так много. 300 записей в среднем в эту таблицу.

O>>Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных?
ACD>ммм. непонял? каков что?
Размер.

O>>Смысл есть: для ребалансировки дерева, для того, чтобы вернуть свободное место.

O>>Более подробно Том рассказывал: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2913600659112
ACD>кстати там сказано, что в некоторых случаях перестройка индекса не полезна.. в каких я не понял. можете пояснить?
1. нужно место 2х от размера индекса
2. блокировка таблицы
3. изменится статистика -> планы могут "внезапно" изменится
Re[4]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 19.04.11 08:33
Оценка:
Здравствуйте, octo47, Вы писали:

ACD>>Да. в некоторых отчетах, есть блокировки.

O>Ну так ССЗБ. При наличии транзакций необходимость блокировки для _read only_ операция
O>типа отчетов ну очень сомнительна.

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

ACD>>>> Данных за день не так много. 300 записей в среднем в эту таблицу.

O>>>Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных?
ACD>>ммм. непонял? каков что?
O>Размер.
1 запись 1-5 кб. Просто ручками в базу вбивается там новые сделки и т.д.
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re: ПЕРЕСТРОЙКА (индексов)
От: wildwind Россия  
Дата: 19.04.11 09:37
Оценка: +1 :)
Здравствуйте, AC1D, Вы писали:

ACD>Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?


Смысл простой. Вам будет чем заняться, и вы отстанете от разработчиков.
Re[3]: ПЕРЕСТРОЙКА (индексов)
От: wildwind Россия  
Дата: 19.04.11 09:43
Оценка:
Здравствуйте, AC1D, Вы писали:

ACD>Разработчики не хотят разбираться. По этому только дают советы)


Печально, хоть и часто встречается.
У них перед вами есть какие-то обязательства? Если нет, то начальство ваше само себя в яму загнало. Меняйте их поскорее (сами решите кого :).
А если есть, то ставьте им задачу не "разобраться с индексами", а "чтобы вот этот отчет получался за 5 минут" (или сколько там вас устроит).
Re[5]: ПЕРЕСТРОЙКА (индексов)
От: wildwind Россия  
Дата: 19.04.11 09:46
Оценка:
Здравствуйте, AC1D, Вы писали:

ACD>Если кто-то другой вносил в таблицу какие-то изменения, то отчет выдавал неверные данные.. поэтому они сделали блокировки в отчете..


Прелестно! :)
С большой вероятностью проблема производительности отчетов кроется не в индексах, а в этих самых блокировках.
Re[4]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 19.04.11 10:12
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AC1D, Вы писали:


ACD>>Разработчики не хотят разбираться. По этому только дают советы)


W>Печально, хоть и часто встречается.

W>У них перед вами есть какие-то обязательства? Если нет, то начальство ваше само себя в яму загнало. Меняйте их поскорее (сами решите кого .
да уже в яме. есть только обязательство тех. поддержки. юристы в свое время пролетели, не каких обязательств у компании нет..
и уже думаю))
W>А если есть, то ставьте им задачу не "разобраться с индексами", а "чтобы вот этот отчет получался за 5 минут" (или сколько там вас устроит).

Я уже перебуилдил индексы во всей базе. Нехрена не изменилось)
Задача как раз так и ставиться. Отчет работает медлено, надо ускорить)
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[6]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 19.04.11 10:12
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AC1D, Вы писали:


ACD>>Если кто-то другой вносил в таблицу какие-то изменения, то отчет выдавал неверные данные.. поэтому они сделали блокировки в отчете..


W>Прелестно!

W>С большой вероятностью проблема производительности отчетов кроется не в индексах, а в этих самых блокировках.
он запускается раз в месяц. в остальных отчетах вроде блокировок нету.
Там более 50 отчетов разных.
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[2]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 19.04.11 10:12
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AC1D, Вы писали:


ACD>>Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?


W>Смысл простой. Вам будет чем заняться, и вы отстанете от разработчиков.

не всё так просто)) те пользователи которые работают с программой, отсылают отчеты начальству.
Я вот жду когда же очередной раз они не успеют и начнется скандал, потому как мое начальство и начальсво разработчиков инертно.. Оракл они не хотят обновлять на новый, сервер не хотят обновлять, кардинально структуру менять не хотят, разбивать базу не хотят, разбираться не хотят .. вообщем ждем..
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[3]: ПЕРЕСТРОЙКА (индексов)
От: MasterZiv СССР  
Дата: 19.04.11 11:20
Оценка:
On 19.04.2011 14:12, AC1D wrote:

> Оракл они не хотят обновлять

> на новый, сервер не хотят обновлять, кардинально структуру менять не хотят,
> разбивать базу не хотят, разбираться не хотят .. вообщем ждем..

Я вас хочу немного разочаровать -- часто это всё для более быстрой работы
отчётов не помогает.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: ПЕРЕСТРОЙКА (индексов)
От: AC1D  
Дата: 19.04.11 11:41
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 19.04.2011 14:12, AC1D wrote:


>> Оракл они не хотят обновлять

>> на новый, сервер не хотят обновлять, кардинально структуру менять не хотят,
>> разбивать базу не хотят, разбираться не хотят .. вообщем ждем..

MZ>Я вас хочу немного разочаровать -- часто это всё для более быстрой работы

MZ>отчётов не помогает.
Я согласен, если не разбираться, где узкие места, это в основном стрельба из пушки по воробьям. Разбираться не кто не хочет. Пинок начальства даст новый импульс в борьбе добра со злом.. И надеюсь он будет довольно сильный.
Вообще моя позиция такова, я хочу отказаться от этой программы..
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.