powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сбор статистики по большой малоизменяемой и медленно растущей таблице.
25 сообщений из 28, страница 1 из 2
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589193
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемы гуру Oracle БД, помогите пожалуйста чайнику разобраться с проблемой, по которой не удалось найти решения самостоятельно.
Имеется:
1)Oracle 10.2
2)Большая медленно прирастающая таблица, партиционирование отсутствует, "старые" данные меняются редко.

Проблема:
Медленное выполнение сложных запросов к таблице.

Подробности:
Если вручную выполнять принудительный сбор статистики, то запросы существенно ускоряются. Хотелось бы автоматизировать, используя штатные средства, а не лепя "костыли" в виде дополнительных Job-ов в планировщике. Сам являюсь новичком. Штатная задача по сбору статистики обходит таблицу стороной, т.к. на сколько я понял из доков, объём изменённых данных менее 10%(что не удивительно).

Вопросы к профессионалам:
1)Возможно ли для конкретной таблицы указать особые параметры анализа на необходимость сбора статистики, не трогая остальную БД?
2)Если да, как это сделать?
3)Возможно ли анализировать только последние изменения(мониторинг по таблице включён, но похоже я не совсем правильно понял принцип его работы)?
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589221
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 10.2 этого всего еще нет, если я правильно помню.
Настройте отдельное задание на сбор статистики для этой таблицы.
Еще разобраться бы, когда начинают съезжать планы, и какая статистика на это влияет.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589270
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewUseЗдравствуйте, уважаемы гуру Oracle БД, помогите пожалуйста чайнику разобраться с проблемой, по которой не удалось найти решения самостоятельно.
Имеется:
1)Oracle 10.2
2)Большая медленно прирастающая таблица, партиционирование отсутствует, "старые" данные меняются редко.
Если база данных легально не покупалась, сделайте "партиционирование".
Всё равно вы ничего не платите.
Можете не платить еще больше!

Если база данных покупалась легально, попробуйте использовать Partitioned View.
Они появились в Oracle7 и работают до сих пор.
Что это и как их сделать, найдите в интернете.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589286
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Валерий ЮринскийЕсли база данных легально не покупалась, сделайте "партиционирование".
Всё равно вы ничего не платите.
Можете не платить еще больше!

Если база данных покупалась легально, попробуйте использовать Partitioned View.
Они появились в Oracle7 и работают до сих пор.
Что это и как их сделать, найдите в интернете.

База покупалась, не Энтерпраиз, так что партицый нет, ок, почитаю по Partitioned View, спасибо.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589300
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jan2aryНастройте отдельное задание на сбор статистики для этой таблицы.
Еще разобраться бы, когда начинают съезжать планы, и какая статистика на это влияет.

