У нас: 141825 рефератів
Щойно додані Реферати
Тор 100
Скористайтеся пошуком, наприклад
Реферат
Грубий пошук
Точний пошук
Вхід в абонемент
Курсова робота
Дипломна робота
Магістерська робота
Реферат
Контрольні роботи
Реферат
-
СУБД
32
звичної shared, використовується, коли услід йде оператор update, заснований на прочитаних значеннях, щоб заборонити update з інших транзакцій; paglock примушує сервер за будь-яких умов використовувати блокування рівня сторінки; tablock примусово блокує таблицю (shared); tablockx примусово блокує таблицю #@:. Проглядання поточних блокувань виконується за допомогою береженої процедури sp_lock або через включення прапора трасування 1200 на клієнта: dbcc traceon #@;. Також корисним є прапори 1204 і 1205, які видають інформацію про ситуації взаємного блокування #@<. MS SQL Server володіє можливістю автоматичного виявлення deadlocks як циклів в ланцюжку блокувань. Він знаходить перший процес, який міг би розірвати цикл, вбиває його і відкатує всі транзакції цього процесу, що знаходилися у стадії виконання. Як правило, ним виявляється той самий процес, який запитав блокування, що послужило причиною зациклення. Після цього сервер генерує повідомлення про помилку 1205. Якщо клієнтський додаток має обробник помилок, що відловлює помилку 1205, то воно може зробити відповідні дії по виправленню ситуації, і кінцевий користувач, швидше за все, навіть не взнає, що мало місце взаємне блокування. Надійність зберігання інформації Тиражування Наявність розвиненого механізму тиражування в будь-якій серйозній системі управління базами даних обуславливается необхідністю наближення даних до місць їх безпосереднього споживання, що є особливо важливим чинником при побудові вітрин даних в системах ухвалення рішень, розвантаження додатків від надмірних функцій читання/пошуку при створенні звітів і т.д. Створення розподілених додатків з використанням засобів тиражування позитивно позначається на відносній автономії сайтів, підвищенні масштабованості і продуктивності. Традиційно в побудові розподілених систем даних існують два основні підходи. Один з них заснований на щільній цілісності даних (loose consistency) і розглядався нами в пункті, присвяченому MS Distributed Transaction Coordinator. Протокол двофазної фіксації гарантує ідентичність даних у будь-який момент часу на всіх вузлах мережі, проте необхідно мати у вигляді, що цей підхід вимагає наявності високошвидкісних каналів передачі даних і постійної доступності кожного вузла. Інший підхід, заснований на слабкій цілісності (loose consistency), допускає, взагалі кажучи, деякий часовий інтервал між внесенням змін в оригінал і їх віддзеркаленням в образі. Додатки, засновані на принципі слабкої цілісності, є значно менш чутливими до доступності вузлів, а також пропускній спроможності і надійності каналів передачі даних. Тиражування в MS SQL Server побудовано на використовуванні саме другого підходу. Основними дійовими особами в процесі тиражування служать видавець (publisher), дистриб'ютор (distributor) і підписчик (subscriber). Оскільки тиражування є невід'ємною складовою частиною MS SQL Server, останній може виступати в ролі кожного з них. Конфігурація і управління кожною роллю здійснюється з SQL Enterprise Manager через вже знайомі нам SQL-DMO або за допомогою операторів і бережених процедур мови Transact-SQL. Одиницею реплікації в плані розповсюдження і підписки є публікація (publication). Публікація складається з однієї або декількох статі (articles). Статтею публікації називається окрема таблиця або її вертикальний и/или горизонтальний фрагмент. Вертикальна фрагментація здійснюється вибором відповідних полів таблиці, горизонтальне - за допомогою умови where або спеціальної процедури горизонтальної фільтрації (CREATE PROCEDURE - FOR REPLICATION). Таблиця зобов'язана мати первинний ключ. Як тільки на видавці створені статті, всі тиражовані об'єкти наголошуються спеціальною ознакою в одній з полів системної таблиці sysobjects. Окрім цього, в тиражованій базі ведеться ще три довідкові таблиці. Syspublications в окремому рядку береже інформацію про кожну нову публікацію. Вона зв'язана відношенням один-ко-багато чим з таблицею sysarticles, що містить інформацію про статті і їх приналежністю публікаціям. Нарешті, остання, у свою чергу, зв'язана відношенням один-ко-багато чим з таблицею syssubscriptions, де міститься інформація про те, яким підписчикам адресована кожна стаття. Тиражування в MS SQL Server засновано на журналі транзакцій (log-based). На кожну тиражовану базу даних на дистриб'юторі запускається процес під назвою log reader, який читає журнал транзакцій на видавці, вибирає звідти всі завершені транзакції, помічені до тиражування і передає їх дистриб'ютору, на якого з тієї миті покладається вся подальша відповідальність по доведенню цих транзакцій до підписчика. Видавець, таким чином, вивільняється від всякого турбування по розповсюдженню транзакцій і не витрачає на це свої ресурси. Кожний підписчик обслуговується окремим потоком дистриб'ютора. Клієнт, першим sp_replcmds, що запустив, на публікованій базі даних, розглядається нею як log reader, вся решта спроб це зробити викличуть повідомлення про помилку. Процедура sp_repltrans дозволяє одержати список завершених транзакцій бази даних, ще не переданих дистриб'ютору (ідентифікатор ряду, сторінка і відмітка часу надходження). sp_replcmds містить ще інформацію про самі команди, пов'язані з цією транзакцією, і до якої статті публікації вона відноситься. Log reader читає ці операції, визначає відповідні їм sql-команди і пише їх в базу даних розповсюдження #@: на дистриб'юторі. База даних розповсюдження має таблиці MSjobs, що містить інформацію про транзакції для тиражування, зв'язану як один-ко-багато чим з таблицею MSjob_commands, яка розбиває кожну транзакцію на окремі команди. Кожна команда повинна бути передана певному підписчику, що визначається в таблиці MSsubscriber_jobs. На видавці прочитані транзакції наголошуються як передані на розповсюдження, і лише після цього вони можуть бути звідти знищені при резервному копіюванні журналу транзакцій #@;. Наприклад, процедура sp_repldone, визначаючи транзакцію в журналі бази видавця по ряду і сторінці, позначає її як поширену. Процес синхронізації #@<, один на публікацію, всякий раз при появі нового підписчика створює миттєвий знімок #@= даних на видавці, що підлягають тиражуванню цьому підписчику. При цьому створюються файли схем даних і, власне,
Сторінки:
1
2
3
4
5
6
7
8
9
10