Происходит ли сортировка в буфере DB Buffer или в PGA в Oracle? - PullRequest
2 голосов
/ 01 ноября 2019

Когда данные считываются с дисков или буферного кеша и требуется сортировка, выполняется ли эта сортировка в буферном кеше (SGA) или PGA? Если это сделано в обоих, в чем разница между этими видами? И когда и почему это делается в буферном кеше или PGA? Заранее спасибо

1 Ответ

2 голосов
/ 01 ноября 2019

Сортировка выполняется в рабочих областях SQL , которые в основном хранятся в PGA. ( Вот руководство по настройке рабочих областей ; см. Также параметр SORT_AREA_SIZE .)

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

Основное различие в поведении сортировки заключается в том, делаете ли вы это на лету или заранее (путем создания индекса - также сделанов ПГА). Если ваши данные уже отсортированы, Oracle может прочитать индекс в буферный кеш - мне не ясно с этой стороны - но запрос, очевидно, будет намного быстрее.

...