Ок, ясно, спасибо, значит костыли :(
Я всё-таки полный чайник, разобраться, какая именно статистика влияет на планы запросов для меня ещё слишком сложная задача.
Сбор полной статистики по таблицы, конечно занимает 3часа, но ночью вполне приемлемо, наверное так и поступлю.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589306
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewUseВалерий ЮринскийЕсли база данных легально не покупалась, сделайте "партиционирование".
Всё равно вы ничего не платите.
Можете не платить еще больше!

Если база данных покупалась легально, попробуйте использовать Partitioned View.
Они появились в Oracle7 и работают до сих пор.
Что это и как их сделать, найдите в интернете.

База покупалась, не Энтерпраиз, так что партицый нет, ок, почитаю по Partitioned View, спасибо.
Почитайте. Они должны работать и в стандартной редакции.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589318
jan2ary,

автосбор статистики появился с версии 10g. С версии 9i есть все необходимые запчасти для реализации самодельного автосбора статистики.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589320
NewUsejan2aryНастройте отдельное задание на сбор статистики для этой таблицы.
Еще разобраться бы, когда начинают съезжать планы, и какая статистика на это влияет.

Ок, ясно, спасибо, значит костыли :(
Я всё-таки полный чайник, разобраться, какая именно статистика влияет на планы запросов для меня ещё слишком сложная задача.
Сбор полной статистики по таблицы, конечно занимает 3часа, но ночью вполне приемлемо, наверное так и поступлю.скорее всего, проблема в монотонно растущих индексированных полях.... Общее распределение в этом случае сильно не меняется, но меняется верхняя граница значений.
как вариант - вручную выставлять high_value для таких полей.. через подпрограммы пакета dbms_stats, отвечающие за ручное управление значениями статистик
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589324
jan2ary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхjan2ary,

автосбор статистики появился с версии 10g. С версии 9i есть все необходимые запчасти для реализации самодельного автосбора статистики.Автосбор - да. Тонкая настройка и инкрементальные статистики, о чем спрашивает ТС - с 11.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589331
NewUse(мониторинг по таблице включён, но похоже я не совсем правильно понял принцип его работы)?мониторинг лишь показывает примерное количество операций DML по таблице с момента последнего сбора статистики. Именно на данных этого мониторинга базируется автосбор, принимая решение - было ли по таблице 10% изменений или нет (там, конечно, ещё учитывается факты транкаций таблицы и удаления её сегментов, но к твоему случаю, скорее всего, это не имеет никакого отношения)
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589338
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эхкак вариант - вручную выставлять high_value для таких полей.. через подпрограммы пакета dbms_stats, отвечающие за ручное управление значениями статистик

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

Таблица действительно по сравнению с её объёмом прирастает не значительно, т.е. процент прирастания строк низкий, но при запросах идут в основном обращения именно к новым строчкам(индекс по дате), если это существенно.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589342
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эхмониторинг лишь показывает примерное количество операций DML по таблице с момента последнего сбора статистики. Именно на данных этого мониторинга базируется автосбор, принимая решение - было ли по таблице 10% изменений или нет (там, конечно, ещё учитывается факты транкаций таблицы и удаления её сегментов, но к твоему случаю, скорее всего, это не имеет никакого отношения)

Можно ли как-то изменить параметры мониторинга конкретной таблицы? Транкаций по таблице не осуществляется, удаления сегментов как и какого-либо удаления данных из таблицы не происходит.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589358
NewUse,

имелось ввиду, что для монотонно растущих индексированных полей (поле с датой вставки, числовое поле-инкремент из последовательности) можно значение статистик выставить вручную, а не собирать полным сбором.
но тут - танцы с бубнами. нужно сделать экспорт статистики по нужной таблице и её индексам (dbms_stats.EXPORT_TABLE_STATS с трушным каскадом), подправить значения для верхних пределов, импортировать статистику обратно (dbms_stats.IMPORT_TABLE_STATS с трушным каскадом).
для всех этих манипуляций предварительно нужно создать таблицу-приёмник под статистику (dbms_stats.CREATE_STAT_TABLE).

Это тот самый костыль, который ты не хотел. Но, во-первых, позволяет актуализировать статистику, во-вторых, не напрягать сервер трехчасовыми марафонами по её расчету...
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589368
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - ЭхNewUse,
имелось ввиду, что для монотонно растущих индексированных полей (поле с датой вставки, числовое поле-инкремент из последовательности) можно значение статистик выставить вручную, а не собирать полным сбором.
Да, наверное это то, что нужно, ибо таких полей с избытком :)

Добрый Э - Эхно тут - танцы с бубнами. нужно сделать экспорт статистики по нужной таблице и её индексам (dbms_stats.EXPORT_TABLE_STATS с трушным каскадом), подправить значения для верхних пределов, импортировать статистику обратно (dbms_stats.IMPORT_TABLE_STATS с трушным каскадом).
для всех этих манипуляций предварительно нужно создать таблицу-приёмник под статистику (dbms_stats.CREATE_STAT_TABLE).

Понимаю, что вопрос не совсем корректный, но на сколько эти манипуляции безопасно проводить на боевой нагруженной базе?
Бэкапы, естественно, есть но не хотелось бы "дотюниться" до их распаковки :)
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589374
NewUse,

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

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


в общем, почитай про указанные подпрограммы пакета dbms_stats...
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589384
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589388
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы не рекомендовал новичку играться с ручной установкой статистики на боевой базе. Там легко что-то не учесть и получить неконсистентый результат.
Если есть возможность - лучше собрать стандартными процедурами.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589392
Valergrad,

