У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Реферат - СУБД
32
клієнта у нас, таким чином, залишаються інша (як правило, все-таки менша) частина бізнес-логіки додатку і призначений для користувача інтерфейс. Виходячи зі всього сказаного вище про значення і ціну інформації в сучасному світі не буде великим перебільшенням сказати, що в серверах баз даних утілилися кращі досягнення в області інформаційних технологій. Microsoft SQL Server 6.5 є одним з серверів баз даних, що найбільш стрімко розвиваються, на ринку корпоративних СУБД. Зрозуміло, в рамках даної статті неможливо детально зупинитися на характеристиках цього продукту в тій мірі, в якій це хотілося б зробити і який він, безумовно, заслуговує. Тому ми обмежимо нашу задачу розглядом хоча б деяких базових можливостей Microsoft SQL Server 6.5 стосовно перерахованих вище функцій серверу баз даних. Архітектура MS SQL Server 6.5 Продуктивність багатопотокове ядро і інтеграція із службами планування потоків Windows NT забезпечує високу продуктивність MS SQL Server при обробці OLTP- і DSS-запитів, що особливо помітне при одночасній роботі декількох сотень користувачів. В опублікованих результатах по тестуванню MS SQL Server 6.5 на максимальне число одночасно працюючих користувачів наводиться цифра 3500, хоча відомі реально працюючі додатки, де навантаження доходило до 5000 одночасних призначених для користувача з'єднань. За період з жовтня 1995 р. по грудень 1996 р. продуктивність MS SQL Server, зміряна по тестах TPC-C (див. http://www.tpc.org), виросла з 2454 до 7521 транзакції в хвилину, тобто більш ніж в 3 рази. Для порівняння помітимо, що щоденний об'єм транзакцій в розрахунковій системі VISA складає від 10 до 40 млн. Темп 7,5 тис. транзакцій в хвилину означає, що один MS SQL Server здатний при режимі роботи 24х7 обслужити небагато чим менше 11 млн. транзакцій в доба. Існує ще один параметр, тісно пов'язаний з продуктивністю, який, не будучи в строгому значенні слова технічним, дуже популярний на Заході при оцінці можливостей того або іншого серверу баз даних, оскільки від нього істотно залежить вартість володіння продуктом (cost ownership). Йдеться про питому ціну за транзакцію в хвилину, іншими словами, скільки доведеться заплатити за досягнення такої швидкості обробки запиту. За той же самий період, протягом якого ми розглядали зростання продуктивності, показник "ціна/продуктивність" знизився з 242 до 65 долл. за транзакцію в хвилину, що говорить про розумну вартість систем на базі MS SQL Server при високих вимогах до швидкості обробки.

Рівень блокування може розповсюджуватися на: ??запис (для операцій insert); ??сторінку - 2-кілобайтний фрагмент даних або індексів; ??розширення (extent) - 8 послідовних сторінок, використовується при розміщенні або вивільняється сторінок (наприклад, в командах create/drop або коли операція вставки insert вимагає виділення нових сторінок???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????її можна задіювати командою sp_tableoption <Имя таблиці або шаблон>, 'insert row lock', 'true'. Існує діалектична суперечність, з якою напевно стикався кожний адміністратор бази даних або розробник. З одного боку, хочеться зменшити до мінімуму вірогідність зіткнення інтересів користувачів при доступі до одних і тих же ресурсів і тому блокувати все на якомога більш детальному рівні. З іншою - дуже не хочеться перенавантажувати менеджер блокувань, який фіксує інформацію про те, хто наклав блокування, якого типу, хто чекає, поки вона звільниться і т.д. Наприклад, в MS SQL Server 6.5 кожне блокування обходиться в 32 байти. Для дозволу цієї суперечності сервер уміє автоматично підвищувати рівень блокування у випадку, якщо блокувань попереднього рівня деталізації стає дуже багато (lock escalation). "Дуже багато" - це LE Threshold Maximum в настройках конфігурації серверу, тобто максимальна порогова величина числа сторінкових блокувань, досягши якої відбувається ескалація до рівня таблиці. За умовчанням вона рівна 200. Для цих же цілей використовується настройка LE Threshold Percentage - у відносному виразі до розміру таблиці (але не менше ніж LE Threshold Minimum, що корисне для невеликих таблиць). В перспективі можлива зворотна стратегія динамічної де ескалації рівня блокування, коли блокується явно більший фрагмент даних, чим потрібен, але, як тільки з'являється транзакція, що конкурує за дані усередині даного фрагмента, рівень першої транзакції буде автоматично зменшений. Управління рівнем ізоляції транзакцій впродовж всього з'єднання (призначеної для користувача сесії) здійснюється за допомогою установки set transaction isolation level <уровень изоляции>, де рівень ізоляції може приймати значення: uncommitted відповідає рівню ізоляції 0 стандарту ANSI, тобто просто забороняє різним транзакціям змінювати одні і ті ж дані в один і той же час, але допускає брудне і не повторюється читання і фантоми; committed (встановлюється за умовчанням) відповідає рівню ізоляції 1 стандарту ANSI, тобто запобігає брудному читанню; repeatable read або serializable відповідає рівню 3 за стандартом ANSI - запобігає брудному читанню, а також гарантує, що два оператори select в різних місцях однієї транзакції повертатимуть однаковий результат, тобто виключає читання і фантоми, що не повторюється. Останній, найнадійніший рівень захисту транзакцій є самим неоптимальним з погляду швидкодії, оскільки за все доводиться платити. Для більш гнучкого управління рівнем ізоляції для кожного оператора select може явно задаватися опція настройки; nolock те ж, що read uncommitted, - дає можливість читання брудних (ще не зафіксованих) даних, яка перекриває аналогічні параметри конфігурації призначеної для користувача сесії. В операторі select можна також звести наклеп тривалості блокування даних; holdlock інструктує сервер тримати блокування до завершення транзакції (за умовчанням блокування знімаються зразу ж після прочитання необхідних даних; Тип і рівень блокування: updlock примушує застосувати блокування update замість


Сторінки: 1 2 3 4 5 6 7 8 9 10