В этой статье я постараюсь дать максимум инфы про базы данных. Я покажу, как они создаются, какими свойствами они обладают, как создавать файлы и журналы транзакций для базы данных. Всё это, читай в этой статье :).
Как хранятся данные в SQL Server
Очень важно знать, как SQL Server хранит данные, чтобы во время создании базы ты мог подсчитать необходимое дисковое пространство для хранения данных и журнала транзакций.
Вот несколько правил хранения данных:
Данные хранятся в файлах с расширением mdf или ndf. Журналы транзакций хранятся в файлах с расширением ldf.
Все базы данных имею хотя бы один главный файл mdf и хотя бы один журнал транзакций. База данных может иметь вторичный файл ndf.
Когда ты создаёшь новую базу данных, в неё копируется содержимое базы model, откуда копируется все, включая системные файлы.
Данные хранятся блоками по 8 кило. База данных может хранить 128 таких страниц в 1 мегабайте.
Максимальная длинна одной строки не может превышать 8060 байт.
Журналы транзакций хранят информацию, необходимую для восстановления данных после сбоя.
Транзакция – одна или несколько команд Transact-SQL. SQL – server работает по принципу – транзакция должна быть выполнена полностью, или не выполнена совсем. Если какая-то транзакция не выполнена полностью, то происходит откат и все действия транзакции отменяются.
SQL Server может работать в двух режимах: autocommit mode и implict commit. В первом режиме от запроса не требуется обязательного присутствия завершения транзакции (Commit Transaction). Во втором режиме, транзакция не будет выполнена без Commit Transaction. Ты можешь определять начало и конец транзакции в Transact-SQL с помощью команд Begin Transaction и Commit Transaction.
Когда происходят какие-то изменения, они записываются в журнал транзакций. Это происходит следующим образом:
Приложение производит модификацию данных.
Когда модификация выполнена, изменённые данные загружаются в память (буферизация данных), если это не было сделано раньше.
Каждая команда изменения данных записывается в журнал как выполненная. Изменения всегда записываются в журнал раньше, чем изменения произойдут в базе.
Если произошла системная ошибка, с помощью журнала транзакций все законченные транзакции выполняются, а незаконченные откатываются.
Создание базы данных.
Для создания базы данных может использоваться SQL Server Enterprise Manager или оператор CREATE DATABASE из Transact SQL.
Когда ты создаёшь базу данных:
Создаются файлы данных журнал транзакций для базы данных.
Требуется, чтобы владелец базы и тот кто её создаёт имел права на использование базы данных master, потому что информация о всех базах данных записывается в таблицы sysdatabases и sysaltfiles в базе master.
Рис 1. Создание новой базы.
SQL Server позволяет тебе указывать имя, свойства и расположение файлов создаваемой базы данных.
SQL Server копирует базу model для инициализации базы и метаданных. Все параметры и настройки model копируются в новую базу.
Создадим новую базу данных. Для этого запусти Enterprise Manager и раскрой дерево, пока не появятся параметры сервера. Выдели пункт "Database" и щёлкни правой кнопкой. В появившемся меню выбери пукт "New Dataase" (рисунок 1).
Если у тебя есть соответствующие права, то перед тобой откроется окно создания новой базы (рисунок 2).
Рис 2. Свойства новой базы
Ну давай рассмотрим, что здесь есть:
Name-имя базы данных.
Collation name - язык по умолчанию. В SQL Server 2000 ты можешь назначать разные языковые параметры даже отдельной колонке. Если язык не назначан, то будет использоватся тот, что указан здесь.
Создадим базу с именем TestDB , для этого в поле "name" введи TestDB. Языковые параметры не меняй. Теперь переходи на следующую закладку "Data Files". Перед тобой откроется окно, как на рисунке 3.
Рис 3. Файлы данных.
Что нам доступно здесь? Сверху окна находится список файлов базы данных (Database files). В этом списке уже есть один файл, который создаётся овтоматически. Его имя состоит из имени базы данных (TestDB) и приставки "_Data". В нашем случае получается, что имя файла по умолчанию будет TestDB_Data. Ты можешь изменить имя файла и его расположение. Основной параметр - Initial Size (начальный размер). Постарайся задать реальное значение. Если твоя база будет быстро расти, то задай здесь максимальное возможное значение.
Ты можешь добавлять сюда дополнительные файлы. Для этого введи имя в пустую строку под уже существующим файлом. Например, ты можешь расположить один файл на одном физическом диске, а другой файл на другом физическом диске. Это позволит тебе увеличить скорость работы базы, потому что SQL Server будет писать данные равномерна на оба диска. Этим ты распаралеливаешь операции записи.
Внизу окна расположены параметры приращения файла. По умолчанию база находится в режиме автоматического увеличения размера базы данных (выделен флажок "Automatically grow file"). Это значит, что размер файла базы данных будет увеличиватся автоматически. Microsoft рекомендует использовать ручное увеличение размера фалов. Автоматический режим рекомендуется использовать только если данные увеличиваются очень редко и незначительно.
Приращение файлов базы данных ты можешь указать двумя переключателями:
In megabates - в мегабайтах.
By percent - в процентах.
Если твоя база увеличивается очень быстро, то желательно использовать максимальное значение приращения файлов. Если ты поставишь слишком маленькое значение приращения, то процесс увеличения файла будет запускатся слишком часто и этим будет нагружать систему, и данные базы будут разброманы по всему диску. Это увеличивает фрагментацию данных и уменьшает скорость её работы.
Ещё тебе доступен здесь параметр "максимальный размер файла" (Maximum file size). По умолчанию файлы не имеют предела (Unrestricted file grow), и могут увеличиватся безконечно.
Следующая закладка - Transaction Log позволяет тебе настроить параметры журнала транзакций.
Рис 4. Файлы журналов транзакций.
Окно настройки журнала очень похоже на окно настройки файлов базы данных. Здесь те же настройки и параметры. Я не буду повторятся, а только дам тебе один совет - храни файл журнала на отдельном диске. Это позволит тебе увеличит производительность и надёжность системы.
Нажми ОК. В списке Databases появится новый пункт. Выдели его и щёлкни правой кнопкой мыши. В появившемся меню выбери пункт "свойства" (Properties). Появится то же самое окно, только здесь уже будет немного больше закладок.
Закладка Filegroups - здесь ты можешь добавлять файловые группы. По умолчанию здесь уже находится одна группа - PRIMARY. Каждый файл базы данных должен относится к одной из файловых групп. Так ты можешь групировать файлы базы данных.
Закладка Options - Здесь ты настраиваешь параметры доступа, параметры восстановления и настройки базы базы данных.
Закладка Permissions - На этой закладке ты указываешь разрешения на доступ к базе данных. Каждому пользователю ты можешь указать его права на работу с базой.
Если ты хочешь изменить размер файла или журнала базы данных вручную, то перейди на закладку Data Files (Transaction Log, если ты хочешь увеличить файл журнала) и в списке файлов ты увидишь параметр "Space Allocated" (занимаемое файлом место). Этот параметр находится на том месте, где при создании базы был параметр "Initial Size").
Немного позже мы познакомимся подробнее с параметрыми этих закладок. А на сегодня хватит.