Министерство образования Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
“Хабаровский государственный технический университет”
АДМИНИСТРИРОВАНИЕ В ИНФОРМАЦИОННЫХ СЕТЯХ
ЛАБОРАТОРНАЯ РАБОТА № 10
Методические указания к выполнению лабораторной работы № 10
для студентов специальности 071900 “Информационные системы
и технологии”
Хабаровск
Издательство ХГТУ
2003
УДК 681.58:681.32
Администрирование в информационных сетях: Методические указания к выполнению лабораторной работы № 10 для студентов специальности 071900 «Информационные системы и технологии» / Сост. Г. К. Конопелько, Д. Г. Конопелько – Хабаровск: Изд-во Хабар. гос. техн. ун-та, 2003. – 12 с.
Методические указания составлены на кафедре «Автоматика и системотехника». В них приводятся задание на лабораторную работу, требования по оформлению отчета, а также общие сведения. Приводится перечень рекомендованной литературы, необходимой для выполнения задания.
Печатается в соответствии с решениями кафедры "Автоматика и системотехника" и методического совета института информационных технологий.
© Издательство Хабаровского государственного технического университета, 2003
Установка сервера MySQL для Linux
Цель работы: научиться устанавливать сервер MYSQL для Linux и освоить процедуру настройки сервера.
Введение
Практическое задание выполняется в локальной сети на рабочей станции с операционной системой Linux версии 7 или более поздней.
Порядок выполнения лабораторной работы
1. Подготовка и допуск к работе
К выполнению лабораторной работы допускаются студенты, которые подготовились к работе и имеют не более двух невыполненных предыдущих заданий.
Перед работой студент должен:
· предъявить преподавателю полностью оформленный отчет о предыдущей работе;
· ответить на вопросы преподавателя.
К работе не допускаются студенты, которые не выполнили одно из вышеперечисленных требований.
2. Отчёт по работе должен содержать следующее:
- Текст задания.
- Перечень всех использованных в лабораторной работе команд и инструкций.
- Вывод по работе.
Общие сведения
Инсталляция MySQL
Опции, задаваемые при компиляции пакета:
1. Выключение альтернативных пользовательских логинов
Если вы не хотите, чтобы пользователи могли применять опцию -u для входа в mysql под другим логином, можно закомментировать в файле global.h строку:
#define SAFE_USER 1 /* Comment this if you are paranoid */
2. Выключение автоматического присваивания значений по умолчанию
По умолчанию MySQL автоматически назначит значение по умолчанию полям, которые явно не объявлены. MySQL будет делать это исходя из типа конкретного поля. Если Вы предпочли бы, чтобы поля с необъявленными значениями имели значение NULL, то добавьте в файл global.h строку:
#define DONT_USE_DEFAULT_FIELDS
3. Изменение используемой длины ключа
По умолчанию MySQL рассматривает только 1120 байтов ключа. Вы можете увеличивать это значение, редактируя файл nisam.h и изменяя значение N_MAX_KEY_LENGTH. Обратите внимание, что это может вести к снижению производительности. Нет причины делать это значение меньше, поскольку можно определить ключ, длина которого меньше указанного поля.
4. Изменение порядка сортировки
По умолчанию MySQL сортирует строки согласно ISO8859-1 (latin1). Вы можете изменить это во время конфигурации, определяя следующую опцию.
--with-charset=[charset]
где: [charset] может быть один из: latin1, latin2, koi8_ru, dec8, dos, hp8, swe7, usa7.
Чтобы узнать о том, как добавлять новые наборы символов, посмотрите каталог строк в исходниках.
Обратите внимание: Если Вы меняете наборы символов уже создав базу данных, Вы будете должны выполнить isamchk с параметрами -e, и -q для всех таблиц, иначе MySQL не будет работать правильно.
Настройка mysqld
$ mysqld -O
Возможные переменные в опции -O:
Имя | Значение по умолчанию | |
back_log | Определите размер очереди для входящих tcp/ip подключений. Убедитесь, что установили его побольше, когда Вы ожидаете большое количество подключений в коротком периоде времени. Некоторые ОС могут иметь максимальное значение этой переменной 128 или 256. Подробности об этой очереди можно посмотреть на man-странице listen(2). | |
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 закрывает все таблицы, которые не используются, и отмечает все используемые таблицы, которые будут закрыты, когда работающие потоки завершатся. Это позволяет эффективно использовать память, своевременно ее освобождая.
Если Вы имеете прикладную программу, которая требует большого количества потоков, это является хорошим способом уменьшить значения recordbuffer и sortbuffer примерно до 32K. Вы можете даже уменьшить recordbuffer до 8КБ без особых проблем. Кроме того можно рассматривать уменьшение значения переменной keybuffer до размера в 512КБ. Это сохранит большой объем памяти, и повысит эффективность работы.
После того, как Вы загрузили данные в вашу базу данных, Вы можете выполнить команду 'isamchk -a' над вашими таблицами. Программа isamchk соберет статистику по вашим таблицам, которую сможет использовать оптимизатор. Вообще, надо выполнить isamchk только однажды на таблице. При этом предполагается, что что данные в таблице во время isamchk выполнены в типичном представлении для вашей таблицы.
Есть несколько вещей, которые Вы можете сделать, чтобы минимизировать количество места, которое используют ваши таблицы. Прежде всего используйте НЕ ПУСТОЙ указатель всякий раз, когда возможно. Это ускорит запросы, и сохранит 1 бит на поле.
Вы можете сохранить много места, используя меньшие целочисленные переменные. Например, MEDIUMINT часто вполне достаточен.
Вообще Вы должны выбрать самый маленький тип данных, в котором Вы будете нуждаться, если есть проблемы с памятью.
Имейте в виду, что поля фиксированной длины в mysql обрабатываются значительно быстрее. Избегая полей переменной длины (VARCHAR, BLOBs), можно повысить эффективность на 10-200%.