Екзепляри Oracle (SGA і PGA). Сутність процесів. Користувальницькі процеси, проц, Інші СУБД, Бази даних, статті








Доброго дня, дорогі читачі! Дуже радий черговій зустрічі з Вами.

Давайте перевіримо свої знання, відповівши на такі питання.


  • Що таке тригер?
  • Що таке транзакція?
  • Які категорії файлів включає фізичний рівень БД Oracle?
  • У якому табличному просторі зберігається словник даних?
  • Яка різниця між сегментом, екстентів і блоком даних?

На ці питання дуже просто відповісти, уважно прочитавши попередній випуск.


ЕКЗЕМПЛЯР ORACLE

Примірник Oracle складається з процесів і розділяється пам’яті, необхідної для доступу до інформації в БД. Якщо копнути трохи глибше, то екземпляр складають призначені для користувача процеси, фонові процеси Oracle і колективна область пам’яті, яку використовують усі ці процеси.

Що ж являє собою колективна пам’ять (shared memory)? Oracle використовує поділювану пам’ять в різних цілях: як кешування даних та індексів, так і зберігання програмного коду. Колективна пам’ять ділиться на кілька частин (або структур пам’яті). Основними структурами пам’яті Oracle є Системна Глобальна Область (System Global Area або SGA) і Програмна Глобальна Область (Program Global Area або PGA). Розглянемо SGA і PGA більш докладно.

Системна Глобальна Область (SGA)

SGA – це область пам’яті, що розділяється, яку Oracle використовує для зберігання даних і керуючої інформації одного конкретного екземпляра Oracle. SGA розміщується в пам’яті при запуску екземпляра Oracle і звільняє пам’ять при зупинці. Кожен запущений екземпляр Oracle має свою власну SGA. Інформація в SGA складається з наступних компонентів (кожен з яких створюється в пам’яті при запуску екземпляра):



  • кеш буферів БД – тут зберігаються останні відкриті блоки даних. Ці блоки можуть містити дані, які змінилися, але ще не були записані на диск (брудні блоки); дані, які не змінювалися або були записані на диск після зміни (чисті блоки). Так як кеш буферів БД зберігає блоки даних на основі алгоритму останніх використовуваних блоків, то найбільш активно використовувані блоки постійно залишаються в пам’яті (тим самим, знижуючи дисковий ввод / вивід і збільшуючи продуктивність системи).

  • буфер журналу змін – зберігає дані про зміни БД. Буфер журналу змін записується в файл журналу змін настільки швидко і ефективно, наскільки це можливо. Пам’ятайте, що журнал змін використовується для відновлення екземпляра СУБД Oracle у разі збою системи.

  • розділяється пул – Це область SGA, в якій зберігаються такі структури розділяється пам’яті, як колективні SQL-області у бібліотечній кеші і внутрішня інформація словника даних. Розділяється пул важливий, тому що недостатній обсяг пам’яті, виділений для нього, може привести до деградації продуктивності всієї системи. Розділяється пул складається з бібліотечного кеша і кеша словника даних.

Бібліотечний кеш використовується для зберігання поділюваних SQL. Тут для кожного унікального SQL-вирази будуватися дерево розбору рядків і план виконання, які кешуються (тобто зберігаються в бібліотечному кеші). Якщо кілька додатків відправляють однакові SQL-вирази, то для прискорення роботи використовується колективна SQL-область (так як використовуються вже розібрані рядки і готовий план виконання, то відбувається економія часу).

Кеш словника даних містить набір таблиць і уявлень, що використовуються в якості посилань до БД Oracle. Тут зберігатися інформація про логічну і фізичну структуру БД. Словник даних містить наступну інформацію:



  • інформація користувача (наприклад, призначені для користувача привілеї)

  • обмеження цілісності, визначені для таблиць БД

  • імена і типи даних всіх стовпців таблиць БД

  • інформація про обсяг пам’яті, визначеному і використовуваний об’єктами схеми даних

Oracle часто звертається до словника даних при розборі SQL-виразів. Ці звернення складають сутність роботи Oracle. Вузькі місця в словнику даних впливають роботу всіх користувачів системи Oracle. Тому Ви завжди повинні бути впевнені, що обсяг пам’яті, визначений для словника даних, достатньо великий для кешування даних. Якщо кеш словника даних малий, то Ви помітите значне зниження продуктивності. Коли під кеш словника даних Ви визначите достатній об’єм пам’яті, істотних проблем з продуктивністю бути не повинно.

Програмна Глобальна Область (PGA)

Програмна Глобальна Область – це така область пам’яті, в якій зберігаються дані і керуюча інформація про серверні процеси Oracle. Розмір і зміст PGA визначається опціями, які Ви вказуєте при інсталяції Oracle. Ця область складається з наступних компонентів:



  • простір стека – це пам’ять, що зберігає змінні сеансів, масиви сеансів і т.д.

  • інформація сеансу – якщо Oracle працює не в мультінітевом режимі, то інформація сеансу зберігається в PGA. В іншому випадку, інформація сеансу зберігається в SGA.

  • приватна SQL-область – це частина PGA, де зберігаються пов’язані змінні і буфери реального часу.

