У нас есть программа некая программа в которой храняться данные по работе всей компании. Структура бд, организовано не грамотно. грубо говоря есть одна главная таблица в которую постоянно закидываются данные, их уже 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 записей в среднем в эту таблицу. Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?
Вряд ли вы можете судить о грамотности организации БД, если не в курсе про перестройку индексов. Как бы рано вам наверно так самоуверенно оценивать квалификацию других людей.
Смысл тут и везде много раз обсуждался (причин несколько, основная — в фрагментации при вставке данных в середину индекса), а для всей БД вместо одной таблицы, потому что, если грубо говоря есть одна таблица, то грубо говоря, это одно и то же, а хуже в любом случае не будет .
Здравствуйте, 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
ACD> Данных за день не так много. 300 записей в среднем в эту таблицу. Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?
это актуально для средних и больших баз, которые не влезают в оперативку и работа постоянно идет с диском.
для маленьких баз, как у тебя, особого смысла не имеет
On 18.04.2011 8:16, AC1D wrote: > > Разработчики советуют типа делать пересчет индексов каждую неделю причем для > всей бд!!!
Это очень тупой совет. Нужно разбираться с БД вашей, может быть перестройка
индексов вовсе и не нужна.
Вообще перестройка индексов делает эффективно две вещи:
-- немного оптимизирует физическую структуру индекса, он после этого занимает
немного меньше места и физически читается немного быстрее. Эффект от этого очень
сильно зависит от БД и операций в ней, например, если изменений и удалений в БД
нет, и fillfactor-ы настроены хорошо, то эффект от операции будет нулевой.
-- делает неявно update statistics, собирает новую статистику. Статистику
можно update-ить и отдельно от перестройки индексов, это и быстрее, и не
требует на долгое время блокировать таблицу от всех операций.
Здравствуйте, MasterZiv, Вы писали:
MZ>On 18.04.2011 8:16, AC1D wrote: >> >> Разработчики советуют типа делать пересчет индексов каждую неделю причем для >> всей бд!!!
MZ>Это очень тупой совет. Нужно разбираться с БД вашей, может быть перестройка MZ>индексов вовсе и не нужна.
Разработчики не хотят разбираться. По этому только дают советы)
Здравствуйте, 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
кстати там сказано, что в некоторых случаях перестройка индекса не полезна.. в каких я не понял. можете пояснить?
Здравствуйте, <Аноним>, Вы писали:
А>Вряд ли вы можете судить о грамотности организации БД, если не в курсе про перестройку индексов. Как бы рано вам наверно так самоуверенно оценивать квалификацию других людей.
Ну может вы ответите тогда: как повлияет перестройка индекса на таблицы которые не используются и на таблицы из которых происходит полная выборка?
А>Смысл тут и везде много раз обсуждался (причин несколько, основная — в фрагментации при вставке данных в середину индекса), а для всей БД вместо одной таблицы, потому что, если грубо говоря есть одна таблица, то грубо говоря, это одно и то же, а хуже в любом случае не будет .
Посмотрите ссылку которую привел octo47 , там написано что перестройка может и навредить..
On 18.04.2011 15:34, AC1D wrote:
> MZ>Это очень тупой совет. Нужно разбираться с БД вашей, может быть перестройка > MZ>индексов вовсе и не нужна. > > Разработчики не хотят разбираться. По этому только дают советы)
On 18.04.2011 15:34, AC1D wrote:
> ACD>> Данных за день не так много. 300 записей в среднем в эту таблицу. > O>Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных? > ммм. непонял? каков что?
Объём, процен от уже существующих данных (по-видимому).
> кстати там сказано, что в некоторых случаях перестройка индекса не полезна.. в > каких я не понял. можете пояснить?
В тех случаях, когда она не помогает ничему. Далеко не всегда перестройка
индекса что-то в индексе улучшает (сжимает индекс). А процесс ДОЛГИЙ и
МОНОПОЛЬНЫЙ (блокирует таблицу на время построения индекса).
К тому же он ещё жрёт ресурсы сервера во время построения индекса,
немалые в общем-то.
Здравствуйте, 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. изменится статистика -> планы могут "внезапно" изменится
Здравствуйте, octo47, Вы писали:
ACD>>Да. в некоторых отчетах, есть блокировки. O>Ну так ССЗБ. При наличии транзакций необходимость блокировки для _read only_ операция O>типа отчетов ну очень сомнительна.
Есть отчет считающий остатки. Он делает полную выборку по этой здоровой таблице, складывает, считает. Вообщем когда его запускают можно идти пить чай. Если кто-то другой вносил в таблицу какие-то изменения, то отчет выдавал неверные данные.. поэтому они сделали блокировки в отчете.. слава богу это нужно делать раз в месяц)
ACD>>>> Данных за день не так много. 300 записей в среднем в эту таблицу. O>>>Ради новых 2100 строк в неделю? Действительно странно. А каков вставляемых данных? ACD>>ммм. непонял? каков что? O>Размер.
1 запись 1-5 кб. Просто ручками в базу вбивается там новые сделки и т.д.
Здравствуйте, AC1D, Вы писали:
ACD>Разработчики не хотят разбираться. По этому только дают советы)
Печально, хоть и часто встречается.
У них перед вами есть какие-то обязательства? Если нет, то начальство ваше само себя в яму загнало. Меняйте их поскорее (сами решите кого :).
А если есть, то ставьте им задачу не "разобраться с индексами", а "чтобы вот этот отчет получался за 5 минут" (или сколько там вас устроит).
Здравствуйте, AC1D, Вы писали:
ACD>Если кто-то другой вносил в таблицу какие-то изменения, то отчет выдавал неверные данные.. поэтому они сделали блокировки в отчете..
Прелестно! :)
С большой вероятностью проблема производительности отчетов кроется не в индексах, а в этих самых блокировках.
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, AC1D, Вы писали:
ACD>>Разработчики не хотят разбираться. По этому только дают советы)
W>Печально, хоть и часто встречается. W>У них перед вами есть какие-то обязательства? Если нет, то начальство ваше само себя в яму загнало. Меняйте их поскорее (сами решите кого .
да уже в яме. есть только обязательство тех. поддержки. юристы в свое время пролетели, не каких обязательств у компании нет..
и уже думаю)) W>А если есть, то ставьте им задачу не "разобраться с индексами", а "чтобы вот этот отчет получался за 5 минут" (или сколько там вас устроит).
Я уже перебуилдил индексы во всей базе. Нехрена не изменилось)
Задача как раз так и ставиться. Отчет работает медлено, надо ускорить)
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, AC1D, Вы писали:
ACD>>Если кто-то другой вносил в таблицу какие-то изменения, то отчет выдавал неверные данные.. поэтому они сделали блокировки в отчете..
W>Прелестно! W>С большой вероятностью проблема производительности отчетов кроется не в индексах, а в этих самых блокировках. он запускается раз в месяц. в остальных отчетах вроде блокировок нету.
Там более 50 отчетов разных.
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, AC1D, Вы писали:
ACD>>Может мне кто-нибудь объяснить смысл перестройки индексов тем более для всей бд?
W>Смысл простой. Вам будет чем заняться, и вы отстанете от разработчиков.
не всё так просто)) те пользователи которые работают с программой, отсылают отчеты начальству.
Я вот жду когда же очередной раз они не успеют и начнется скандал, потому как мое начальство и начальсво разработчиков инертно.. Оракл они не хотят обновлять на новый, сервер не хотят обновлять, кардинально структуру менять не хотят, разбивать базу не хотят, разбираться не хотят .. вообщем ждем..
On 19.04.2011 14:12, AC1D wrote:
> Оракл они не хотят обновлять > на новый, сервер не хотят обновлять, кардинально структуру менять не хотят, > разбивать базу не хотят, разбираться не хотят .. вообщем ждем..
Я вас хочу немного разочаровать -- часто это всё для более быстрой работы
отчётов не помогает.
Здравствуйте, MasterZiv, Вы писали:
MZ>On 19.04.2011 14:12, AC1D wrote:
>> Оракл они не хотят обновлять >> на новый, сервер не хотят обновлять, кардинально структуру менять не хотят, >> разбивать базу не хотят, разбираться не хотят .. вообщем ждем..
MZ>Я вас хочу немного разочаровать -- часто это всё для более быстрой работы MZ>отчётов не помогает.
Я согласен, если не разбираться, где узкие места, это в основном стрельба из пушки по воробьям. Разбираться не кто не хочет. Пинок начальства даст новый импульс в борьбе добра со злом.. И надеюсь он будет довольно сильный.
Вообще моя позиция такова, я хочу отказаться от этой программы..