MYSQL server
|-V |Информация о версии. |
|-O var=# |Опция оптимизации var=#[k][m] |
Можно использовать вторую опцию '-q', чтобы использовать старый
файл данных. -ro использует старый метод восстановления: медленнее, но
надежнее -r. -r может исправить почти все ошибки, кроме уникальных ключей,
которые оказались все же не уникальными. Если -f задан при проверке
таблицы, то таблицы с ошибками будут автоматически исправлены.
ПРИМЕРЫ:
|isamchk -r [table_name] |Убрать все дырки, которые сформировались |
| |из-за использования BLOBS или VARCHARS. |
| |Также установить какие еще есть проблемы.|
|isamchk -ei [table_name] |Проверить таблицу и отобразить |
| |статистику. |
|isamchk [table_name] |Найти большинство ошибок. |
|isamchk -rq [table_name] |Обновить только индексный файл. Быстро, |
| |но не исправляет ошибки в файле данных. |
|isamchk -d -v [table_name] |Описание таблицы. |
|isamchk -rq -Si [table_name] |Полная оптимизация таблицы [table_name]. |
isamlog
Получение статистики, и использование isam-журналов.
СИНТАКСИС:
isamlog [-?iruvIV] [-c #] [-f #] [-p #] [-F filepath/] [-o #]
[-R file recordpos] [-w write_file] [log-filename]
ОПИСАНИЕ:
Эта программа используется вместе с опцией --log-isam=file_name демона
mysqld.
Файл file_name будет хранить протокол всех изменений для всех таблиц.
Программа isamlog может быть использована для получения информации об этом
файле и обновить все таблицы и базы данных.
Чтобы восстановить базу данных, нужна копия, которая содержит вашу
базу данных до того, как mysqld сгенерировал ISAM журнал, или полный набор
ISAM журналов с начала работы вашей базы данных.
|-? or -I |Справка. |
|-V |Информация о версии. |
|-c # |Выполнить только # команд. |
|-f # |Максимальное число открытых файлов. Если откроется |
| |больше чем # файлов, то лишние будут автоматически |
| |закрыты и вновь открыты по мере необходимости. |
|-F [path] |Файл протокола ISAM содержит полный путь к таблицам. |
| |Можно использовать эту опцию, чтобы отменить |
| |сохраненный путь. |
| |ПРИМЕР: |
| |-F '/var/mirror/' заставит isamlog работать с файлами в|
| |/var/mirror, а не с теми, которые указаны в сохраненном|
| |пути. |
|-i |Вывести более детальную информацию. |
|-o # |Начать со смещения #. |
|-p # |Удалить # компонент из пути. |
|-r |Игнорировать все ошибки, с которыми сталкиваемся в |
| |течение модификаций. |
|-R |Указать позицию в файле ISAM, о которой надо выдать |
| |сведения. |
| |ПРИМЕР: |
| |isamlog -R /usr/local/data/mysql/user.ISM 1234 |
| |Выведет все изменения в таблице |
| |/usr/local/data/mysql/user, которые найдены в позиции |
| |1234. |
|-u |Пытаться модифицировать все таблицы. Остановиться, если|
| |встречена ошибка. |
|-v |Подробный вывод. Можно задать большее количество |
| |символов v для повышения объема выдаваемой информации |
| |(например, vv). |
|-w [filename] |Записать все записи вставленные или измененные опцией |
| |-R в [filename]. Эта опция может использоваться, чтобы |
| |получить двоичный файл всех вставок и модификаций |
| |конкретной таблицы для использования в отладке. |
safe_mysqld
Скрипт для запуска демона mysqld.
СИНТАКСИС:
safe_mysqld [options to mysqld]
ОПИСАНИЕ:
Этот скрипт обычно выполняется при начальной загрузке, чтобы запустить
mysqld. Если необходимо, чтобы DATADIR был помещен в иерархии каталога
MySQL, что и mysqld, нужно подправить DATADIR в этом скрипте.
2.2. Дополнительные команды
comp_err
Генерирует файлы сообщений об ошибках на национальном языке.
СИНТАКСИС:
comp_err [-?] [-I] [-V] fromfile[s] tofile
ОПИСАНИЕ:
Эта программа используется для компиляции текстовых файлов которые
содержат соответствие между кодами ошибок mysql и текстовыми сообщениями об
этих ошибках в формат, который понимает mysql. Это нужно для изменения уже
существующего файла сообщений или генерации такого файла для другого языка.
ПРИМЕР:
comp_err share/english/errmsg.txt share/english/errmsg.sys
msql2mysql
Выполняет начальное преобразование mSQL скрипта в MySQL.
СИНТАКСИС:
msql2mysql [filename]
ОПИСАНИЕ:
Скрипт msql2mysql используется как первый шаг при портировании msql
скриптов в MySQL.
Программа msql2mysql - фактически довольно простой скрипт, который
использует команду replace, которая поставляется с СУБД MySQL, чтобы
заменить mSQL обращения к функции на их MySQL эквиваленты. Меняются только
имена, дополнительные параметры не добавляются.
mysqlbug
Генерирует отчет об ошибках.
СИНТАКСИС:
mysqlbug [address]
ОПИСАНИЕ:
Этот скрипт используется при сообщении об ошибках в MySQL. Он
генерирует форму, которую для заполнения помещает в любой текстовый
редактор, указанный в переменной $VISUAL (Vi по умолчанию). Форма будет
содержать автоматически сгенерированную информацию относительно вашей
системы, включая версии OS и MySQL и архитектуру. При окончании, форма
будет отправлена по почте в список рассылки MySQL.
perror
Выводит короткое текстовое объяснение числового кода ошибки.
СИНТАКСИС:
$ perror [-?vIV] [errorcodes]
ОПИСАНИЕ:
Программа perror предоставляет короткие текстовые объяснения числовых
кодов ошибок, возвращаемых системой или СУБД MySQL.
Программа perror поддерживает опции:
|-? or -I |Справка. |
|-v |Подробная информация. |
|-V |Информация о версии. |
replace
СИНТАКСИС:
replace [-?svIV] from to from to ... -- [files]
ОПИСАНИЕ:
Программа program используется скриптом msql2mysql. Replace может быть
использована для замены строки на месте в файле или получать строку через
канал (пайп), производить замену и выводить результат в STDOUT.
Допустимы следующие опции:
|-? |Справка. |
|-s |Работать молча (никаких статусных сообщений). |
|-v |Подробная информация о ходе работы (выводить дополнительные |
| |сообщения). |
ПРИМЕРЫ:
replace Apple Orange somefile
Заменит все вхождения Apple на Orange в файле somefile.
cat INFILE | replace Apple Orange Blimp Train > OUTFILE
Все вхождения Apple в файле INFILE будут заменены на Orange и
результат выведен в файл OUTFILE. В то же время, все вхождения Blimp в
файле INFILE будут заменены на Train и тоже выведены в файл OUTFILE. Таким
образом, можно заменять более чем одно выражение за один проход.
Можно использовать специальные символы во входных строках:
|\^ |Соответствует началу строки. |
|\$ |Соответствует концу строки. |
|\b |Соответствует пробелу. Может появляться или отдельно, или в начале,|
| |или в конце лексемы. Если \b используется в конце лексемы, |
| |следующие замены начнутся после пробела. \b соответствует только |
| |пробелу. |
Replace простая и очень полезная утилита с большими потенциальными
возможностями использования в MySQL.
which1
Найти команду.
СИНТАКСИС:
which1 [cmd]
ОПИСАНИЕ:
Эта команда, вероятно, полезна только на системах, которые не имеют,
команды which, встроенной в оболочку, или доступной как команда. Выводит
только первую найденную команду.
zap
Послать сигнал процессу, который соответствует образцу.
СИНТАКСИС:
zap [-signal] [-?Ift] pattern
ОПИСАНИЕ:
По умолчанию zap запросит подтверждение для каждого подходящего
процесса.
Программа zap поддерживает опции:
|-I or -? |Справка. |
|-f |Послать сигнал без запроса подтверждения. |
|-t |Вывести список процессов, соответствующих образцу, но не |
| |сигнал им не посылать. |
В качестве сигнала допускается любой сигнал системы unix. По умолчанию
сигнал = 9 (завершить процесс).
3. Настройка mysqld (серверная часть пакета MySQL)
При указании опции -O, отдельно (без дополнительных параметров) можно
получить список всех переменных и их текущих значений. Это может выглядеть
примерно так:
$ mysqld -O
Возможные переменные в опции -O:
|Имя |Значение по умолчанию |
|back_log |Определите размер очереди для входящих tcp/ip |
| |подключений.. Некоторые ОС могут иметь |
| |максимальное значение этой переменной 128 или |
| |256. |
|keybuffer |Размер кэш-буфера, для хранения всех недавно |
| |использованных ключей. Большой буфер дает самую |
| |лучшую эффективность. С переключателем -Sl |
| |распределен только один буфер. |
|max_allowed_packet |Буфер подключений сервера может быть изменен до |
| |этого значения, если пользователь дает длинную |
| |команду. Начальный буфер = 'net_buffer_length'. |
| |На каждое подключение выделяется один буфер. |
|net_buffer_length |Начальный размер буфера подключений. На каждое |
| |подключение выделяется один буфер. |
|max_connections |Максимальное число подключений, которые mysqld |
| |может иметь открытыми в одно и то же время. |
|table_cache |Максимальное число таблиц сохраняемых открытыми |
| |на сервере. Таблицы хранятся открытыми, для |
| |ускорения запроса к часто используемым таблицам.|
| |Однако, каждая открытая таблица требует много |
| |памяти. |
|recordbuffer |Размер кэш-буфера для хранения прочитанных |
| |записей. На каждое подключение выделяется один |
| |буфер. |
|sortbuffer |Размер буфера, используемого при сортировке. На |
| |каждое подключение выделяется один буфер. |
|max_sort_length |Максимальное время для сортировки? |
Полезные замечания
. Все потоки совместно используют ту же самую основную память.
. MySQL в настоящее время не использует memmap. Это может изменяться.
. Можно определять размер буфера для ключей при старте mysqld. Буфер
ключей будет кэшировать все ключи во всех таблицах В ПОРЯДКЕ
ПОСТУПЛЕНИЯ запросов (переменная keybuffer)
. Каждое подключение использует некоторую часть потока, стек и буфер
подключений (переменная net_buffer_length).
. Каждый запрос, делающий последовательный просмотр записей в таблице,
распределяет буфер чтений (переменная recordbuffer).
. Каждый запрос, выполняющий сортировку, распределяет sortbuffer и один
или два временных файла. Максимально необходимое дисковое пространство
= (sort_key_length + sizeof(long))*2.
. Все объединения выполняются за один проход, и результат сохраняется во
временной таблице в памяти. Выполнение полного объединения и
сортировки на двух больших таблицах может потребовать очень большого
объема памяти.
. Индексные файлы открываются один раз. Файлы данных открываются один
раз для каждого параллельного потока. Каждый параллельный поток имеет
полную таблицу struct и поле struct плюс память для трех полных строк
столбцов. BLOB требует еще 5-8 байт.
. Если таблица имеет BLOB, буфер будет распределен, чтобы читать данные
BLOB. Этот буфер будет расти по мере необходимости, до размеров самого
большого BLOB в таблице.
. Когда таблица используется, она сохраняется в кэше. Этот кэш будет
загружен и опорожнен В ПОРЯДКЕ ПОСТУПЛЕНИЯ запросов (FIFO). По
умолчанию mysqld будет кэшировать 64 таблицы. Если много потоков
обращаются к одной и той же таблице одновременно, будет иметься одна
запись на поток. ТО ЕСТЬ, если два потока одновременно обращаются к
той же самой таблице, будет две записи в кэше.
. Команда mysqladmin reload закрывает все таблицы, которые не
используются, и отмечает все используемые таблицы, которые будут
закрыты, когда работающие потоки завершатся. Это позволяет эффективно
использовать память, своевременно ее освобождая.
4. Возможности языка Perl для работы с MySQL
сервером.
При написании программы к данной работе выбран язык Perl, т. к.
сегодня MySQL более широкое распространение получил на Web-серверах. А Perl
как нельзя лучше других языков подходит для написания CGI-приложений.
Взаимодействие сценария на языке Perl с MySQL можно изобразить схемой:
Сценарий Perl–>DBI –>DBD::MySQL–>Cервер MySQL.
DBI обеспечивает единый интерфейс взаимодействия с различными
системами управления базами данных. А DBD связывает этот интерфейс
непосредственно с конкретной СУБД. В нашем случае это mysql. Для того,
чтобы программа на Perl могла общаться и работать с базой данных,
необходимо подключить модуль DBI и драйвер DBD. Это выполняется следующими
операторами:
use DBI; use DBD::mysql;
Для того чтобы выполнять SQL запросы к базе данных, нужно установить
логическое соединение с MySQL. Это выполняется при помощи метода объекта
DBI. При этом он возвращает объект (дескриптор) соединения, который будет
использоваться для непосредственного общения с базой данных.
$dbh = DBI->connect('DBI:mysql:dbname= GRYADKA; host= 127.0.0.1;
port=3306','','',0);
Вызывая метод connect, ему передаются некоторые параметры. Первый
параметр определяет свойства соединения.
Эта строка имеет следующую структуру:
"dbi::dbname= ; host=;
port="
Далее в методе connect определяются имя пользователя, пароль и флаги
соединения.
Существует два способа работы с базами данных MySQL. Первый — так
называемый механизм курсоров, а второй, соответственно, без использования
таковых.
Курсоры — это объекты Perl, которые обеспечивают последовательный
доступ к результатам запросов.
Каждый курсор отвечает за закрепленный за ним запрос.
$cur = $dbh->prepare('select * from MAIN;');
$cur — это курсор, который для начала следует выполнить, используя
метод execute:
$cur->execute;
Теперь, после выполнения запроса, чтобы получить результат запроса,
используется метод fetchrow_array. Он поочередно возвращает массив полей
результативной виртуальной таблицы.
Очень часто бывает необходимо подготовить запрос и после, при его
выполнении, передавать ему различные данные. Это довольно просто решается
при помощи механизма placeholders:
$cur = $dbh->prepare('insert into MAIN values(?,?)');
где вопросительные знаки следует заменить на значения переменных,
переданных в качестве параметров метода execute:
$a00 = 2; $a01 = 'second record'; $cur->execute($a00, $a01);
Для того чтобы закрыть курсор, необходимо выполнить метод finish.
$cur->finish;
Курсоры очень удобный момент в технологии DBI. Однако можно обойтись и
без них. Существует множество методов, которые вполне неплохо заменяют
курсоры:
selectrow_array — возвращает одну строку запроса в виде массива;
selectall_arrayref — возвращает весь ответ сервера в виде массива,
ссылка на массивы;
do — выполняет запрос, ничего не возвращая (очень удобно при работе с
insert, update и пр.)
Для того чтобы разорвать соединение с MySQL, необходимо выполнить
метод disconnect.
$dbh->disconnect;
Заключение.
В процессе написания данной работы были выяснены следующие свойства
MySQL сервера:
. Многопоточность. Поддержка нескольких одновременных запросов.
. Оптимизация связей с присоединением многих данных за один проход.
. Записи фиксированной и переменной длины.
. Гибкая система привилегий и паролей.
. До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.
. Поддержка ключевых полей и специальных полей в операторе CREATE.
. Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed),
строк переменной длины и меток времени.
. Интерфейс с языками C и perl.
. Основанная на потоках, быстрая система памяти.
. Утилита проверки и ремонта таблицы (isamchk).
. Все операции работы со строками не обращают внимания на регистр
символов в обрабатываемых строках.
. Псевдонимы применимы как к таблицам, так и к отдельным колонкам в
таблице.
. Все поля имеют значение по умолчанию. INSERT можно использовать на
любом подмножестве полей.
. Легкость управления таблицей, включая добавление и удаление ключей и
полей.
Итак, популярность MySQL сервера определяется не только тем, что пакет
распространяется бесплатно и имеет высокую производительность, но ещё и
тем, что имеет множество вышеперечисленных достоинств, многих из которых
нет у других СУБД.
И виртуальный магазин, и сервер знакомств, и всевозможные сайты,
предоставляющие платные услуги, — все нуждаются в возможности обрабатывать
и хранить большие объемы информации. MySQL предоставляет всем эту
возможность совершенно бесплатно. Это действительно одна из самых мощных,
быстрых и надежных СУБД.
В ходе выполнения курсовой работы была написана программа, которая
представляет собой Интернет-каталог. Она иллюстрирует возможности MySQL
сервера, возможности интеграции MySQL c сетью Internet, что на сегодня
весьма актуально. Созданная программа может использоваться в качестве
Интернет-каталога в Интернет-магазине.
Список литературы
1. М. Каба. MySQL и Perl – СПб.: Питер, 2001.
А. Паутов. Документация по MySQL.
2. М. Грубер. Понимание SQL.
3. Материалы интернет-сайтов:
www.mysql.com
www.infocity.kiev.ua
Страницы: 1, 2, 3
|