ПРОЦЕСИ

Процес (або нитка) – це механізм виконання програмного коду, який може виконуватися непомітно для користувача. Крім того, кілька процесів можуть працювати одночасно. У різних операційних системах і на різних платформах вони можуть називатися по-різному (процеси, нитки, демони і т.д.), але, по суті, однакові. СУРБД Oracle працює з двома видами процесів: користувацькі процеси та процеси Oracle (Також відомі як фонові або тіньові). У деяких операційних системах (таких як Windows NT) процеси дійсно є нитками, але, щоб не плутатися в поняттях, називатимемо їх просто “процесами”.

Користувальницькі процеси

Користувальницькі (клієнтські) процеси – це користувальницькі з’єднання з СУРБД. Користувальницький процес управляє введенням і взаємодіє з серверними процесами Oracle через програмний інтерфейс Oracle. Користувальницький процес використовується також для видачі інформації користувачеві, і, при необхідності, представляє її у більш зручній формі.

Процеси Oracle

Процеси Oracle виконують функції для користувача процесів. Можуть бути розбиті на дві групи: серверні процеси (виконують функції для активних процесів) і фонові процеси (виконують функції СУРБД в цілому).

Серверні процеси (тіньові) взаємодіють між процесами призначеними для користувача і Oracle, виконуючи призначені для користувача запити. Наприклад, якщо користувальницький процес запитує частина даних, яких ще немає в SGA, то тіньовий процес несе відповідальність за читання блоків даних з БД в SGA. Між користувача і тіньовим процесом виникає зв’язок один-до-одного (конфігурація виділеного сервера), хоча один тіньовий процес може одночасно взаємодіяти з декількома користувацькими (конфігурація мультінітевого сервера), економлячи системні ресурси.

Фонові процеси використовуються для виконання різноманітних завдань СУРБД Oracle. Ці завдання варіюються від взаємодії з екземпляром Oracle до запису брудних блоків на диск. Далі представлено дев’ять фонових процесів Oracle:



  • DBWR (DataBase Writer) – відповідальний за запис брудних блоків з блокових буферів БД на диск. Коли транзакція змінює інформацію в блоці даних, цей блок даних не зобов’язаний бути негайно записаний на диск. Отже, DBWR може записувати дані на диск способом більш ефективним, ніж запис всіх змін окремо. DBWR зазвичай записує дані тоді, коли вони вже потрібні для читання. Записуються також ті дані, які були недавно використані. Для систем з асинхронним введенням / виведенням достатньо одного процесу DBWR. Для інших систем можна значно збільшити продуктивність, створивши кілька процесів DBWR.

  • LGWR (LoG Writer) – записує дані з журнального буфера в журнал змін.

  • CKPT (ChecK PoinT) – дає сигнал процесам DBWR про необхідність виконання контрольної точки і оновлення всіх файлів даних і керуючих файлів. Контрольна точка – це подія, коли всі змінені буфери БД записуються на диск. CKPT – це не обов’язковий процес. Якщо процес CKPT не запущений, то його роботу приймає на себе LGWR.

  • PMON (Process MONitor) – використовується для підтримки інших процесів і перезапуску передчасно загиблих 🙂 Також PMON очищає невживані області буферів і звільняє ті ресурси, які можуть бути ще зайняті. Відповідальний за перезапуск всіх завислих процесів і диспетчерів.

  • SMON (System MONitor) – виконує відновлення екземпляра при його запуску. Це включає очищення тимчасових сегментів і відновлення незавершених транзакцій. А також дефрагментує БД.

  • RECO (RECOvery) – очищає незавершені транзакції в розподіленій БД. Виконує фіксацію або відкіт спірних транзакцій.

  • ARCH (ARCHiver) – копіює файли журналу змін при їх заповненні. ARCH активний тільки в тому випадку, якщо СУРБД працює в режимі ARCHIVELOG. Якщо система не працює в цьому режимі, то можливі ситуації, в яких не вдасться відновити систему після збою. В деяких випадках все ж можна працювати і в режимі NOARCHIVELOG.

  • LCKn (Parallel Server LoCK) – до десяти процесів (де n – від 0 до 9) можуть використовуватися при роботі сервера в паралельному режимі. Виконують функції межекземплярной блокування.

  • Dnnn (Dispatcher) – при роботі сервера в мультінітевом режимі, то існує хоча б один диспетчерський процес, відповідальний за кожен протокол взаємозв’язку. Диспетчерські процеси організовують взаємодію між призначеними для користувача і розділяються серверними процесами.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*