powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
28 сообщений из 28, показаны все 2 страниц
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39655953
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех,

TS с uniform size 4M, ASSM, в ней таблица ~90ГБ, получилось около 22000 экстентов.
Мне предлагают перенести её в TS с большим размером экстента, чтобы устранить какую-то фрагментацию.
Вообще термин фрагментации по моему больше подходит к старым словарным TS, где экстенты могли иметь разный размер....
Тут же uniform size на TS...
Или под фрагментацей тут понимают просто большое число экстентов?
На таблице есть индекс, он в TS с 2МБ uniform size.

Нужно ли переносить?
Точнее почти уверен, что оно конечно и можно ... но вот зачем?
Как аргументировать(если я прав), что можно ничего не менять?
Если брать фулскан по таблице или индексный доступ - то скорость тут по моему никак не может меняться.

Прошу совета.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39655954
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить - база 12c, RAC, соответственно ASM, ALLOCATION_UNIT_SIZE = 4MB
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656001
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeklikЗабыл добавить - база 12c, RAC, соответственно ASM, ALLOCATION_UNIT_SIZE = 4MB
сдается мне в современных БД это очень "тонкий тюнинг", который в итоге ничего не даст.
90Гб таблица - на так уж и много сегодня )
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656225
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mefmanKeklikЗабыл добавить - база 12c, RAC, соответственно ASM, ALLOCATION_UNIT_SIZE = 4MB
сдается мне в современных БД это очень "тонкий тюнинг", который в итоге ничего не даст.
90Гб таблица - на так уж и много сегодня )
Но как обосновать, что смысла нет?
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656259
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeklikНо как обосновать, что смысла нет?
От обратного.
Предложить предлагающему оценить эффект от его предложения. В цифрах.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656291
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousKeklikНо как обосновать, что смысла нет?
От обратного.
Предложить предлагающему оценить эффект от его предложения. В цифрах.
Была такая мысль ... но, может есть best practics по этому вопросу?
С другой стороны использовать uniform size на TS совсем не возбраняется, 4МБ экстент - совсем не маленький,
а то что их за 20ть тысяч - так и что?
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656439
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, если бы на этапе построения системы было известно, что данная таблица будет занимать десятки гигов, то best practices было бы увеличить uniform size например до 128M и секционировать (или 256M без секционирования)

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

Скорее всего просто уменьшение количества экстентов не даст даже пол-процента прироста призводительности
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656458
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо надо добавить с чего вообще вопрос возник.
Один из процессов занимает час времени, считают, что должен занимать пол-часа,
и почему-то сразу думают, что дело в базе, а не в программе.

По AWR отчету за этот час, в топе два INSERT'а.

Одну из таблиц я описал, вторая аналогичная.

SQL ordered by Elapsed Time
Код: plsql
1.
2.
3.
4.
5.
6.
7.
        Elapsed                  Elapsed Time
        Time (s)    Executions  per Exec (s)  %Total   %CPU    %IO    
---------------- -------------- ------------- ------       ------  ------ -------------
         1,298.0        460,350           0.00     18       12.5    87.5  


           890.3        440,939          0.00     12.6      9.4       92.1 




Код: plsql
1.
2.
1,298.0  / 460,350 =   0.00282
890 / 440,939   = 0.002



2мс - время одного insert, по моему это нормальная скорость.

Может ли укрупнение экстентов увеличить эту скорость?
Ведь какое-то время тратится и на поиск-добавление в словарь информации о экстенте, хотя ...

И еще, подскажите как в AWR отчете увидеть общее время, которое отняла база?
Т.е. делаем отчет за час, вот сколько времени в этом часе заняла база, а именно выполнение запросов?
Как увидеть, что например 20 минут, вообще не было к базе обращений, или запрос был на базе, но "лениво" фетчил
данные из курсора, например на экран кто-то данные выводил по мере чтения.... или программа по мере обработки...

Как понять эти метрики?
Код: plsql
1.
2.
Elapsed:   60.12 (mins)       
DB Time:   128.07 (mins)



Откуда взялось 128 минут, если отчет делался за час, как на базе (DB Time) может быть больше часа?

Есть еще такая информация в отчете, опять же как sql execute elapsed time может быть больше часа - 5,310.38 ?
Time Model Statistics
Код: plsql
1.
2.
3.
4.
Statistic Name                      Time (s)      % of DB Time    % of Total CPU Time
sql execute elapsed time        5,310.38       68.1   
DB CPU                          3,590.46        45.1                    74.27 
sequence load elapsed time     21.33            0.23  


..
..


Код: plsql
1.
2.
3.
4.
5.
Foreground Wait Events	
Event                       Waits       %Time-outs  TotalWait Time (s)     Avg wait (ms)  Waits /txn     % bg time
log file parallel write     2,345,634       0         1,071                0.42                 1.11        33.23 
target log write size       1,238,983       0         519                  0.40                 0.52        16.23 
db file parallel write      912,123         0         369                  0.41                 0.43        11.68 



