Документация MySQL
| Документация DHTML | Документация Smarty | SVG/VML Графика и JavaScript
| Документация bash |
| Глава 1. Общая информация | ||
|---|---|---|
| Пред. | След. | |
Глава 1. Общая информация
Содержание
- 1.1. Об этом руководстве
- 1.2. Соглашения, используемые в данном руководстве
- 1.3. О русском переводе руководства
- 1.4. Что представляет собой MySQL?
- 1.5. Что представляет собой компания MySQL AB?
- 1.6. Лицензии и поддержка MySQL
- 1.7. Кратко о MySQL 4.x
- 1.8. Источники информации по MySQL
- 1.9. Насколько MySQL соответствует стандартам?
- 1.10. MySQL и будущее (что предстоит сделать)
Программное обеспечение MySQL
(TM) представляет собой очень
быстрый многопоточный,
многопользовательский надежный
SQL-сервер баз данных (SQL -
язык структурированных запросов).
Сервер MySQL предназначен как для
критических по задачам
производственных систем с большой
нагрузкой, так и для встраивания в
программное обеспечение массового
распространения.
MySQL - это торговая марка MySQL АВ.
Программное обеспечение MySQL имеет
двойное лицензирование.
Это означает, что пользователи могут
выбирать, использовать ли ПО MySQL
бесплатно по общедоступной лицензии
GNU General Public License
(GPL) или приобрести одну из
стандартных коммерческих лицензий
MySQL AB.
(http://www.gnu.org/licenses/).
Для получения самой свежей информации о программном обеспечении MySQL обращайтесь на веб-сайт MySQL (http://www.mysql.com/).
Ниже перечислены наиболее интересные разделы данного руководства.
Информация о компании, которая занимается разработкой и распространением ПО MySQL, находится в разделе Раздел 1.5, «Что представляет собой компания MySQL AB?».
Основные возможности сервера MySQL рассматриваются в разделе Раздел 1.4.2, «Основные возможности MySQL».
Инструкции по инсталляции приведены в разделе Глава 2, Установка MySQL.
Советы по переносу на другие архитектуры и операционные системы вы найдете в разделе Приложение E, Перенос на другие системы.
Информация по апгрейду с версии 3.23 находится в разделе Раздел 2.5.2, «Модернизация с версии 3.23 до версии 4.0»
Информация по апгрейду с версии 3.22 находится в разделе Раздел 2.5.3, «Модернизация с версии 3.22 до версии 3.23»
Введение в обучающий курс по серверу MySQL см. в разделе Глава 3, Учебное пособие по MySQL.
Примеры по SQL и данные по тестам производительности находятся в директории тестов производительности (
sql-benchв дистрибутиве).Информацию о новых возможностях и об исправлениях ошибок см. в разделе Приложение D, История изменений и обновлений MySQL.
Список известных на сегодняшний день ошибок и конструктивных дефектов см. в разделе Раздел 1.9.5, «Известные ошибки и недостатки проектирования в MySQL».
Планы развития MySQL см. в разделе Раздел 1.10, «MySQL и будущее (что предстоит сделать)».
Полный список тех людей, которые сделали вклад в наш проект, вы найдете в разделе Приложение C, Благодарности.
Что важно:
Отчеты об ошибках (bugs), а также
вопросы и комментарии следует
посылать по адресу
<[email protected]>. See
Раздел 1.8.1.3, «Как отправлять отчеты об ошибках или проблемах». Для составления
отчетов об ошибках следует
использовать сценарий
mysqlbug. В поставках
исходного текста сценарий
mysqlbug находится в
директории scripts. Если у вас
бинарная поставка, то сценарий
mysqlbug следует искать в
директории bin.
Если вы обнаружите существенную
ошибку, относящуюся к безопасности в
сервере MySQL, следует сообщить об этом
по адресу: <[email protected]>.
1.1. Об этом руководстве
Это - справочное руководство по MySQL; оно представляет собой документацию по MySQL версии 5.0.6-beta. Функциональные изменения отмечены номером версии, в которой они произведены, поэтому это руководство будет полезно при освоении также и более старых версий MySQL.
Поскольку данный материал носит чисто справочный характер, в нем не содержится основных положений SQL или сведений по реляционным базам данных.
Руководство часто обновляется, поскольку ПО СУБД MySQL находится в состоянии постоянного развития. Самая последняя версия данного руководства доступна по адресу http://www.mysql.com/documentation/ в различных форматах, включая HTML, PDF и Windows HLP.
Исходным документом для всех версий
документации является файл Texinfo.
HTML-версия генерируется
автоматически модифицированной
версией texi2html. Текстовая и
Info-версии генерируются при помощи
makeinfo, PostScript-версия
создается texi2dvi и
dvips. PDF-версия
генерируется с помощью
pdftex.
Если найти нужную информацию в руководстве не удается, можно прибегнуть к помощи версии руководства с функцией поиска, находящейся по адресу http://www.mysql.com/doc/.
Группа, работающая над
документацией, рассмотрит любые
предложения по дополнению или
исправлению данного руководства. Их
следует отправлять по адресу
<[email protected]>.
Данное руководство было изначально написано Дэвидом Аксмарком (David Axmark) и Майклом (Монти) Видениусом (Michael (Monty) Widenius). Сейчас это руководство поддерживается Майклом (Монти) Видениусом, Полом Дюбуа (Paul DuBois), Арйен Ленц (Arjen Lentz). Остальные разработчики упомянуты в разделе Приложение C, Благодарности.
Авторское право (2003-2006) на данное руководство принадлежит шведской компании MySQL AB. See Раздел 1.6.2, «Авторские права и лицензии на MySQL».
1.2. Соглашения, используемые в данном руководстве
В данном руководстве используются следующие обозначения:
МоноширинныйДля имен команд и опций; SQL-операторов; имен баз данных, таблиц, столбцов; кода на C и Perl, переменных окружения применяется моноширинный шрифт. Например: ''Чтобы увидеть, как работает
mysqladmin, запустите его с опцией--help.''filenameМоноширинный шрифт и кавычки используются для имен файлов и путей. Например: "Дистрибутив устанавливается в каталог
/usr/local/".‘
c’Для представления последовательности символов используется моноширинный шрифт, а сама последовательность символов заключается в кавычки. Например: "Для задания шаблонного символа используется символ ‘
%’".Курсив
Курсив используется для выделения текста, подобно данному.
полужирный шрифт
Полужирный шрифт используется для заголовков таблиц и для того, чтобы особо выделить фрагмент текста.
Если нужно показать, что
приведенная команда должна
выполняться определенной
программой, она предваряется
подсказкой с именем этой программы.
Например, shell> указывает,
что команда будет выполняться вашей
оболочкой, а mysql>
означает, что команда будет
выполняться клиентской программой
mysql:
shell>набирайте команды оболочки здесьmysql>набирайте SQL-операторы здесь
Для представления команд оболочки в
данном руководстве применяется
синтаксис оболочки Bourne. Если у вас
используется csh-оболочка,
синтаксис для нее будет несколько
отличаться. Например,
последовательность команд для
установки переменной окружения и
запуска команды в синтаксисе
оболочки Bourne выглядит следующим
образом:
shell> ПЕРЕМЕННАЯ=значение некая_команда
В случае csh-оболочки для
выполнения тех же действий вам
потребуются следующие команды:
shell>setenv ПЕРЕМЕННАЯ значениеshell>некая_команда
Часто в командах имена баз данных,
таблиц, столбцов следует заменять
конкретными значениями. Чтобы
показать необходимость такой
замены, в данном руководстве
используются выражения типа
db_name (имя базы данных),
table_name (имя таблицы) и
col_name (имя столбца).
Например, в тексте руководства
может встретиться оператор,
подобный следующему:
mysql> SELECT col_name FROM db_name.table_name;
Это означает, что при вводе такого оператора вам необходимо будет указать собственную базу данных, имя таблицы и имя столбца, например:
mysql> SELECT author_name FROM biblio_db.author_list;
Ключевые слова SQL являются нечувствительными к регистру, поэтому их можно записывать, используя как прописные, так и строчные буквы. В данном руководстве используется регистр прописных букв.
Для представления необязательных
слов и выражений в синтаксических
описаниях используются квадратные
скобки (‘[’ и
‘]’). Например, в
приведенном ниже операторе
выражение IF EXISTS является
необязательным:
DROP TABLE [IF EXISTS] имя_таблицы
Если элемент синтаксиса состоит из
ряда альтернативных элементов,
последние отделяются друг от друга
вертикальными чертами
(‘|’ ). В случае, когда
может быть выбран один элемент из
такого ряда, альтернативные
элементы заключаются в квадратные
скобки (‘[’ и
‘]’):
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
В случае, когда должен быть выбран
один элемент из такого ряда,
альтернативные элементы
заключаются в фигурные скобки
(‘{’ и
‘}’):
{DESCRIBE | DESC } имя_таблицы {имя_столбца | wild}
1.3. О русском переводе руководства
Русский перевод документации на ПО СУБД MySQL выполнен в 2002-2003гг. компанией Ensita.NET (http://www.ensita.net/).
Переводчики: (в
алфавитном порядке) Василюк Елена,
Добродеев Сергей, Закиянов Денис,
Коротун Юрий, Пономарев Алексей,
Ченцов Алексей; а также Жданов
Сергей (раздел "Интерфейс
DBI").
Научная редакция: Егор Егоров, Людмила Мезенко, Виктория Резниченко.
Литературный редактор: Людмила Мезенко (the best!)
Главный редактор перевода: Егор Егоров
Все замечания по русской
документации направляйте по адресу
<[email protected]>.
* * * * *
Компания Ensita.NET
(http://www.ensita.net/),
являясь официальным партнером MySQL AB
с января 2002г. консультирует
пользователей ПО СУБД MySQL по всему
миру, поддерживая список рассылки
[email protected] (see
Раздел 1.8.1.1, «Списки рассылки MySQL»).
Ensita.NET с 1999г. занимается разработкой программного обеспечения для веб-сайтов, обслуживанием СУБД и консалтингом.
1.3.1. Список терминов, принятых в русском переводе
Редакционная коллегия при подготовке этого перевода старалась как можно адекватнее перевести специфические термины с английского языка на русский. Нами была поставлена цель создать справочное руководство на живом и понятном языке, но в то же время не переходить на чистый сленг. Поэтому терминология, принятая в этом переводе, возможно, не полностью соответствует четким терминам, принятым в русскоязычной литературе на "около-реляционную" тему.
Для ясности понимания мы включаем в документацию список принятых в этом переводе терминов.
| Термин | Значение |
| account | аккаунт, учетная запись |
| ACL | списки контроля доступа |
| banner | баннер |
| benchmark page | страничка тестов производительности |
| Berkeley-style copyright | лицензия наподобие Berkeley |
| binary release, binary distribution | бинарная поставка, двоичная поставка |
| cache | кэш |
| case sensitive | чувствительный к регистру, регистро-зависимый |
| change history | история изменений |
| charset | набор символов, кодировка |
| client/server | клиент-серверный |
| command-line tool | утилита командной строки |
| commit | принять; commit transaction - принять транзакцию |
| communication protocol | коммуникационный протокол |
| contact form | форма. fill in the contact form - заполните форму |
| data dir | каталог с данными |
| datadir, data dir | каталог datadir, каталог данных |
| date type | тип даты |
| DBA | администратор (физическое лицо) |
| dbms | см. rdbms |
| ddos | distributed dos - распределенная атака создания отказа в обслуживании |
| denial of service | отказ в обслуживании |
| deployment | распространение |
| distribution | поставка, дистрибутив |
| distributor | производитель |
| dos | см. denial of service |
| embedded | встраиваемый. Не "встроенный" |
| environment variables | переменные окружения |
| escape chars | символы экранирования |
| escaped chars | экранированные символы |
| extended regular expression | расширенное регулярное выражение |
| fail-safe | отказобезопасный |
| feature | возможность, особенность |
| firewall | брандмауэр |
| flush | сброс, очистка, перегрузка |
| foreign key constraint | ограничения внешних ключей |
| full precision | полная точность |
| full-text | полнотекстовый |
| grant tables | таблицы привилегий |
| grants | привилегии |
| group | группа, группировка |
| group functions | групповые функции, операции группировки данных, операции над групповыми данными |
| host | удаленный компьютер |
| inserting data | добавление, вставка данных |
| join | связь |
| join optimizer | оптимизатор связей |
| key cache | кэш ключей |
| large-scale | широкомасштабный |
| license | лицензция |
| link | линкование (в контексте линкования компиляции программ) |
| localhost, local host | локальный хост, локальный компьютер |
| locking | блокировка |
| log | журнал |
| log position | точка положения в журнале репликации |
| login | см. account |
| login shell | первая оболочка входа (login shell) |
| master | (репликация) головной сервер |
| miscellaneous | разнообразный |
| multi-byte | мультибайтный |
| multi-layered | многоуровневый |
| multithread | многопоточный |
| mysql server | MySQL или сервер |
| mysql user | пользователь MySQL |
| non-updating queries | запросы, не изменяющие информацию |
| null | null |
| open source | система с открытым кодом (open source) |
| optional | опциональный |
| parser | синтаксический анализатор |
| patch | патч |
| port listening | слушание порта, слушать порт, ожидать соединение на порту |
| privacy | конфиденциальность |
| privilege | привилегии |
| qualifier | определитель |
| qualify | определять |
| rdbms | система управления реляционными базами данных |
| reference manual | справочник, руководство |
| regular client | обычный клиент |
| regular expression | регулярное выражение; extended - расширенное р.в. |
| released under gpl | выпущено под лицензией GPL |
| replica (server) | сервер с копиями |
| robustness | надежность, отказоустойчивость |
| rollback | откат |
| rotation | ротация |
| row-level locking | строчная блокировка |
| scope | контекст |
| script | сценарий, скрипт |
| security | безопасность |
| security issues | вопросы безопасности |
| SET | множество |
| silent | молчаливо |
| slave | (репликация) подчиненный сервер |
| snapshop | образ, снимок |
| socket | сокет |
| ssh port-forwarding | пересылка по SSH (SSH port-forwarding) |
| SSL connections | SSL-соединения |
| sticky | прилипчив |
| superuser | суперпользователь |
| symbol table | см. charset |
| symbol value | строкое значение |
| symlink | символическая ссылка |
| table handler | обработчик таблиц |
| thread | поток |
| time stamp | временная метка |
| timestamp | тип данных временной метки |
| TODO-list | список задач к выполнению |
| track | последовательность, протокол |
| transactional | транзакционный |
| trick | трюк, хитрость |
| unix socket, unix domain socket | unix-сокет |
| up-to-date | своевременный |
| utilities | инструментальные программы |
| vendor | поставщик |
| verbose | расширенный режим вывода сообщений |
| voting algorithm | алгоритм голосования |
| warning | предупреждение |
| wildcard | шаблон, шаблонные символы |
| wrapper | оболочка |
1.4. Что представляет собой MySQL?
- 1.4.1. История MySQL
- 1.4.2. Основные возможности MySQL
- 1.4.3. Насколько стабильным является MySQL?
- 1.4.4. Насколько большими могут быть таблицы в MySQL?
- 1.4.5. Вопросы, связанные с Проблемой-2000
Разработку и сопровождение MySQL, самой популярной SQL-базы данных с открытым кодом, осуществляет компания MySQL AB. MySQL AB - коммерческая компания, основанная разработчиками MySQL, строящая свой бизнес, предоставляя различные сервисы для СУБД MySQL. See Раздел 1.5, «Что представляет собой компания MySQL AB?».
На веб-сайте MySQL (http://www.mysql.com/) представлена самая свежая информация о программном обеспечении MySQL и о компании MySQL AB.
MySQL - это система управления базами данных.
База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.
MySQL - это система управления реляционными базами данных.
В реляционной базе данных данные хранятся не все скопом, а в отдельных таблицах, благодаря чему достигается выигрыш в скорости и гибкости. Таблицы связываются между собой при помощи отношений, благодаря чему обеспечивается возможность объединять при выполнении запроса данные из нескольких таблиц.
SQLкак часть системы MySQL можно охарактеризовать какязык структурированных запросовплюс наиболее распространенный стандартный язык, используемый для доступа к базам данных.Программное обеспечение MySQL - это ПО с открытым кодом.
ПО с открытым кодом означает, что применять и модифицировать его может любой желающий. Такое ПО можно получать по Internet и использовать бесплатно. При этом каждый пользователь может изучить исходный код и изменить его в соответствии со своими потребностями. Использование программного обеспечения MySQL регламентируется лицензией
GPL(GNU General Public License), http://www.gnu.org/licenses/, в которой указано, что можно и чего нельзя делать с этим программным обеспечением в различных ситуациях. Если работа в рамкахGPLвас не устраивает или планируется встраивание MySQL-кода в коммерческое приложение, есть возможность купить коммерческую лицензированную версию у компании MySQL AB. See Раздел 1.6.3, «Лицензии на ПО MySQL».В каких случаях следует отдавать предпочтение СУБД MySQL?
MySQL является очень быстрым, надежным и легким в использовании. Если вам требуются именно эти качества, попробуйте поработать с данным сервером.
MySQLобладает также рядом удобных возможностей, разработанных в тесном контакте с пользователями. Сравнительные характеристики MySQL и других средств управления базами данных приведены на нашей странице тестов производительности (see Раздел 5.1.4, «Набор тестов MySQL (The MySQL Benchmark Suite)»).Первоначально сервер MySQL разрабатывался для управления большими базами данных с целью обеспечить более высокую скорость работы по сравнению с существующими на тот момент аналогами. И вот уже в течение нескольких лет данный сервер успешно используется в условиях промышленной эксплуатации с высокими требованиями. Несмотря на то что MySQL постоянно совершенствуется, он уже сегодня обеспечивает широкий спектр полезных функций. Благодаря своей доступности, скорости и безопасности MySQL очень хорошо подходит для доступа к базам данных по Internet.
Технические возможности СУБД MySQL
Более детальную информацию по техническим возможностям MySQL можно получить в разделе Глава 6, Справочник по языку MySQL.
ПО MySQLявляется системой клиент-сервер, которая содержит многопоточныйSQL-сервер, обеспечивающий поддержку различных вычислительных машин баз данных, а также несколько различных клиентских программ и библиотек, средства администрирования и широкий спектр программных интерфейсов (API).Мы также поставляем сервер MySQL в виде многопоточной библиотеки, которую можно подключить к пользовательскому приложению и получить компактный, более быстрый и легкий в управлении продукт.
Доступно также большое количество программного обеспечения MySQL,
разработанного сторонними разработчиками.
Вполне возможно, что СУБД
MySQLуже поддерживается вашим любимым приложением или языком.
MySQL правильно произносится как ''Май Эс Кью Эль'' (а не ''майсиквел''), хотя никто не запрещает вам произносить эту аббревиатуру как ``майсиквел'' или еще каким-либо образом.
1.4.1. История MySQL
В один прекрасный день мы решили
применить mSQL для доступа к нашим
таблицам, для которых
использовались собственные
быстрые (ISAM)
подпрограммы низкого уровня.
Однако после тестирования мы
пришли к заключению, что для наших
целей скорость и гибкость mSQL
недостаточны. В результате для
базы данных был разработан новый
SQL-интерфейс, но почти с тем же
API-интерфейсом, что и mSQL. Этот API мы
выбрали, чтобы упростить перенос
на код сторонних разработчиков.
Происхождение имени MySQL не совсем
ясно. Уже около 10 лет наша основная
директория и большое количество
библиотек и инструментария имеют
префикс my. Более того,
дочь Монти (она несколькими годами
моложе) тоже получила имя My! Что из
этих двух факторов повлияло на имя
- до сих пор остается загадкой, даже
для разработчиков.
1.4.2. Основные возможности MySQL
Ниже приведено описание важных характеристик программного обеспечения MySQL. See Раздел 1.7, «Кратко о MySQL 4.x».
Внутренние характеристики и переносимость
Написан на C и C++. Протестирован на множестве различных компиляторов.
Работает на различных платформах. See Раздел 2.2.3, «Операционные системы, поддерживаемые MySQL».
Для обеспечения переносимости используется GNU Automake, Autoconf и Libtool.
API для C, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl. See Глава 8, Интерфейсы для MySQL.
Полностью многопоточный с использованием потоков ядра. Это означает, что, если такая возможность обеспечивается, можно легко организовать работу с несколькими процессорами.
Очень быстрые дисковые таблицы на основе В-деревьев со сжатием индексов.
Очень быстрая базирующаяся на потоках система распределения памяти.
Очень быстрые соединения, использующие оптимизированный метод однопроходного мультисоединения (one-sweep multi-join).
Хеш-таблицы в памяти, используемые как временные таблицы.
SQL-функции реализованы при помощи хорошо оптимизированной библиотеки классов, поэтому они выполняются настолько быстро, насколько это возможно. Обычно после инициализации запроса распределения памяти не происходит вообще.
MySQL- код протестирован с использованием Purify (коммерческий детектор утечки памяти), а также Valgrind, одного из GPL-инструментов (http://developer.kde.org/~sewardj/
Типы столбцов
Большое количество: целочисленные со знаком/беззнаковые, длиной в 1, 2, 3, 4 и 8 байтов,
FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,TIME,DATETIME,TIMESTAMP,YEAR,SETиENUM. See Раздел 6.2, «Типы данных столбцов».С записями фиксированной и переменной длины.
Все столбцы имеют значения по умолчанию. С помощью
INSERTможно вставить подмножество столбцов таблицы; столбцы, для которых явно не заданы значения, устанавливаются в значения по умолчанию.
Команды и функции
Полная поддержка операторов и функций в
SELECT- иWHERE- частях запросов. Например:mysql>
SELECT CONCAT(first_name, " ", last_name)->FROM tbl_name->WHERE income/dependents > 10000 AND age > 30;Полная поддержка для операторов SQL
GROUP BYиORDER BYс выражениями SQL. Поддержка групповых функций (COUNT(),COUNT(DISTINCT ...),AVG(),STD(),SUM(),MAX()иMIN()).Поддержка
LEFT OUTER JOINиRIGHT OUTER JOINс синтаксисом ANSI SQL и ODBC.Разрешены псевдонимы для таблиц и столбцов в соответствии со стандартом SQL92.
DELETE,INSERT,REPLACE, andUPDATEвозвращают число строк, которые были изменены. Вместо этого можно задать возвращение совпавших строк. Для этого следует установить флаг при соединении с сервером.Команду
SHOW, которая является специфической для MySQL, можно использовать для получения информации о базах данных, таблицах и индексах. Чтобы выяснить, как оптимизатор выполняет запрос, можно применять командуEXPLAIN.Имена функций не конфликтуют с именами таблиц и столбцов. Например,
ABSявляется корректным именем столбца. Для вызова функции существует только одно ограничение: между именем функции и следующей за ним открывающей скобкой ‘(’ не должно быть пробелов. See Раздел 6.1.7, «``Придирчив'' ли MySQL к зарезервированным словам?».В одном и том же запросе могут указываться таблицы из различных баз данных (с версии 3.22).
Безопасность
Система, основанная на привилегиях и паролях, за счет чего обеспечивается гибкость и безопасность, и с возможностью верификации с удаленного компьютера. Пароли защищены, т.к. они при передаче по сети при соединении с сервером шифруются.
Масштабируемость и ограничения
Управляет очень большими базами данных. Компания MySQL AB. использует
MySQLдля работы с несколькими базами данных, которые содержат 50 миллионов записей, кроме того, нам известны пользователи, использующие MySQL для работы с 60000 таблицами, включающими около 5000000000 строк.Для каждой таблицы разрешается иметь до 32 индексов. Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов. Максимальная ширина индекса 500 бит (это значение может быть изменено при компиляции MySQL). Для индекса может использоваться префикс поля
CHARилиVARCHAR.
Установка соединений
Клиенты могут соединяться с
MySQL, используя сокеты TCP/IP, сокеты Unix или именованные каналы (named pipes, под NT).Поддержка
ODBC(Open-DataBase-Connectivity) для Win32 (с исходным кодом). Все функции ODBC 2.5 и многие другие. Например, для соединения с MySQL можно использовать MS Access. See Раздел 8.3, «Поддержка ODBC в MySQL».
Локализация
Сервер может обеспечивать сообщения об ошибках для клиентов на различных языках. See Раздел 4.6.2, «Сообщения об ошибках на языках, отличных от английского».
Полная поддержка нескольких различных кодировок, включая ISO-8859-1 (Latin1), немецкий, big5, ujis и многие другие. Например, скандинавские символы разрешены в именах таблиц и столбцов.
Для хранения всех данных используется выбранный набор символов. Все сравнения для столбцов с нормальными строками проводятся с учетом регистра символов.
Сортировка производится согласно выбранному алфавиту (по умолчанию используется шведский). Эту установку можно изменить при запуске сервера MySQL. Чтобы ознакомиться с примером очень грамотной сортировки, можно обратиться к коду сортировки для чешского языка. MySQL поддерживает много различных кодировок, которые можно задавать во время компиляции и в процессе работы.
Клиенты и инструментарий
Включает
myisamchk, очень быструю утилиту для проверки, оптимизации и восстановления таблиц. Все функциональные возможностиmyisamchkтакже доступны через SQL-интерфейс. See Глава 4, Администрирование баз данных.Все MySQL-программы можно запускать с опциями
--helpили-?для получения помощи.
1.4.3. Насколько стабильным является MySQL?
Этот раздел дает ответ на следующие вопросы ''Насколько стабильным является MySQL?'' и ''Могу ли я положиться на MySQL в своем проекте?'' Мы попытаемся внести ясность в эти проблемы, а также ответить на некоторые важные вопросы, которые имеют значение для многих потенциальных пользователей. Информация данного раздела базируется на данных из списка рассылки, - наши пользователи очень активно сообщают нам о выявленных проблемах и о своем опыте использования нашего ПО.
Самые первые версии кода были
созданы в начале 80-х. Это был
устойчивый код с форматом таблиц
ISAM, обеспечивающим
обратную совместимость с
предыдущими версиями. Во времена
компании TcX, предшественника MySQL AB,
с середины 1986 года код MySQL работал в
проектах без каких-либо проблем. Но
когда сервер MySQL был выпущен для
широкого использования, оказалось,
что существует несколько
фрагментов ``непротестированного
кода''. Эти фрагменты были быстро
обнаружены новыми пользователями,
которые составляли запросы в
несколько ином виде, чем мы.
С каждым новым релизом количество проблем, связанных с переносимостью, уменьшалось (несмотря на то, что в каждом выпуске появлялось множество новых возможностей).
Каждый релиз MySQL был рабочим, проблемы возникали только при использовании кода из ``серых зон''. Естественно, что новые пользователи не знают о том, где находятся такие ``серые зоны''; в данном разделе сделана попытка описать те из них, которые известны на данный момент. Большая часть описания относится к версии 3.23 MySQL-сервера. В самой последней версии все известные ошибки устранены, за исключением тех, которые перечислены в разделе ошибок, а также конструктивных дефектов. See Раздел 1.9.5, «Известные ошибки и недостатки проектирования в MySQL».
Структура ПО MySQL является многоуровневой с независимыми модулями. Некоторые из новейших модулей перечислены ниже, причем по каждому дается информация о том, насколько хорошо он протестирован.
Репликация - Gamma
Большие серверные кластеры, в которых применяется репликация, находятся в промышленной эксплуатации и показывают хорошие результаты. Работа над средствами репликации в MySQL 4.x продолжается.
InnoDB-таблицы - стабильно (в 3.23 с 3.23.49)Обработчик транзакционных
InnoDB-таблиц объявлен в настоящее время стабильными в дереве MySQL 3.23, начиная с версии 3.23.49.InnoDBиспользуется в больших промышленных системах с большой нагрузкой.BDB-таблицы - GammaКод
Berkeley DBочень устойчив, но на настоящий момент продолжается усовершенствование интерфейса обработчика транзакционныхBDB-таблиц с MySQL, поэтому должно пройти некоторое время, пока он будет так же хорошо протестирован, как и таблицы других типов.Полнотекстовый поиск- BetaПолнотекстовый поиск работает, но широко не используется. В версии MySQL 4.0 реализованы существенные улучшения данной возможности.
MyODBC 2.50(использующий ODBC SDK 2.5) - GammaЧрезвычайно широко используется. Как оказалось, некоторые из возникших проблем являются зависящими от приложения, а не от ODBC-драйвера или сервера баз данных.
Aвтоматическое восстановление
MyISAM-таблиц - GammaСтатус Gamma относится только к новому коду в обработчике таблиц, который проверяет правильность закрытия таблицы после ее открытия и выполняет автоматическую проверку/восстановление незакрытой таблицы.
Вставка больших объемов данных - Alpha
Новая возможность в
MyISAM-таблицах в MySQL 4.0 для быстрой вставки большого количества строк.Блокировка - Gamma
В большой степени зависит от системы. В некоторых системах возникают большие проблемы с использованием стандартной для ОС блокировки (
fcntl()). В таких случаях следует запустить демонmysqldс флагом--skip-external-locking. Известно, что проблемы имеют место в некоторых системах Linux и в SunOS, когда используются NFS-монтированные файловые системы.
Несмотря на то, что высококвалифицированную поддержку MySQL AB обеспечивает за плату, в списке рассылки MySQL обычно можно получить ответы на часто возникающие вопросы. Ошибки обычно ликвидируются сразу же при помощи патчей, а серьезные дефекты почти всегда устраняются в новом выпуске.
1.4.4. Насколько большими могут быть таблицы в MySQL?
MySQL версии 3.22 имеет предел по размеру таблиц 4 Гб. В MySQL версии 3.23, где используется новый тип таблиц, максимальный размер таблицы доведен до 8 миллионов терабайтов (2 ^ 63 bytes).
Однако следует заметить, что операционные системы имеют свои собственные ограничения по размерам файлов. Ниже приведено несколько примеров:
| Операционная система | Ограничения на размеры файла |
| 32-разрядная Linux-Intel | 2Гб, 4Гб и более, в зависимости от версии Linux |
| Linux-Alpha | 8T (?) |
| Solaris 2.5.1 | 2 Гб (с патчем возможно 4Гб) |
| Solaris 2.6 | 4Гб (может быть изменено при помощи указания флага) |
| Solaris 2.7 Intel | 4 Гб |
| Solaris 2.7 UltraSPARC | 512 Гб |
В Linux 2.2 существует возможность создавать таблицы с размерами более 2 Гб, используя патч LFS для файловой системы ext2. Существуют также патчи, обеспечивающие поддержку больших файлов для ReiserFS в Linux 2.4.
Как можно видеть, размер таблицы в базе данных MySQL обычно лимитируется операционной системой.
По умолчанию MySQL-таблицы имеют
максимальный размер около 4 Гб. Для
любой таблицы можно
проверить/определить ее
максимальный размер с помощью
команд SHOW TABLE STATUS или
myisamchk -dv table_name. See
Раздел 4.5.6, «Синтаксис команды SHOW».
Если необходимы таблицы большего
размера, чем 4 Гб (и используемая
операционная система ``не
возражает''), следует при создании
такой таблицы задать параметры
AVG_ROW_LENGTH и MAX_ROWS
(see Раздел 6.5.3, «Синтаксис оператора CREATE TABLE»). Эти параметры
можно задать и позже - с помощью
ALTER TABLE (see
Раздел 6.5.4, «Синтаксис оператора ALTER TABLE»).
Если большая таблица
предназначена только для чтения,
можно воспользоваться
myisampack, чтобы слить
несколько таблиц в одну и сжать ее.
Обычно myisampack ужимает
таблицу по крайней мере на 50%,
поэтому в результате можно
получить очень большие таблицы (see
Раздел 4.7.4, «myisampack, MySQL-генератор сжатых таблиц (только для чтения)»).
Есть еще одна возможность обойти
ограничения операционной системы
на размеры файлов данных MyISAM, - это
делается при помощи опции
RAID (see Раздел 6.5.3, «Синтаксис оператора CREATE TABLE»).
Еще одним решением может быть
использование функции
MERGE, которая
обеспечивает возможность
обрабатывать набор идентичных
таблиц как одну таблицу (see
Раздел 7.2, «Таблицы MERGE»).
1.4.5. Вопросы, связанные с Проблемой-2000
Сам MySQL не имеет проблем, связанных с Проблемой-2000 (Y2K):
В MySQL используются функции времени Unix, поэтому проблемы с датами, вплоть до
2069, исключены. Принимается, что все двузначные значения годов находятся в диапазоне с1970по2069, поэтому число01в столбце с типомyearMySQL обрабатывает как2001.Все MySQL-функции, обрабатывающие даты, хранятся в одном файле
sql/time.cc. Их код был написан очень тщательно, чтобы застраховаться от проблем, связанных с 2000-м годом.В версиях MySQL 3.22 и более поздних в столбцах с новым типом
YEAR, который обеспечивает хранение нулевого0года и значений лет от1901до2155в одном байте, а также отображение дат при помощи 2 или 4 знаков.
Проблемы, связанные с 2000-м годом,
могут возникнуть в приложениях,
которые используют MySQL так, что это
может оказаться небезопасным с
точки зрения Y2K. Например, во многих
старых приложениях для хранения и
обработки значений годов
используются 2-значные величины
(которые можно трактовать
неоднозначно), а не 4-значные. Эта
проблема может быть урегулирована
при помощи приложений, которые
используют 00 или
99 как ``отсутствующие''
индикаторы значений.
К сожалению, такие проблемы бывает сложно устранить, так как разные приложения могут быть написаны разными программистами, каждый из которых мог применять отличный от других набор соглашений и обрабатывающих значения даты функций.
Приведенный ниже код является наглядной демонстрацией того, что в MySQL Server проблемы с датами вплоть до 2030 года отсутствуют.
mysql>DROP TABLE IF EXISTS y2k;Query OK, 0 rows affected (0.01 sec) mysql>CREATE TABLE y2k (date DATE,->date_time DATETIME,->time_stamp TIMESTAMP);Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO y2k VALUES->("1998-12-31","1998-12-31 23:59:59",19981231235959),->("1999-01-01","1999-01-01 00:00:00",19990101000000),->("1999-09-09","1999-09-09 23:59:59",19990909235959),->("2000-01-01","2000-01-01 00:00:00",20000101000000),->("2000-02-28","2000-02-28 00:00:00",20000228000000),->("2000-02-29","2000-02-29 00:00:00",20000229000000),->("2000-03-01","2000-03-01 00:00:00",20000301000000),->("2000-12-31","2000-12-31 23:59:59",20001231235959),->("2001-01-01","2001-01-01 00:00:00",20010101000000),->("2004-12-31","2004-12-31 23:59:59",20041231235959),->("2005-01-01","2005-01-01 00:00:00",20050101000000),->("2030-01-01","2030-01-01 00:00:00",20300101000000),->("2050-01-01","2050-01-01 00:00:00",20500101000000);Query OK, 13 rows affected (0.01 sec) Records: 13 Duplicates: 0 Warnings: 0 mysql>SELECT * FROM y2k;+------------+---------------------+----------------+ | date | date_time | time_stamp | +------------+---------------------+----------------+ | 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 | | 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 | | 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 | | 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 | | 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 | | 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 | | 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 | | 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 | | 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 | | 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 | | 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 | | 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 | | 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 | +------------+---------------------+----------------+ 13 rows in set (0.00 sec)
Можно видеть, что при
использовании типов DATE и
DATETIME проблем с датами
будущего не возникнет (эти типы
``справляются'' с датами вплоть до
9999 года).
Тип TIMESTAMP, который
используется для сохранения
текущего времени, имеет диапазон
только до 2030-01-01. В
32-разрядных машинах
TIMESTAMP тип имеет диапазон
от 1970 до 2030
(значение со знаком). В 64-разрядных
машинах этот тип ``справляется'' со
значениями времени до 2106
года (значение без знака).
Таким образом, даже несмотря на то, что MySQL является Y2K-совместимым, ответственность за однозначную интерпретацию значений даты ложится на плечи пользователя. See Раздел 6.2.2.1, «Проблема 2000 года и типы данных», где приведены правила по работе MySQL с входными данными, которые имеют неоднозначные значения даты (данные, содержащие 2-значные значения года).
1.5. Что представляет собой компания MySQL AB?
MySQL AB - компания, в состав которой
входят основатели MySQL и основные
разработчики. MySQL AB создана в Швеции
Дэвидом Аксмарком (David Axmark), Аланом
Ларссом (Allan Larsson) и Майклом
Монти Видениусом (Michael Monty
Widenius).
Все разработчики сервера MySQL - штатные сотрудники компании. MySQL AB - виртуальная компания, состоящая из сотрудников, живущих в десятках стран по всему миру. Мы каждый день общаемся по Сети друг с другом, а также с нашими партнерами и пользователями.
Наша компания занимается разработкой и распространением СУБД MySQL и сопутствующего ПО. MySQL AB владеет всеми правами на исходный код MySQL, на логотип и торговую марку MySQL, а также на данное руководство (see Раздел 1.4, «Что представляет собой MySQL?»).
Наши основные ценности - это то, что
наша деятельность посвящена MySQL и
идеям Open Source, открытого
программного обеспечения.
Мы хотим, чтобы сервер MySQL соответствовал следующим критериям:
Лучший и популярнейший сервер СУБД в мире
Доступный всем
Простой в эксплуатации
Постоянно развивающийся не в ущерб скорости и безопасности
Работающий надежно
Удобный для использования и усовершенствования
MySQL AB и люди, работающие в MySQL AB:
Продвигают философию Open Source и поддерживают пользователей Open Source
Хорошие граждане
С удовольствием работают с партнерами, разделяющими нашу точку зрения и ценности
Отвечают на электронную почту и предоставляют поддержку пользователям
Является виртуальной командой, взаимодействующей через Internet
Работают ``против'' патентованного ПО
Свежая информация о MySQL и MySQL AB находится на сайте MySQL (http://www.mysql.com/).
1.5.1. Бизнес-модель и услуги, оказываемые компанией MySQL AB
- 1.5.1.1. Поддержка
- 1.5.1.2. Обучение и сертификация
- 1.5.1.3. Консультации
- 1.5.1.4. Коммерческие лицензии
- 1.5.1.5. О нашей программе партнерства
- 1.5.1.6. О рекламе
Очень часто нам задают такой вопрос: ''Как вам удается зарабатывать на жизнь, ведь вы все раздаете бесплатно?''
Компания MySQL AB получает плату за поддержку, услуги, коммерческие лицензии и лицензионные платежи. Эти доходы вкладываются в разработку продукта и расширение бизнеса нашей компании.
Компания является прибыльной с момента своего основания. В октябре 2001 ряд ведущих скандинавских инвесторов и небольшая группа меценатов предоставили нам венчурный кредит. Эти капиталовложения идут на укрепление нашей бизнес-модели и создают основу устойчивого роста бизнеса компании.
1.5.1.1. Поддержка
Владельцами и руководителями компании MySQL AB являются ее основатели и ведущие разработчики ПО баз данных MySQL. В задачи разработчиков входит предоставление поддержки клиентам и другим пользователям, что обеспечивает нам возможность всегда быть в курсе их потребностей и проблем. Вся наша поддержка осуществляется квалифицированными разработчиками. Ответы на самые каверзные вопросы дает
Майкл Монти Вайдиниус (Michael Monty Widenius), главный автор MySQL Server. See Раздел 1.6.1, «Поддержка, предлагаемая компанией MySQL AB».
Для более подробной информации и
заказа различных уровней
поддержки обратитесь на веб-сайт
https://order.mysql.com/
или свяжитесь с нашим отделом
сбыта по адресу <[email protected]>.
1.5.1.2. Обучение и сертификация
Компания MySQL AB проводит обучение по MySQL и другим смежным продуктам по всему миру. Мы предлагаем как общедоступные, так и внутрифирменные курсы, подготовленные в соответствии с конкретными потребностями вашей компании. Обучение по MySQL проводят также наши партнеры - авторизованные центры обучения по MySQL.
В наших учебных материалах в качестве примеров используются те же базы данных, что и в нашей документации и типовых приложениях. Эти материалы постоянно дополняются, чтобы соответствовать последней версии MySQL. Наши инструкторы опираются на поддержку коллектива разработчиков, что гарантирует качество обучения и постоянное совершенствование учебного материала. Благодаря тесной связи с разработчиками вы можете быть уверены также и в том, что какой бы вопрос ни возник у вас в процессе обучения, на него всегда будет найден ответ.
Обучение на наших курсах позволит вам достичь целей, которые вы ставите перед собой при создании своих MySQL-приложений. Помимо этого вы:
сэкономите время
повысите эффективность работы своих приложений
уменьшите или устраните необходимость в дополнительном оборудовании, сократив таким образом издержки
усилите защищенность своих приложений
полнее удовлетворите потребности ваших заказчиков и коллег.
подготовитесь к
сертификации по MySQL.
Если предлагаемое нами обучение интересует вас как потенциального участника нашего проекта или партнера в реализации учебных курсов,