События ожидания и классы событий ожидания
Всякий раз, когда процесс сервера ожидает завершения какого-нибудь события, это классифицируется как событие ожидания (wait event). В Oracle Database 11g существует свыше 950 событий ожидания. Наиболее распространенными из них являются те, которые возникают из-за состязания за ресурсы, например, состязания за защелки, состязания за буфер и состязания за ввод-вывод.
Группа взаимосвязанных событий ожидания называется классом событий ожидания (wait class), и каждое событие обязательно относится к какому-нибудь из таких классов. Наиболее важные классы событий ожидания — это Administrative, Application, Concurrency, Configuration, Idle, Network, System I/O и User I/O. Например, к классу Administrative относятся события ожидания, вызываемые блокировкой на уровне строк, а к классу User I/O — события ожидания, вызываемые чтением блоков с диска. Использование классов событий ожидания помогает быстро переходить к исходной причине проблемы в базе данных за счет ограничения фокуса дальнейшего анализа. Ниже приведено краткое описание основных классов ожидания в Oracle Database 11g.
- Класс Administrative (Административные события ожидания) включает в себя события ожидания, вызываемые административными командами, подобными, например, перестройке индекса.
- Класс Application (События ожидания приложения) включает в себя события ожидания, возникающие из-за кода приложения.
- Класс Cluster (События ожидания кластера) включает в себя события ожидания, связанные с управлением кластером RAC (Real Cluster Application).
- Класс Commit (События ожидания фиксации) включает в себя одно единственное событие ожидания log file sync (событие ожидания синхронизации файлов журналов), которое вызывают выполняемые в базе данных операции фиксации.
- Класс Idle (События простоя) включает в себя события ожидания, которые происходят тогда, когда сеанс является не активным, как, например, событие SQL*Net message from client (событие ожидания сообщения SQL*Net от клиента).
- Класс Network (Сетевые события ожидания) включает в себя события, возникающие во время обмена сообщениями по сети.
- Класс Other (Другие события ожидания) включает в себя разнородные события ожидания.
- Класс Scheduler (События ожидания планировщика) включает в себя события ожидания, связанные с работой приложения Resource Manager (Диспетчер ресурсов).
- Класс System I/O (События ожидания системного ввода-вывода) включает в себя события ожидания, связанные с фоновыми процессами ввода-вывода, в том числе событие db file parallel write (событие ожидания выполнения параллельной записи в файлы базы данных), которого ожидает фоновый процесс записи в базу данных, и события, связанные с чтением и записью в архивные журналы и журналы повторного выполнения.
- Класс User I/O (События ожидания пользовательского ввода-вывода) включает в себя события ожидания, связанные с пользовательскими процессами ввода-вывода, в том числе db file sequential read (событие ожидания выполнения последовательного чтения из файлов базы данных) и db file scattered read (событие ожидания выполнения чтения из файлов базы данных “вразброс”).