Главная страница
Навигация по странице:

  • Физическая организация удаленных баз данных

  • Страницы и экстенты Основная единица хранения данных в SQL Server — страница

  • Тип страницы Содержимое

  • Смешанные экстенты

  • Выявление "рваных" страниц

  • Использование файлов и групп файлов

  • Управление пространством

  • цвац. 6_Лекции_РЭУБД_6_Физическая_организация. Курс лекций Разработка и эксплуатация удаленных баз данных


    Скачать 135.5 Kb.
    НазваниеКурс лекций Разработка и эксплуатация удаленных баз данных
    Дата26.10.2022
    Размер135.5 Kb.
    Формат файлаdoc
    Имя файла6_Лекции_РЭУБД_6_Физическая_организация.doc
    ТипКурс лекций
    #755054



    Курс лекций «Разработка и эксплуатация удаленных баз данных»

    Раздел 1. Теория проектирования удаленных баз данных

      1. Введение в работу с удаленными базами данных
        Физическая организация удаленных баз данных

    План лекции:
    1. Физическая организация базы данных формата InterBase


    2. Физическая организация базы данных формата Microsoft SQL Server

    Физическое представление БД отображает способ расположения информации на машинных носителях.

    а) Физическая организация базы данных формата InterBase


    БД состоит из последовательности страниц, нумеруемых с нуля.

    Нулевая страница является служебной и содержит информацию, необходимую для соединения с БД.

    Размер страницы – 1 Кб (по умолчанию), а также 2, 4, 8 Кб – установлен при создании и может быть изменен при сохранении и восстановлении БД, поэтому размер страницы рекомендуется задавать равным размеру кластера диска. При этом учитывается длина записи и наличие BLOB-полей. Объем буфера ввода-вывода для операции чтения и записи определяется количеством страниц (75 по умолчанию). Если БД будет читаться чаще, объем следует увеличить.

    В InterBase поддерживается многоверсионная структура записей. При изменении записи создается новая версия, куда записывается, помимо данных, номер транзакции и указатель на предыдущую версию. Старая версия помечена как измененная, а её указатель на следующую версию содержит адрес вновь созданной версии. Каждая стартующая транзакция работает с измененной версией записи. При удалении записи она помечается как удаленная, а удаляется, когда с ней завершены все активные транзакции.

    При добавлении новой записи происходит компресация страницы за счет использования "дырок". Если суммарной "дырки" не хватает, то запись помещается на новую страницу. Выделение страниц не оптимизировано. На служебной странице хранятся номера всех свободных страниц.

    Многоверсионная структура записи и неоптимальное выделение страниц ведут к высокой фрагментации и замедлению работы с БД, поэтому периодически приходится выполнять дефрагментацию либо путем сохранения БД на диске с последующим восстановлением из резерва копий, либо путем автосборки "мусора".

    б) Физическая организация базы данных формата Microsoft SQL Server


    Страницы и экстенты

    Основная единица хранения данных в SQL Server — страница.

    Место на диске, предоставляемое для размещения файла данных (MDF- или NDF-файл) в базе данных, логически разделяется на страницы с непрерывным перечислением от 0 до n. Дисковые операции ввода-вывода выполняются на уровне страницы. А именно, SQL Server считывает или записывает целые страницы данных.

    В SQL Server 7.0 размер страницы вырос с 2 до 8 КБ.

    Это значит, что в одном мегабайте базы данных SQL Server содержится 128 страниц.

    В начале каждой страницы расположен заголовок (header) длиной 96 байт, используемый для хранения системной информации, такой как тип страницы, количество свободного пространства на странице и идентификатора объекта-владельца страницы.

    В файлах данных СУБД SQL Server определено 7 типов страниц.

    Тип страницы

    Содержимое

    Data

    Строки с данными всех типов, кроме text, ntext и image

    Index

    Индексы

    Log

    Записи журнала с информацией об изменении данных для использования при восстановлении

    Text/Image

    Данные типов text, ntext и image

    Global Allocation Map

    Информация о распределенных экстентах

    Page Free Space

    Информация о доступном на страницах свободном пространстве

    Index Allocation Map

    Информация об экстентах, используемых для таблиц или индексов

    Строки данных заносятся на страницу последовательно, сразу же после заголовка.

    Страницы данных содержат данные всех типов, за исключением text, ntext и image, которые хранятся на отдельных страницах.

    Таблица смещения строк начинается в конце страницы; каждая таблица смещения строк содержит одну запись для каждой строки на странице.

    Каждая запись регистрирует, насколько далеко от начала страницы находится первый байт строки.

    Записи в таблице смещения строк находятся в обратном порядке относительно последовательности строк на странице.



    В SQL Server 7.0 строки не могут переходить со страницы на страницу, и максимальный объем данных в одной строке составляет 8060 байт.

    Экстент — основная единица распределения пространства для таблиц и индексов. Один экстент состоит из 8 смежных страниц и имеет размер 64 КБ.

    Это значит, что в одном мегабайте базы данных SQL Server содержится 16 экстентов.

    Для обеспечения эффективного использования пространства SQL Server 7.0 может не распределять всего экстента целиком для таблицы, которая содержит небольшой объем данных.

    В SQL Server 7.0 существует два типа экстентов: однородные и смешанные.

    Однородный экстент имеет единственный объект-владелец, и все страницы экстента могут использоваться только этим объектом-владельцем.

    Смешанные экстенты могут находиться в общем пользовании у не более восьми объектов. Каждая из восьми страниц в экстенте может находиться во владении разных объектов.

    Смешанные экстенты, впервые появившиеся в SQL Server 7.0, прекрасно подходят для использования в небольших приложениях. В SQL Server пространство добавляется к таблице по одному экстенту.

    Это может привести к большому перерасходу пространства для маленьких таблиц, поскольку размер страницы увеличился до 8 Кб. Смешанные экстенты позволяют распределять для маленьких таблиц или индексов по одной странице. Только в том случае, если таблица или индекс занимают более восьми страниц, для них начинается распределение однородных экстентов. Смешанные экстенты разделяются между несколькими (до 8) объектами. Для новой таблицы или индекса выделяются страницы из смешанных экстентов. Когда размер таблицы или индекса достигает 8 страниц, он "переключается" на однородные экстенты.


    Выявление "рваных" страниц

    Выявление "рваных" страниц гарантирует поддержание целостности базы данных. Хотя размер страницы в SQL Server равен 8 КБ, Windows NT Server осуществляет операции ввода-вывода сегментами по 512 байт. Такое несоответствие порождает возможность того, что страница будет записана лишь частично — это может произойти при сбое электропитания или возникновении каких-либо других проблем в промежутке времени от того момента, когда записан первый 512-байтовый сегмент, до того, когда будет завершена запись всех 8 КБ.

    После того, как записан первый сегмент из 512 байт, может показаться, что страница уже обновлена, хотя на самом деле этого не произошло. (Временная отметка для страницы расположена в заголовке, который занимает первые 96 байт.) Существует несколько способов решения этой проблемы. Вы можете использовать устройства ввода-вывода с резервным питанием от батарей. Если у вас одна из таких систем — выявление "рваных" страниц необязательно.

    SQL Server выявляет незавершенные операции ввода-вывода путем формирования битовой маски, по одному биту для каждого сегмента страницы. Каждый раз при записи страницы этот бит изменяет свое состояние из первоначального (как он был записан на диске) на противоположное и записывается в заголовок страницы. Если при чтении страницы обнаруживается неверное состояние бита — это свидетельствует о том, что операция ввода-вывода не была завершена и страница "рваная". Такой механизм требует меньших затрат, чем подсчет контрольной суммы.

    Вы можете включить или отключить выявление "рваных" страниц, т.к. заголовок страницы помечается при изменении состояния битов. При включении и отключении выявления "рваных" страниц, состояние битов, которые были "переключены", проверяется и корректируется во время последующего чтения страниц.

    Файлы и группы файлов

    SQL Server 7.0 использует для хранения баз данных набор файлов операционной системы, при этом для каждой из них создается собственный файл.

    Несколько баз данных больше не могут находиться в одном файле. Существует несколько важных преимуществ такого упрощения: файлы могут разрастаться и сокращаться, управление пространством также стало проще.

    Все данные и объекты базы данных, такие как таблицы, хранимые процедуры, триггеры и представления, хранятся в следующих файлах.

    Файл

    Описание

    Первичный файл данных (Primary data file)

    Этот файл — отправная точка базы данных. Всякая база данных имеет только один первичный файл данных. Рекомендуемое расширение — .mdf.

    Вторичные файлы данных (Secondary data files)

    Эти файлы являются необязательными и могут хранить все данные и объекты, не вошедшие в первичный файл данных. Некоторые базы данных могут вообще не иметь вторичных файлов данных, а другие иметь множество таких файлов. Рекомендуемое расширение — .ndf.

    Файлы журнала (Log files)

    В этих файлах фиксируется вся информация о транзакциях, которая используется для восстановления базы данных. Каждая база данных имеет, по крайней мере, один файл журнала. Рекомендуемое расширение — .ldf.

    При создании базы данных все входящие в ее состав файлы "обнуляются" (заполняются нулями), чтобы стереть все данные, которые остались на диске от ранее удаленных файлов. Хотя это приводит к увеличению продолжительности создания БД, это избавляет Windows NT от необходимости очистки файлов при записи данных в них (поскольку они уже "обнулены") во время нормальной работы с базой данных, что повышает производительность системы.

    База данных состоит из одного или более файлов данных и одного или более файлов журнала. Файлы данных могут быть сгруппированы в определенные пользователем группы. Таблицы и индексы могут быть поставлены в соответствие различным группам файлов для управления размещением данных на физических дисках.

    Группа файлов — удобная единица администрирования, использование которой повышает его гибкость. При обслуживании больших баз данных, объемом в несколько терабайт резервное копирование всей базы невозможно произвести в приемлемые сроки независимо от скорости копирования. SQL Server 7.0 позволяет производить резервирование различных частей базы данных в ночное время по циклическому графику.

    "Продвинутые" пользователи могут с успехом использовать группы файлов для того, чтобы разместить индексы и таблицы определенным образом. SQL Server 7.0 может эффективно работать и без группировки файлов, и в большинстве систем нет необходимости определять пользовательские группы файлов. В этом случае по умолчанию в группу включаются все файлы, и SQL Server 7.0 может самостоятельно планировать эффективное распределение в пределах базы данных.

    Файлы журнала никогда не входят в группы, управление распределением пространства для них осуществляется отдельно от распределения пространства для данных.

    Использование файлов и групп файлов

    Использование файлов и групп файлов позволяет повысить производительность базы данных за счет распределения по различным дискам, контроллерам или RAID-массивам. Например, если в вашем компьютере установлено 4 диска, вы можете создать базу данных, состоящую из трех файлов данных и одного файла журнала, и каждый из них разместить на отдельном диске. При доступе к данным 4 магнитных головки смогут осуществлять чтение или запись одновременно, что повысит скорость выполнения этих операций.

    Кроме того, использование файлов и групп файлов позволяет лучше разместить данные, благодаря тому, что конкретная таблица может быть создана в определенной группе. Производительность в данном случае повышается за счет того, что все операции ввода-вывода для этой таблицы осуществляются с указанным диском. Например, интенсивно используемая таблица может находиться в определенном файле, который принадлежит к определенной группе, расположенной на определенном диске, а другая таблица, используемая реже — в другом файле, принадлежащем к другой группе, расположенной на втором диске.

    Вот несколько общих рекомендаций по использованию файлов и групп файлов:

    • Большинство баз данных хорошо работает с одним файлом данных и единственным файлом журнала.

    • Если вы планируете использовать несколько файлов, используйте первичный файл данных только для хранения системных таблиц и объектов. Создайте как минимум один вторичный файл для хранения пользовательских данных и объектов.

    • Для достижения максимальной производительности используйте для размещения файлов или групп файлов сколь возможно большее количество локальных физических дисков. Поместите объекты, интенсивно конкурирующие за дисковое пространство, в разных группах файлов.

    • Используйте группы файлов для размещения объектов на заданных физических дисках.

    • Размещайте таблицы, которые участвуют в запросах, предусматривающих слияние, в разных группах файлов. Это повысит производительность за счет параллельного поиска объединяемых данных.

    • Размещайте интенсивно используемые таблицы и соответствующие им некластеризованные индексы в разных группах файлов. Это повысит производительность, если файлы будут находиться на разных физических дисках.

    • Не размещайте файлы журнала на одном физическом устройстве с другими файлами и группами файлов.

    Управление пространством

    Средства SQL Server 7.0 во многом усовершенствованы в аспекте управления и распределения пространства. Например, структуры данных для управления отношениями страница-объект были спроектированы заново. Вместо связанных списков страниц теперь используются битовые карты, что является более "чистым" и простым решением, допускающим параллельное сканирование. Теперь каждый из файлов более "автономен", он содержит больше сведений о самом себе. Это очень полезно при копировании файлов базы данных или их пересылке по электронной почте.

    SQL Server 7.0 также оснащен более эффективной системой отслеживания пространства в таблицах. Произведенные усовершенствования позволяют:

    • Динамически изменять размеры файлов, как в сторону сокращения, так и в сторону увеличения.

    • Обеспечить улучшенную поддержку операций ввода-вывода больших объемов данных.

    • Организовать управление пространством в таблицах на уровне строк.

    • Снизить затраты на распределение экстентов.

    В более ранних версиях SQL Server при добавлении большого объема данных механизм распределения пространства мог вызвать блокировку. Алгоритм распределения пространства и структуры данных в SQL Server 7.0 проще, эффективнее и не вызывает блокировки, так как SQL Server 7.0 отслеживает свободное пространство на странице. При удалении строки из таблицы, для которой не используются кластеризованные индексы, освободившееся пространство может повторно использоваться для вставки новой строки. Таким образом обеспечивается более эффективное использование дискового пространства и ускоряется просмотр страниц за счет более плотного хранения данных.

    SQL Server 7.0 быстро распределяет страницы для объектов и повторно использует пространство, освободившееся при удалении строк. Эти операции являются внутрисистемными и используют структуры данных, невидимые для пользователя. Тем не менее, эти процессы и структуры иногда упоминаются в сообщениях SQL Server. Это обсуждение алгоритмов распределения пространства и структур данных ставит своей целью предоставить пользователям и администраторам информацию, необходимую для понимания сообщений, генерируемых SQL Server.

    В SQL Server 7.0 произведены значительные изменения в структуре внутренних данных, управляющих распределением и повторным использованием страниц. Эти структуры данных остаются невидимыми для конечного пользователя, и, таким образом, никак не влияют на его работу, за исключением повышения скорости.

    Сокращение файлов

    Портативные и настольные компьютеры могут обладать ограниченным дисковым пространством, поэтому вы можете автоматически сокращать размер файлов, если включена соответствующая возможность. Сервер периодически проверяет использование пространства в каждой базе данных. Если обнаружено большое количество свободного пространства, размер файла базы данных будет уменьшен. И файлы данных, и файлы журнала могут быть сокращены. Эти операции происходят в фоновом режиме и не влияют на работу пользователя с базой данных. Вы можете также использовать средства SQL Server Enterprise Manager или DBCC для индивидуального или группового сокращения размеров файлов.

    При сокращении файла строки из страниц, расположенных в конце файла, перемещаются в страницы, распределенные ранее. В индексах узлы также перемещаются из конца файла на страницы, лежащие ближе к началу. В обоих случаях страницы, расположенные в конце файлов, освобождаются и возвращаются в файловую систему. Базы данных могут сокращаться только до того момента, пока в них не останется свободного пространства. Компрессия данных не используется.

    Расширение файлов

    Автоматическое увеличение файлов сокращает потребность в управлении базой данных и устраняет множество проблем, возникающих при выходе базы данных или журнала за пределы отведенного пространства. При создании базы данных должен быть задан первоначальный размер файлов. SQL Server создает файлы данных, размер которых указывается создателем базы. Добавляемые данные постепенно заполняют эти файлы. По умолчанию файлы данных могут, по мере необходимости, увеличиваться в размере, пока не будет исчерпано все дисковое пространство. Альтернативная настройка предусматривает автоматическое увеличение размеров файлов при их заполнении данными, однако до определенного предела. Это предотвращает переполнение дисков.

    Рассматриваемая возможность полезна в тех случаях, когда SQL Server используется в качестве встроенной в приложение СУБД или когда пользователь не имеет доступа к услугам системного администратора. При необходимости пользователь может разрешить автоматическое увеличение файлов, чтобы сократить накладные расходы на администрирование, избежать слежения за свободным пространством в базе данных и ручного распределения дополнительного пространства.

    При создании базы данных файлы данных должны быть велики, как только возможно, с учетом максимального ожидаемого объема данных. Вы можете разрешить автоматическое увеличение размеров файлов, но указать при этом ограничения. Если первоначально указанный размер превышен и файл начал автоматически увеличиваться, произведите повторную оценку максимального размера базы данных и добавьте соответствующее количество дискового пространства или создайте и добавьте к базе данных дополнительные файлы или группы файлов.

    Увеличение размера базы данных свыше первоначально указанного может быть запрещено. Тогда при заполнении файлов новые данные не могут быть добавлены, пока не будут добавлены новые файлы данных. Автоматическое увеличение файлов может привести к фрагментации пространства, если на одном диске расположено большое количество файлов. Поэтому рекомендуется создавать файлы или группы файлов на возможно большем количестве локальных физических дисков. Объекты, интенсивно конкурирующие за дисковое пространство, следует размещать в разных группах файлов.


    написать администратору сайта