А здесь 1,071 секунд на Log write система была - значит ли это, что это время вычесть надо из часа,
или это шло параллельно выполнению запроса.
Нет понятно, что параллельно, но как отчет тогда понимать?

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

К примеру, выше SQL запрос занял Total 18% - а как узнать от какого времени идут эти 18% ?
Не от всего ведь часа.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656482
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656495
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровКонечно, если бы на этапе построения системы было известно, что данная таблица будет занимать десятки гигов, то best practices было бы увеличить uniform size например до 128M и секционировать (или 256M без секционирования)

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

Скорее всего просто уменьшение количества экстентов не даст даже пол-процента прироста призводительности

Вячеслав спасибо за советы!
В таблице больше 100млн строк и около 500 партиций, но данные перекошены, и
все строки лежат в одной партиции.
Может ли наведение порядка с партициями(с данными) увеличить скорость вставки?

Вот пытаюсь понять стоит ли овчинка выделки.... ещё бы понимать лучше AWR отчет, можете посоветовать по его данным(предыдущий пост)?

Хотя уверен, что простое увеличение экстентов, как Вы и пишите, больше пол-процента не даст.
Хотя сама перестройка таблицы может и дать какие-то результаты для SELECT'ов (просто выгрузка, truncate, загрузка).
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656529
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viewer Ask TOM. Number Of Extents
Читал я эту ветку.
Том говорит, что если 1000 экстентов - то не парьтесь, его спрашивают - а если 7,237 экстентов на таблицу в 12.8gb ?
А не парьтесь, если нет проблем с производительностью... - а как понять есть ли они ?
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656543
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeklikВ таблице больше 100млн строк и около 500 партиций, но данные перекошены, и
все строки лежат в одной партиции.Ну и толку с такого секционирования?
KeklikМожет ли наведение порядка с партициями(с данными) увеличить скорость вставки?Вставки -- вряд-ли

Да и вообще -- почему ты решил, что именно здесь проблема?
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656557
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровKeklikВ таблице больше 100млн строк и около 500 партиций, но данные перекошены, и
все строки лежат в одной партиции.Ну и толку с такого секционирования?
KeklikМожет ли наведение порядка с партициями(с данными) увеличить скорость вставки?Вставки -- вряд-ли

Да и вообще -- почему ты решил, что именно здесь проблема?
Не, не я решил, мне это предлагают, чтобы процесс быстрее пошел.

Вспомнил, что в другом проекте есть нагруженная таблица,
Больше 80,000 экстентов по 4МБ, размер 313GB и там основная операция INSERT.
И со скоростью вставки нет никаких проблем, да и вообще никаких проблем нет.

От такого секционирования нет конечно толку, и вот это и предложим разработчикам.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656899
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переносить таблицу чтобы устранить какую-то мифическую фрагментацию - чушь
переносить таблицу чтобы уменьшить время инсерта за счет сокращения ожиданий на выделение экстента - вполне оправданная рекомендация. например если у вас таблица с лобами.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656913
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВАнапример если у вас таблица с лобами.Тогда лоб-сегмент и надо переносить, таблицу-то зачем дергать?
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39656963
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут есть еще непрямой эффект - data dictionary. Если таких таблиц много то все что в data dictionary views висит на sys.uet$ начнет пыхтеть.

SY.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39657011
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение, что у него в UET$ и FET$ по 0 записей
Другое дело x$ktfbue и x$ktfbfe, а это обращение (Current read) к битмап карте заголовка файла
Но не думаю, что даже это сильно критично
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
tst> set timing on
tst> select max(count(*)) from dba_extents group by owner, segment_name, partition_name;

MAX(COUNT(*))
-------------
       411597

Elapsed: 00:00:11.82
tst> select count(*) from dba_extents;

  COUNT(*)
----------
   1338189

Elapsed: 00:00:09.65
tst> set timing off

...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658074
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровЕсть подозрение, что у него в UET$ и FET$ по 0 записей
Другое дело x$ktfbue и x$ktfbfe, а это обращение (Current read) к битмап карте заголовка файла
....

[/src][/spoiler]
--UET$ и FET$ по 0 записей
Ну да, TS ведь local managment....
select count(*) from sys.UET$

COUNT(*)
----------
0
1 row selected.

Спасибо за инфу по x$ktfbue и x$ktfbf.
Вроде убедил не трогать, потому что повторюсь, на больших таблицах с большим числом экстентов все
живет без проблем и именно с INSERT в основной нагрузке.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658091
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВАпереносить таблицу чтобы уменьшить время инсерта за счет сокращения ожиданий на выделение экстента - вполне оправданная рекомендация.Остается только выбрать цель оправданий. Cократить ожидания индивидуального инсерта - это уменьшение размера uniform-экстента и, как следствие, их количество увеличится.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658105
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВАпереносить таблицу чтобы уменьшить время инсерта за счет сокращения ожиданий на выделение экстента - вполне оправданная рекомендация. например если у вас таблица с лобами.Собственно, ничто не мешает увеличить NEXT, чтоб при выделении памяти выдавалось сразу несколько UNIFORM экстентов
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658453
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-DВАпереносить таблицу чтобы уменьшить время инсерта за счет сокращения ожиданий на выделение экстента - вполне оправданная рекомендация.Остается только выбрать цель оправданий. Cократить ожидания индивидуального инсерта - это уменьшение размера uniform-экстента и, как следствие, их количество увеличится.

