Программирование >>  Программный интерфейс приложений 

1 ... 145 146 147 [ 148 ] 149 150 151 ... 264


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

Запущены утилиты isamchk и myisamchk. Эти утилиты используются для поддержки таблиц, устранения проблем и отладки баз данных. Поскольку они обладают возможностью изменения содержимого таблиц, то могут получать доступ к данным одновременно с сервером. Это может стать источником повреждений данных. Администратор должен понимать, как офаничить подобный совместный доступ, чтобы снизить вероятность разрушения таблиц. Более детально об использовании этих утилит рассказывается в главе 13, Поддержка и восстановление баз данных .

Представление баз данных

Каждая управляемая сервером MySQL база данных имеет свой собственный каталог. Он представлен в виде подкаталога каталога данных и имеет такое же название, как и собственно база. Так, например, базе данных my db будет соответствовать каталог базы данных DATADIR/my db.

Такое представление значительно упрощает понимание предназначения и принципов работы некоторых операторов обработки баз данных. Так, оператор create database db name создает пустой подкаталог db name в каталоге данных, устанавливая права владения и режим, которые обеспечивают доступ только для пользователя сервера MySQL (UNlX-пользователя, работающего на сервере). Аналогичных результатов создания базы данных пользователь сервера может добиться и вручную, введя следующие команды.

% mkdir DATADIR/db aajae Создает каталог базы данных

% chmod 700 DATADIR/db name Делает его доступным только для

пользователя сервера MySQL

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

Также легко можно реализовать и команду drop database. Команда drop database db name удаляет из каталога данных подкаталог db name вместе со всеми расположенными в нем файлами. Тех же результатов можно достичь с помощью команды:

% ГШ -rf DATADIR/db aame



(Разница между этими двумя командами заключается в том, что сервер удалит лишь файлы, расширение которых отвечает табличным файлам. Если же в каталоге базы данных были созданы также какие-либо другие файлы, они останутся нетронутыми и каталог удален не будет.)

Команда show databases на самом деле выводит список названий подкаталогов каталога данных. Некоторые системы управления базами данных поддерживают специальную таблицу со списком всех баз данных. В MySQL такой таблицы нет. Благодаря простоте структуры список баз является списком подкаталогов каталога данных. Следовательно, и необходимость в подобной таблице отсутствует.

Представление таблиц баз данных

Каждая таблица представлена в каталоге базы данных в виде трех файлов: файла формы (описания), файла данных и файла индексов. Основное имя файла соответствует названию таблицы, а его разрешение отражает тип файла. Краткое описание расширений представлено в табл. 10. L По расширениям файлов данных и индексов можно определить, используется ли в таблице старый формат ISAM или новый MylSAM.

Таблица 10.1. Типы файлов MySQL

Тип файла Расширение Содержимое файла имение файла

Файл формы .frm Описывает структуру таблицы (столбцы, типы

столбцов, индексы и т.п.)

Файл данных ISD (ISAM) или Содержит данные таблицы, т.е. его строки MYD (MylSAM)

Файл индек- ISM (ISAM) или Содержит дерево индексов для каждого индекса сов MYI (MylSAM) файла данных. Этот файл существует независимо

от того, имеются в таблице индексы или нет

При выполнении оператора CREATE TABLE tblname, определяющего структуру таблицы, сервер создает файл tbl name. frm с внутренней кодировкой структуры. Кроме того, создаются также файлы данных и индексов с информацией об отсутствии записей и индексов. (Если оператор CREATE TABLE включает спецификации индексов, в файле индексов они отражаются соответствующим образом.) Параметры владельца и режима файлов таблицы устанавливаются такими, чтобы обеспечить доступ только пользователю сервера MySQL.

При исполнении оператора ALTER TABLE расшифровывает файл tbljname. frm и изменяет файлы данных и индексов с учетом определенных оператором структурных изменений. Такие же операции имеют место и при выполнении операторов CREATE INDEX и DROP INDEX, по-



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

Пользователь не может вручную создать или изменить таблицу, хотя имеется возможность удалить ее. Для чего достаточно удалить три соответствующих файла. Так, например, эквивалентом оператора drop table my tbl для текущей базы данных my tbl может быть команда:

% rm -f DATADIR/my db/my tbl. *

Вывод оператора show tables my db представляет собой простой список имен (без расщирений) FRM-файлов каталога базы данных my db. Как уже отмечалось ранее, некоторые СУБД поддерживают специальный реестр со списком всех таблиц баз данных. В MySQL такой реестр не нужен, поскольку список таблиц легко определяется благодаря структуре каталога данных.

Ограничения операционной системы на имена баз данных и таблиц

в MySQL устанавливается несколько основных правил присвоения имен базам данных и таблицам.

Имена могут включать буквы и цифры текущего набора символов, а также символы подчеркивания и доллара ( и $ ).

Длина имен не может превышать 64 символа.

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

Во-первых, в именах баз данных и таблиц можно использовать только разрешенные для имен файлов символы. Так, например, символ $ разрешается правилами MySQL, однако в некоторьгх операционных системах его нельзя применять в именах файлов. Такого рода офаничения отсутствует в ОС UNIX и Windows. Наиболее значительные проблемы могут возникнуть в момент ссылки на имена баз данных при выполнении задач ад-минисфирования непосредственно из оболочки. Предположим, например, что база данных имеет имя $my db. В этом случае всякая ссылка на имя базы может интерпретироваться как ссылка на переменную:

% Is $my db

my db: Undefined variable.

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

% Is my db % Is $my db



1 ... 145 146 147 [ 148 ] 149 150 151 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика