Рубрика:
Базы данных /
Инструменты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВЛАДИМИР ТИХОМИРОВ, директор по информационным технологиям СПАО «Ингосстрах», Vladimir.Tikhomirov@ingos.ru ВАЛЕРИЙ МИХЕИЧЕВ, эксперт Oracle, ОСАО «Ингосстрах», Valery.Mikheitchev@ingos.ru
Распараллеливание операций в Oracle Часть 1
Практика распараллеливания операций показала, что оно дает порой весомые результаты при выполнении DML, DDL и других действий. Но имеются особенности и ограничения
В процессе работы с Oracle специалистам приходится сталкиваться с задачами по ускорению ввода данных и модификации данных в таблицах, с задачами по сокращению времени извлечения данных из таблиц SQL-запросами, а также сзадачами по ускорению создания и перестройке индексов, сбору статистики таблиц и т.д.
Существуют различные методы решения данных задач, среди которых эффективными являются распараллеливание процессов, секционирование таблиц, использование более эффективных планов выполнения запросов путем ихоптимизации и др.
В данной статье рассматриваются вопросы распараллеливания процессов как один их эффективных методов ускорения обработки данных. В первой части статьи будут рассматривается распараллеливание DML-операции, во второй части будут изложены вопросы распараллеливания DDL и других операций в Oracle.
Oracle поддерживает распараллеливание следующих операций:
- распараллеливание выполнения SQL-запросов (parallel query),
- DML-операций ввода,
- модификации строк таблиц (Insert, Update, Delete, Merge) и DDL-операций (таких, как Create tables, Create index и Rebuild index).
Кроме того, поддаются распараллеливанию также следующие конструкции внутри одной команды:
- Select distinct
- Group by
- Order by
- Not in
- Union и Union all
- Cube и Rollup
- агрегатные функции, например Sum и Max
- соединения типа Nested loop, Sort и Merge
Для секционированных таблиц распараллеливание поддерживается для операций с секциями, такими как Move, Split и Coalesce. Кроме того, распараллеливание работает для сбора статистики таблиц процедурой dbms_stats.gather_table_stats.
Поддерживается также параллелизм в границах секции секционированной таблицы, т.е. данные, хранящиеся в одной секции, могут одновременно обрабатываться несколькими серверными процессами.
На степень параллелизма существенное влияние оказывает ряд таких факторов, как число процессоров на сервере, значения параметров инициализации экземпляра базы данных, параметры, установленные на уровне сессии, а также другие факторы, например, предельное значение степени параллелизма, разрешенное пользователю.
В данной статье речь пойдет о распараллеливании DML и DDL-операций, ускорении создания и перестройке индексов, сборе статистики таблиц и индексов, основанных на распараллеливании процессов, и другие вопросы. Рассматриваются в том числе факторы, влияющие на параллелизм, и особенности параллелизма.
Давайте рассмотрим вопросы распараллеливания DML-операций, таких как:
- Insert
- Delete
- Update
- Merge
Одними из важных факторов, влияющих на параллелизм, являются:
- параметры инициализации, действующие на уровне всей системы,
- параметры, действующие на уровне сессии (сессионные параметры).
Статью целиком читайте в журнале «Системный администратор», №04 за 2016 г. на страницах 48-52.
PDF-версию данного номера можно приобрести в нашем магазине.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|