|
Программирование >> Создание клиентов mysql
После добавления опций в конфигурационный файл необходимо перезапустить сервер MySQL. Все не обходимые файлы будут созданы автоматически. На это может уйти некоторое время, в зависимости от размера файлов и скорости жесткого диска. Таблицы InnoDB блокируются на уровне записей. Это происходит без участия пользователей по мере выполнения инструкций в рамках транзакций. Инструкция LOCK TABLE может конфликтовать с блокировками InnoDB. В отличие от таблиц MylSAM, блокировки таблиц InnoDB способны приводить к возникновению тупиков, т.е. взаимоблокировок. В подобной ситуации одна или несколько отменяется. Это следует учитывать при написании приложений. Инструкция, которая приводит к автоматической отмене транзакции, возвращает сообщение об ошибке. Транзакции отменяются также в случае нехватки места в файловой системе. На случай отмены транзакций ведется журнал транзакций. Он подвержен внутренней ротации, т.е. когда заполняются все записи, самые старые из них начинают удаляться. На момент написания книги существовало несколько ограничений таблиц InnoDB. Самое существенное из них заключалось в способе отслеживания таблиц. В InnoDB каталог таблиц, который не инструкцией DROP TABLE, этому каждую таблицу приходится удалять отдельно. Не разрешается индексировать префикс столбца, а также индексировать столбцы типа BLOB и TEXT. Максимальное количество столбцов в таблице- 1000. Флаг DELAYED в инструкции INSERT не поддерживается. ISAM До версии 3.23 стандартным типом таблиц в MySQL был тип ISAM. Он нео бладает такими возможностями, как более новый тип поэтому в современных верси- ях MySQL использовать его не рекомендуется. Merge В таблице типа Merge группируется несколько таблиц MylSAM одинаковой структуры. Программа MySQL создает файл с расширением . MRG, в котором содержится список таблиц. При доступе к объединенной таблице программа обращается к каждой таблице из списка. Если в списке всего одна таблица, то создается только ее псевдоним. Если же таблиц две или более, их записи трактуются так, будто они находятся в одной таблице. С функциональной точки зрения объединенная таблица обладает всеми свойствами обычной таблицы. Объединенная таблица создается очень быстро, так как требуется всего лишь сформировать список имен исходных таблиц. В случае уничтожения такой таблицы удаляется лиш ч)айл, но не исходные таблицы. У объединенных таблиц есть ряд недостатков. В них нельзя вставлять записи, поскольку программа MySQL не имеет возможности определить, в какую из исходных таблиц они должны быть помещены. Кром того, при работе с такими таблицами используется большее число файловых дескрипторов, так как программе приходится открывать каждую исходную таблицу в отдельности. Следовательно, извлечение данных из объединенных таблиц осуществляется медленнее, чем из таблиц других типов. Типы таблиц 441 Даже если дескрипторы индекснтх файлов совместно используются несколькими потоками, все равно приходится читать индексный файл каждой исходной таблицы. Несмотря на упомянутые ограничения, у объединенных таблиц есть и несомненные преимущества. Они позволяют интерпретировать группу таблиц как единое целое и в то же время продолжать работать с отдельными ее компонентами. Это идеальное решение для крупных таблиц, которые легко разбиваются на фрагменты. Например, журнальные файлы Web4;epBepa можно группировать в месячные таблицы. Если одна из таблиц повреждается, необходимо восстанавливать только ее, а не всю группу. Кроме того, исходные таблицы можно хранить на разных физических дисках, что способствует повышению производительности. MylSAM MylSAM - это стандартный тип таблиц в MySQL, если только в конфигурационном файле не задано иное. Для таблиц этого типа создан ряд специализированных утилит, позволяющих манипулировать табличными файлами. Сюда входят утилита myisamchk для проверки и восстановления таблиц и утилита myisampack для создания сжатых таблиц (см. главу 14, Утилиты командной строки ). Таблицы MylSAM являются независимыми. Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования. Для этого MySQL хранит все числа с плавающей запятой в формата ИЕ, а все целые числа - в формате с прямым порядком следования байтов. С точки зрения производительности это совершенно непринципиально. MySQL хранит счетчик подключений к таблице MylSAM. Когда таблица закрывается, счетчик сбрасывается в нуль. Если сервер неожиданно завершает работу, счетчик остается положительным числом. В таком случае в процессе перезапуска сервер обнаружит проблему. Это не означает, что таблица повреждена, но подобная возможность существует. Следует немедленно выполнить инструкцию CHECK TABLE или вызвать утилиту myisamchk. Можно также запустить демон mysqld с опцией -myisam-recover, чтобы заставить его восстанавливать все таблицы MylSAM с ненулевым значением счетчика. Для таблиц MylSAM разрешены одновременные операции вставки и выборки, если только в таблице нет пустых участков. Такие участки создаются инструкциями DELETE и могут быть заполнены последующими инструкциями INSERT. MySQL блокирует таблицу MylSAM, пок укция INSERT заполняет пустой участок. Для удаления пустых мет необходимо оптимизировать таблицу. Для автоинкрементных столбцов таблиц MylSAM программа MySQL ведет внутренний счетчик, а не просто добавляет единицу к наибольшему значению столбца. Это дает небольшой выигрыш производительности при операциях вставки, но также означает, что значения столбца никогда не используются повторно. В таблицах других типов при удалении строки с наибольшим значением счетчика и последующей вставке новой строки ей будет присвоен тот же самый идентификатор. Индексные файлы имеют расширение . MYI. Файлы с расширением . MYD содержат данные, а с расширением схему таблицы. Если индексный файл по какой-то причине теряется, программа перестраивает индексы, используя информацию из f rm-файла. По умолчанию в каждой таблице может быть не более тридцати двух индексов, но это значение можно повысито шестидесяти четырех. Индексы создаются в виде двоичных деревьев. Разрешается индексировать столбцы типа BLOB и TEXT, а также столбцы, допускающие значения NULL. В таблицам SAM могут быть фиксированные, динамические либо сжатые записи. Выбор между фиксированным и динамическим форматом диктуется определениями столбцов. Дл адания сжат1х таблиц предназначена утилита myisampack (см. главу 14, Утилиты командной строки ). Таблица будет иметь записи фиксированной длины, если в ней нетстолбцов типа VARCHAR, BLOB или TEXT. Одинаковая длина записей имеет свои преимущества. Утилите будет проще восстанавливать поврежденные записи, если она знает их точную длину. Такие записи никогда не приходится разбивать на части при наличии в таблице пустых промежутков, что ускоряет операции чтения. Правда, записи фиксированной длины обычно занимают больше места на диске. Все записи таблицы будут динамическими, если в ней есть столбцы типа VARCHAR, BLOB или TEXT. Возможно также приведение столбцов типа CHAR к типу VARCHAR, если их длина больше четырех символов. Длина каждой записи отслеживается по специальному заголовку. В нем указана длина текущего сегмента записи. Поскольку при повреждении таблицы связи между фрагментами могут корректное восста- новление записи не всегда возможно. Динамические записи часто требуют При их удалении возникают пустые участки, которые не всегда в точности заполняются вставляемыми записями. лее того, операций обновления длина записи может увеличиваться или уменьшаться. запись не помещается в отведенном для нее месте, она разбивается на два более сегмента. По мере распределения записей по файлу время поиска данных возрастает. ранить фрагментацию можно с помощью инструкции MIZE TABLES. Сжатые таблицы занимают гораздо меньше места, чем таблицы с фиксированными или динамическими записями. Их удобно создавать в медленных файловых системах, например в тех, которые используются в компакт-дисках. Каждая запись сжимается отдельно с применением отдельной для каждого столбца. Сжатая таблица создается утилитой myisampack. С помощью утилиты myisamchk можно преобразовать сжатую таблицу обратно в фиксированный или динамический формат. Если таблица MylSAM находится на переполненном диске и в нее добавляется запись, программа MySQLперейдет в бесконечный цикл, ожидая освобождения места на диске. Столбцы В табл. 24.1 указаны размерности стандартн1х типов данных MySQL. Значения некоторых типов всегда занимают фиксированный объем памяти. Например, размерность столбцов типа INTEGER всегда составляет 4 байта. Столбцы типа CHAR могут иметь размерность от 0 до 255, но в момент создания таблицы под них отводится фиксированный объем памяти. Существуют также столбцы переменной размерности. Например, столбцы типа VARCHAR и BLOB интерпретируются в соответствии с их содержимым.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |