- Для тих, хто управляє SQL-сервером, але не розрізняє таблицю і індекс
- Початок початків
- Основи SQL Server
Для тих, хто управляє SQL-сервером, але не розрізняє таблицю і індекс
Далеко не завжди на підприємствах середніх розмірів існують адміністратори баз даних (DBA). В таких організаціях роботи з управління та обслуговування Microsoft SQL Server лягають на плечі адміністратора серверів Windows. Адміністрування SQL Server може викликати певні труднощі у тих, хто недостатньо добре розбирається в цьому продукті. Тим, хто не знає, з чого почати вивчення SQL Server, дуже рекомендую звернути увагу на цю статтю. У ній я познайомлю читачів з основами цього продукту, а знання основ допоможе ефективно управляти SQL Server в підрозділі або на малому підприємстві. Стаття буде складатися з двох частин; в першій міститься важлива початкова інформація і пояснюється призначення основних компонентів SQL Server. У другій частині, яка буде опублікована в наступному випуску Windows IT Pro, ми розглянемо найважливіші засоби управління SQL Server і виділимо опорну точку, з якої можна почати формувати власну стратегію забезпечення безпеки і створення резервних копій бази даних SQL Server.
Початок початків
Першим кроком в установці системи з SQL Server є виділення необхідної кількості пам'яті. Системи баз даних вимогливі до розміру оперативної пам'яті, і SQL Server не є винятком. Для систем, що обслуговують підрозділи всередині організації, абсолютний мінімум пам'яті повинен складати 512 Мбайт. Найбільш великим системам потрібно відповідно більше пам'яті. З огляду на сьогоднішні ціни на оперативну пам'ять, можна вільно додати 1 або 2 Гбайт в систему з SQL Server за порівняно невеликі гроші. Інвестиції в додаткову пам'ять вирішать проблеми продуктивності, яка може бути оцінена в термінах скорочення часу вирішення проблем і продуктивності кінцевих користувачів.
Розробники Microsoft зробили SQL Server 2000 легким в установці і запуску. Однак я не рекомендую вибирати найпростіший шлях - установки за замовчуванням. Наприклад, якщо під час встановлення окремого примірника (instance) SQL Server вибрати установки за замовчуванням, в результаті отримаємо систему, продуктивність якої нижче оптимальної. За замовчуванням програма установки SQL Server створює файли бази даних і файли журналу на одному і тому ж диску. Щоб домогтися підвищення продуктивності SQL Server, краще розташувати ці файли на різних дисках. Таким чином, перше, що необхідно зробити при установці, це переконатися в тому, що SQL Server має достатню кількість дисків. Як мінімум, потрібно мати три диска. Один для операційної системи, інший - для файлів даних і третій - для файлу журналів. На рис. 1 показана типова конфігурація дисків для малих і середньомасштабних установок SQL Server. У цьому прикладі приведена система, що складається з восьми дисків. Тут операційна система, файли даних і файли журналів розташовуються на різних дисках. Для забезпечення відмовостійкості операційна система і файли журналу використовують віддзеркалення. Файли даних використовують чергування даних по RAID 5 для забезпечення ефективності роботи сховища. Для максимального захисту даних замість RAID 5 можна використовувати RAID 1 для дисків з даними. Однак це рішення обходиться істотно дорожче в порівнянні з RAID 5, оскільки віддзеркалення вимагає вдвічі більшого дискового простору в порівнянні з обсягом даних, що зберігаються. Дискові приводи SCSI перевершують по продуктивності і швидкості приводи IDE, тому використання таких дисків позитивно позначається на продуктивності всієї системи.
Для кращої восстанавливаемости системи необхідно створювати дзеркала файли журналу. Популярна конфігурація для установки SQL сервера наступна: RAID 1 для дискових томів, що містять файли журналів, і RAID 5 для томів, що містять файли даних. Можливо, ви захочете мати ще один додатковий диск, на якому будете виконувати трасування і інші діагностичні операції. Нарешті, з міркувань забезпечення безпеки і прийнятною продуктивності краще встановити SQL Server на виділений сервер, а не на контролер домену.
Іншим важливим рішенням при установці SQL Server є тип авторизацію. SQL Server підтримує два типи авторизації: через Windows (Windows authentication) і авторизацію вбудованими засобами SQL Server (mixed-mode). При авторизації через Windows SQL Server перевіряє вхідні обліковий запис і пароль, застосовуючи для користувача обліковий запис і пароль Windows. При авторизації через SQL Server необхідно створювати і підтримувати окремий набір облікових записів всередині SQL Server. Хоча кожен тип має свої переваги і недоліки, зазвичай по можливості використовують авторизацію Windows. Авторизація через Windows дозволяє утримувати тільки один набір паролів і облікових записів, а додатки, які підключаються до SQL Server, не потребують під час з'єднання у введенні додаткових облікових даних і паролів. Windows забезпечує перевірку достовірності облікових записів і паролів і надає відповідні дозволи. Нарешті, слід переконатися, що для облікового запису користувача SA створений складний пароль. Багато з шкідливих програм спеціально розроблені в розрахунку на те, що користувач SA не має пароля. Не можна залишати пароль SA порожнім або використовувати легко вгадуються значення типу SA або password.
Основи SQL Server
Можливо, процес управління SQL Server 2000 здасться вам не такою вже складною, коли ви зрозумієте, як працює продукт. SQL Server після установки містить чотири системні бази даних (master, model, msdb і tempdb) і дві призначені для користувача бази. База master, напевно, є найважливішою з системних баз. Вона включає таблиці, які описують всі інші бази в системі і містять інформацію про облікові записи і параметрах безпеки. База model містить шаблони для всіх нових баз. Всі бази, що створюються на сервері, успадковують всі установки з бази model. База msdb використовується SQL Server Agent для зберігання інформації про розклад завдань. У ній також зберігається інформація про резервне копіювання та реплікації. База tempdb зберігає тимчасові робочі таблиці. Об'єкти в базі tempdb присутні до тих пір, поки користувач, який створив їх, зареєстрований в системі.
Дві призначені для користувача бази, Pubs і Northwind, задіяні в якості прикладів. База Pubs - база, що структурує інформацію у вигляді автор-публікація, містить приклади інформації про список авторів, їх книгах і видавців. База Northwind подібна навчальній базі з тією ж назвою в Microsoft Access. Вона містить приклади інформаційних форм про продажі фіктивної компанії Northwind Traders. Хоча Northwind не так велика за розміром, як звичайні бази SQL, вона більше, ніж іграшкова база Pubs.
Якщо в обов'язки адміністратора входить тільки управління SQL Server, а не створення нових баз, то в такому випадку немає особливої необхідності вникати в деталі створення об'єктів баз даних. Зазвичай їх формують розробники в IT-департаменті або постачальники додатків. Однак основні поняття про об'єкти ядра бази даних, базах даних, таблицях, індексах, представлених, збережених процедурах і тригерах можуть допомогти при вирішенні виникаючих проблем.
Бази даних. Бази даних містять інформацію, яку використовують програми. База SQL Server включає набір таблиць, уявлень, індексів і збережених процедур. Кожне з додатків зазвичай розроблено так, що воно з'єднується зі своєю базою. Виділений SQL Server здатний підтримувати безліч баз даних (32 767 баз на сервер). База даних SQL Server може розростатися до дуже великих розмірів. Максимальний розмір бази становить 1,048,516 Tбайт. Кожна база повинна складатися, як мінімум, з двох файлів - файлу даних і файлу журналу. Файл даних містить таблиці, рядки і стовпці інформації. Файл журналу містить всі транзакційні операції (INSERT, UPDATE, DELETE), які виконували користувачі або програми при роботі з базою. Як уже згадувалося, щоб гарантувати оптимальну продуктивність, ніколи не слід розташовувати файли даних і журналу на одному і тому ж диску працюючої системи. Аналогічно не рекомендується розташовувати файли даних і журналу на стислих або шифрованих дисках.
Під час створення бази даних SQL Server використовує копію бази model як шаблон для нової бази. Ви можете встановити максимальний обсяг, до якого може розростатися база в мегабайтах або відсотках від її розміру. Для більшості установок краще вибрати режим auto-grow (автоматичне розширення), який дозволяє базі при необхідності розширюватися автоматично. Якщо адміністратор добре розбирається в особливостях наявних додатків, то приблизно повинен представляти очікуване зростання і розміри бази. Тим самим можна уникнути автоматичного розширення бази під час її активного використання, що може негативно позначитися на продуктивності всієї системи.
Таблиці. Таблиця - основна форма зберігання інформації в реляційних базах даних. Таблиці містять різні набори інформації. По суті, наприклад, кожен рядок в таблиці покупців буде містити всю відповідну інформацію для вибраного покупця. Зазвичай така інформація включає ідентифікатор покупця (customer ID), ім'я, адреса та контактні дані. Кожен окремий фрагмент такої інформації (наприклад, номер покупця) міститься у відповідному стовпці. Кожен стовпець може зберігати дані тільки заданого типу. Наприклад, перший стовпець в таблиці покупців може бути названий CustomerID. Тип містяться в ньому даних буде визначено як int; це буде означати, що в стовпці зберігаються тільки цілочисельні дані. Другий стовпець з ім'ям CustomerName може бути визначений як varchar (40) - значить, в стовпці зберігаються текстові дані довгою до 40 символів.
Індекси інфляції. Основна причина використання індексів - прискорення виконання запитів. Індекси - це один з обраних стовпців таблиці. SQL Server використовує два типи індексів: кластерні і некластерние. Кластерний індекс визначає порядок даних в таблиці. Коли використовується кластерний індекс, SQL Server впорядковує рядки в базовій таблиці відповідно до порядком, визначеним кластерними індексами. Кожна таблиця може мати тільки один кластерний індекс. Некластерние індекси не змінюють порядок рядків базової таблиці, вони просто надають альтернативний оптимізований шлях доступу до даних.
Видалити або додати індекси можна без втручання в загальну архітектуру бази даних. Хоча першочерговою метою використання індексу є збільшення швидкості доступу до даних, використання надмірної кількості індексів може дати протилежний результат. Коли індекс створений, SQL Server повинен обслуговувати його (т. Е. Підтримувати в актуальному стані), оскільки дані додаються в таблиці бази. Процес, що забезпечує роботу SQL Server, повинен не тільки додавати дані в таблицю, а й оновлювати існуючі індекси одночасно з новими даними. Природно, чим більше індексів ви створите, тим довше буде проходити процес їх поновлення. Надмірна кількість індексів може негативно вплинути на продуктивність всієї системи. Одним із загальних методів, які можуть поліпшити виконання пакетних завдань, є наступний. Спочатку пишеться сценарій, що видаляє перед виконанням завдання все індекси. Потім пишеться інший сценарій, який буде відновлювати індекси після закінчення процедури. У SQL Server 2000 є майстер налаштування індексів (Index Tuning Wizard), який аналізує запити і пропонує індекси, здатні поліпшити продуктивність цих запитів.
Уявлення. Подання подібно віртуальної таблиці або збереженого запиту. Дані, які доступні через це уявлення, не зберігаються в вигляді окремого об'єкта бази даних. Замість цього користувач створює уявлення за допомогою команди SQL SELECT. Коли запускається відповідне подання, користувач бачить результати роботи функції SELECT. Подання зазвичай застосовується для обмеження доступу користувачів до певних стовпчиках або рядках в одній або більше таблицях.
Збережені процедури і тригери. Збережені процедури створюються з використанням коду на мові T-SQL. Збережені процедури є основою більшості додатків баз даних. Тригер - це спеціальний тип збереженої процедури, яка може бути підключена до таблиці. Оскільки збережені процедури скомпільовані, вони забезпечують найкращу продуктивність у порівнянні з динамічно виконуваними процедурами SQL (код SQL, який програма генерує перед виконанням команди SQL). Коли динамічний код SQL виконується на сервері, процес, керуючий роботою SQL Server, спочатку аналізує і перевіряє команду, гарантуючи тим самим відсутність помилок в синтаксисі. Потім створюється план, за яким буде здійснюватися доступ до даних. Збережені процедури дозволяють виконати цю роботу на етапі створення даної процедури, що, а не динамічно, в процесі роботи програми. Це дає збереженим процедурам значну перевагу в продуктивності перед динамічним виконанням коду SQL при роботі програми. SQL Server має функцію кешування запитів. Він може кешувати окремі фрагменти динамічного коду SQL на певний час. Однак кешування не дає ніяких гарантій того, що необхідний динамічний код все ще буде присутній в кеші при наступному його використанні.
Подібно збереженим процедурам, код T-SQL використовується і для створення тригерів. На відміну від збережених процедур, які можуть виконуватися будь-якими користувачами, що мають необхідні права на цю процедуру, що зберігається, тригери запускаються виключно самою базою даних. Вони зв'язуються з таблицями за допомогою процедури CREATE TRIGGER. Крім того, вони запускаються в той момент, коли над таблицею виробляються певні дії, такі як INSERT, UPDATE або DELETE. Адміністратори баз даних зазвичай використовують тригери для забезпечення цілісності посилань. У вас є можливість виконати послідовні операції видалення DELETE в таблицях, на які посилаються рядки посилається таблиці. Код тригера запускається тільки після перевірки SQL Server цілісності, включаючи перевірки цілісності посилань.
Тепер саме час зупинитися і підвести деякі підсумки. Зараз ви повинні знати критерії, за якими вибирають необхідний обсяг оперативної пам'яті, і як краще створити дискову підсистему SQL Server. Необхідно також розуміти призначення основних компонентів SQL Server. У другій частині статті я більш детально зупинюсь на внутрішній устрій SQL Server для того, щоб полегшити вашу роботу за сумісництвом в якості адміністратора бази даних.
Майкл Оті - Старший технічний редактор Windows & .NET Magazine і президент компанії TECA. З ним можна зв'язатися за адресою: [email protected]