В многопользовательской среде при выделении экстента одним индивидуальным инсертом все остальные инсерты курят в сторонке пока экстент не выделится, а потом валом ломятся его заполнять.
Если у вас экстенты будут выделяться по чуть-чуть и тут же заполняться, то вся могопользовательская работа уйдет в очередь ожидания выделения очередного кусочка, поэтому чем больше экстент, тем лучше, тем реже его аллоцировать.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658855
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровDВАпереносить таблицу чтобы уменьшить время инсерта за счет сокращения ожиданий на выделение экстента - вполне оправданная рекомендация. например если у вас таблица с лобами.Собственно, ничто не мешает увеличить NEXT, чтоб при выделении памяти выдавалось сразу несколько UNIFORM экстентов
Хороший совет, спасибо.
Думаю в этом случае, скорость выделения экстента таблицы(точнее экстентов), не будет отличаться если бы uniform бы большим,
т.к. размер юнита в ASM задан в 4МБ.
Т.е. NEXT 128МБ при uniform 128MB и next 128MB при uniform 4МБ - дадут один результат по
скорости выделении экстентов.
Биты переключить в датафайлах TS, да записи добавить в словарь, что у сегмента есть новые экстенты.
Ну да, битов больше - не 1, а 32 - и какая разница в плане скорости?
Или я что-то упустил?

А если учесть, что в нормальных системах нагруженные таблицы чистятся циклически, то с началом нового периода,
все экстенты у почищенной части таблицы будут выделяться большими кусками(точнее большим количеством экстентов за раз).
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658873
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВА-2-пропущено...
Остается только выбрать цель оправданий. Cократить ожидания индивидуального инсерта - это уменьшение размера uniform-экстента и, как следствие, их количество увеличится.

В многопользовательской среде при выделении экстента одним индивидуальным инсертом все остальные инсерты курят в сторонке пока экстент не выделится, а потом валом ломятся его заполнять.
Если у вас экстенты будут выделяться по чуть-чуть и тут же заполняться, то вся могопользовательская работа уйдет в очередь ожидания выделения очередного кусочка, поэтому чем больше экстент, тем лучше, тем реже его аллоцировать.
Я приводил пример гораздо большей и более нагруженной таблицы -
больше 80,000 экстентов по 4МБ, размер таблицы 313GB.
И тоже 4МБ uniform - никаких траблов на INSERT нет.
Все-таки 4МБ - это совсем не мало, раньше основное время в поиске-выделении-удалении экстента был пин-понг между fet$ и uet$,
чего нет у LMTs, - биты найти свободные в датафайле и поменять их недолго и разницы нет 32 бита поменять или 1.
По любому спасибо за информацию, для заведомо больших таблиц лучше использовать uniform по-больше.
А что скажете насчет auto - видел в нескольких проектах, используют и не напрягаются такими тонкостями.

Как увидеть, что есть описываемая проблемя в AWR отчете?
Читал про TT очереди для обработки экстент-запросов на каждом TS - есть они в AWR?
И где там посмотреть очереди на добавление новых экстентов сегменту в словаре?
Проверю на обоих базах.
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658880
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровСобственно, ничто не мешает увеличить NEXT, чтоб при выделении памяти выдавалось сразу несколько UNIFORM экстентовВ LMT next игнорируется.

DВА-2-пропущено...
Остается только выбрать цель оправданий. Cократить ожидания индивидуального инсерта - это уменьшение размера uniform-экстента и, как следствие, их количество увеличится.В многопользовательской среде...Я исхожу из того, что время выделения меньшего экстента несколько меньше. Слово "индивидуальный" нужно толковать именно так, как оно написано, и не подменять на "суммарный".
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39658981
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeklikКак увидеть, что есть описываемая проблемя в AWR отчете?
Читал про TT очереди для обработки экстент-запросов на каждом TS - есть они в AWR?
И где там посмотреть очереди на добавление новых экстентов сегменту в словаре?
Проверю на обоих базах.
HW - contention
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39659101
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DВА HW - contention
Спасибо, проверю на следующей неделе....
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39659105
Keklik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще одно уточнение, если таблица партиционированна, и данные нормально распределены по партициям, то это ведь тоже надо учитывать. Причем на больших таблицах партиций может быть очень много. И Insert как правило идет не в одну партицию.
И в словаре, меняются разные сегменты...
...
Рейтинг: 0 / 0
таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
    #39659137
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeklikВроде убедил не трогать, потому что повторюсь, на больших таблицах с большим числом экстентов все
живет без проблем и именно с INSERT в основной нагрузке.
а сколько у вас индексов в таблице и по размеру?
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / таблица 90ГБ, получилось около 22000 экстентов - надо ли уменьшить число экстентов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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