в том и дела, что ТС хочет избавиться от трехчасовых расчетовстандарным сбором статистики, и сделать всё быстро другими доступными средствами. Оно и понятно - зачем пересчитывать статистику по охулиарду записей, если ты прекрасно знаешь, что у тебя в таблицу добавилось всего пару охулионов записей?
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39589395
Valergrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхValergrad,

в том и дела, что ТС хочет избавиться от трехчасовых расчетовстандарным сбором статистики, и сделать всё быстро другими доступными средствами. Оно и понятно - зачем пересчитывать статистику по охулиарду записей, если ты прекрасно знаешь, что у тебя в таблицу добавилось всего пару охулионов записей?

Да, но кто знает сколько там записей? Возможно там всего-то несколько десятков гигабайт, и статистика нормально соберется ночью.
Я всего лишь хотел сказать, что для ручной установки статы нужно понимать что устанавливать, в какие значения, как и зачем. Это требует неплохой квалификации, иначе можно сделать только хуже.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39592248
Rudyshin Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewUse,

возможен вариант, что в данном случае сбор статистики не помогает, а вредит.

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

думаю, что происходит следующее
вместе с очередным штатным сбором статистики, курсоры инвалидируются и при следующем выполнении строятся новые планы
но как указали выше, из-за наличия "монотонно растущих полей" и параметров запросов использущих "текущие" значения (например тот же SYSDATE)
планы получаются неверные

поробуйте вообще отключить штатный сбор статистики и собрать ее по всем таблицам вручную

если источником инвалидации курсоров является не только сбор статистики, то такой вариант скорее всего не поможет
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39592553
oracstat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NewUse,

Собирайте статистику штатно, указав параллелизм (direct read будет шустрее) и estimate present = 3, к примеру. Этого будет достаточно для установки high value
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39592562
х.з.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewUseЯ всё-таки полный чайник, разобраться, какая именно статистика влияет на планы запросов для меня ещё слишком сложная задача.
это проще чем кажется: когда все тупит и перед пересбором выгрузи статистику в отдельную табличку. после пересбора выгрузи туда же и сравни.

Вряд ли влияет то что в таблице было 10000000 записей, а стало 10000100. А вот какие-нибудь high value по значениям в столбце могут натолкнуть на мысль.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39687314
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вновь столкнулся с той же проблемой на другой БД, но та же 10-ка.
Не помню, как диагностировал, но что-то статистика редко собирается по одной из таблиц.
Напомните, пожалуйста, как получить текущее значение estimate_percent по конкретной таблице, чтобы понять, действительно ли не достигнут порог необходимый для повторного анализа таблицы, или же дело в чём-то другом и причина несбора статистики более сложная?
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39687371
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewUseВновь столкнулся с той же проблемой на другой БД, но та же 10-ка.
Не помню, как диагностировал, но что-то статистика редко собирается по одной из таблиц.
Напомните, пожалуйста, как получить текущее значение estimate_percent по конкретной таблице, чтобы понять, действительно ли не достигнут порог необходимый для повторного анализа таблицы, или же дело в чём-то другом и причина несбора статистики более сложная?Вы уверены, что правильно понимаете смысл параметра estimate_percent ? Если вам нужно мониторить процент измененных строк в таблице и принимать решение о необходимости пересбора статистики по таблице, то estimate_percent - это НЕ то, что вам нужно.
...
Рейтинг: 0 / 0
Сбор статистики по большой малоизменяемой и медленно растущей таблице.
    #39687388
NewUse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, не корректно написал, мне хотелось бы понять, как Oracle принимает решение о необходимости пересбора статистики по таблице.
Хочу вручную посчитать, достигнут ли порог по конкретной таблице и понять причина в слишком высоком пороге или например в нехватке окна обслуживания или ещё в чём-то....

Вроде ранее находил соответствующие запросы или процедуры, но сейчас гугл не помог. Мониторинг по таблице, естественно, включен.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сбор статистики по большой малоизменяемой и медленно растущей таблице.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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