Последний рассматриваемый процесс называется процессом сервера. Неко-
торые предпочитают называть его теневым процессом. Каждое подключающее-
ся к базе данных Oracle приложение (процесс пользователя) получает этот
процесс, создаваемый от его имени. Каждый раз, когда запускается и
торые предпочитают называть его теневым процессом. Каждое подключающее-
ся к базе данных Oracle приложение (процесс пользователя) получает этот
процесс, создаваемый от его имени. Каждый раз, когда запускается и
выполняется подключение к базе данных, стартует еще один такой процесс. Он
является одним из пользователей, если только не задействована конфигурация
Oracle MTS.
Если Oracle конфигурируется в режиме MTS, каждый процесс пользователя
взаимодействует с процессом диспетчера (один диспетчер может взаимодейст-
вовать с несколькими хранящим операторы SQL для обработ-
ки в
проверяет очередь запросов, обрабатывает операторы SQL (как это будет объ-
яснено позже) и сохраняет результаты в
постоянно проверяют очередь ответов, и как только будет получен результат,
они немедленно отправят его назад тому пользовательскому процессу, который
запрашивал эти результаты.
вовать с несколькими хранящим операторы SQL для обработ-
ки в
очереди запросов.
Коллективно используемый процесс сервера непрерывнопроверяет очередь запросов, обрабатывает операторы SQL (как это будет объ-
яснено позже) и сохраняет результаты в
очереди ответов.
Процессы диспетчерапостоянно проверяют очередь ответов, и как только будет получен результат,
они немедленно отправят его назад тому пользовательскому процессу, который
запрашивал эти результаты.
Процесс сервера (в режиме Oracle) выполняет
для пользователя всю работу. В среде выделенного сервера для каждого подключения выделяется один из таких процессов, которые просто ожидают, когда из
приложения будут посланы какие-либо распоряжения (операторы SQL). Процесс сервера читает блоки из файлов данных (если только они к этому времени не находятся в оперативной памяти), манипулирует данными, содержащимися в блоках базы данных, и в соответствии с запросом возвращает данные. Наконец, это тот процесс, которому требуется помощь, потому что именно он использует ресурсы системы.
Ниже приведен пример выходных данных системы UNIX, в которой выполняется база данных Oracle. В этих выходных данных показаны фоновые процессы -процесс сервера и прикладной процесс
Замечание
Процесс SQL*Plus не будет указан в выходных данных, если он запущен как приложение с клиентской машины. Отображаемый в приводимых выходных данных процесс SQL*Plus запущен в рамках сеанса эмуляции терминала (telnet) хост-машины, на которой резидентно расположена база данных Oracle.
□ oracle
|
15956
|
1
|
0
|
11:: 23
|
?
|
00
|
•01
|
ora_pmon_oradev
|
oracle
|
15958
|
1
|
0
|
11 :23
|
9
|
00
|
00:00
|
ora_dbw0_oradev
|
oracle
|
15960
|
1
|
0
|
11:23
|
9
|
00
|
00:00
|
ora_lgwr_oradev
|
oracle
|
15962
|
1
|
0
|
11:23
|
9
|
00
|
00
|
ora_ckpt_oradev
|
oracle
|
15964
|
1
|
0
|
23
|
9
|
00
|
00 06
|
ora_smon_oradev
|
oracle
|
15966
|
1
|
0
|
23
|
?
|
00
|
00
|
ora_reco_orade,v
|
oracle
|
16032
|
15939
|
0
|
10
|
pts/1
|
00
|
01
|
sqlplus
|
oracle
|
16033
|
16032
|
1
|
14: 10
|
9
|
00
|
00:02
|
oracleoradev
|
(DESCRIPTION
|
Вы заметили после просмотра этой архитектурной информации, как измене-
ние, сделанное в одной области, потенциально влияет на производительность в
других областях? Кроме того, становится понятно, что узкие места, переживае-
мые основными фоновыми процессами, могут распространиться на
всю систему.
ние, сделанное в одной области, потенциально влияет на производительность в
других областях? Кроме того, становится понятно, что узкие места, переживае-
мые основными фоновыми процессами, могут распространиться на
всю систему.
Представьте, что DBWR не имеет возможности записывать грязные буферы на диск с той скоростью, которая обеспечивала бы наличие свободных буферов, доступных для процессов сервера. Рассмотрите, что произойдет, если LGWR не сможет достаточно быстро сбрасывать на диск буферы протокола. Все эти ситуации создают возможности для возникновения узких мест, а, значит, и для настройки. Но проактивное (упреждающее) конфигурирование экземпляра Oracle и использование методологии, обсуждавшейся в главе "Метод, стоящий за безумием", поможет тратить время и системные ресурсы более благоразумным образом. Мы не хотим, чтобы пользователи вслепую пытались выделять память для одной или нескольких структур в SGA Oracle и расстраивались из-за производительности. Мы хотим, чтобы проблему определили, используя для этого метод событий ожидания, спланировали решение, реализовали а затем проверили. Нужно прекратить просто подбрасывать Oracle дополнительную память, даже если раньше дело шло именно так.
Программная глобальная область (PGA, Program Global Area)
Когда на рис. 5.1 обнаружилась надпись PGA, вы могли подумать, что она обозначает Ассоциацию профессиональных игроков в гольф (Professional Golfers Association). Но ваше предположение
слишком далеко
от Oracle. PGA, илипрограммная глобальная область - это частный фрагмент памяти для процесса
сервера, состоящий из трех частей: пространство стека, состояние курсора и
данные сеанса пользователя. На самом деле здесь нет ничего глобального (по
крайней мере, до тех пока вы не режим Oracle MTS, при исполь-
данные сеанса пользователя. На самом деле здесь нет ничего глобального (по
крайней мере, до тех пока вы не режим Oracle MTS, при исполь-
зовании которого части PGA действительно становятся глобальными).
В пространстве стека присутствуют значения переменных, скаляров и констант, используемых сеансом пользователя. Состояние курсора содержит информацию о курсоре (открыт, закрыт, постоянный или нет, сведения об-обработке и т. д.). В данных пользователя наряду с другой информацией отражается текущее состояние сеанса, ID текущей транзакции (если существует), номер текущего сегмента отката (если имеется) и пространство для выполнения сортировок в памяти (если оно выделено).
< Предыдущая | Следующая > |
---|