Для чего используется mysql
Что такое MySQL
MySQL — это система управления базами данных (СУБД), распространяемая как свободное программное обеспечение (пользователи имеют право на неограниченную установку, запуск, свободное использование). В этой статье мы простыми словами объясним, что такое базы данных, зачем нужна MySQL и где ее применяют.
Что такое база данных
База данных (БД) — набор некоторых данных, которые хранятся в упорядоченной форме (это важно). Для наглядности проведем аналогию из жизни. Представьте, что вы собрались на прием к врачу, а ваша медицинская карта находится в поликлинике. Вы приходите в регистратуру и просите ее предоставить. Чтобы врач быстрее это сделал и не перебирал сотни пациентов, все карты хранятся в специальной картотеке, где они упорядочены по участкам, адресам, фамилиям. Похожие картотеки используются в библиотеках: в них хранится информация о книгах и авторах в упорядоченном виде. Все эти картотеки — это примеры баз данных в обычной жизни.
Так выглядит картотека в библиотеке.
В программировании под базой данных подразумевают папку на сервере (компьютере), в которой хранятся таблицы с упорядоченными, структурированными данными.
Из чего состоит база данных
Базы данных состоят из таблиц. Если снова провести аналогию с картотекой, то один ящик в картотеке будет одной таблицей в базе данных. Таблица в рамках сервера — это файл, в котором хранятся данные определенного типа (например, данные о клиентах, продуктах или заказах). Важно понимать, что эти данные не должны перемешиваться и каждые из них должны находиться в отдельной предназначенной для них таблице. Таблиц в рамках одной БД может быть множество.
Таблицы состоят из столбцов и строк. В таблицах каждый конкретный столбец рассчитан для хранения определенной части информации. Например, в таблице о клиентах мы можем хранить в одном столбце имя, в другом фамилию, в третьем электронную почту.
ID | Name | Surname | |
1 | Василий | Иванов | ivanov@gmail.com |
2 | Николай | Петров | — |
3 | Николай | Петров | — |
Пример таблицы.
По таблице видно, что строки, в отличие от столбцов, хранят всю информацию о конкретной сущности. В нашем примере в строке №1 собрана вся информация о клиенте «Василий Иванов» — его имя, фамилия, электронная почта.
Однако мы видим, что в таблице есть 2 клиента с одинаковым именем и фамилией — Николай Петров. Электронная почта в обоих случаях не указана. Как идентифицировать этих клиентов?
Для этого существует первичный ключ. Первичный ключ — это атрибут или набор атрибутов, который нужен для идентификации каждой записи. В нашем случае это столбец ID. Все значения в этом поле должны быть уникальными.
Чем база данных отличается от СУБД
Часто начинающие вебмастера путают понятия базы данных и СУБД. Если база данных — это набор данных, то СУБД (система управлением базами данных) — это специальное программное обеспечение, разработанное для управления этими базами данных. Существует множество СУБД, например: PostgreSQL, SQLite, Oracle Database и MySQL, о которой мы рассказываем в этой статье.
Чем MySQL отличается от SQL
SQL (Structured Query Language) — язык программирования, созданный для работы с базами данных. MySQL — это СУБД, которая поддерживает SQL. SQL — это универсальный язык, который поддерживают все системы управлением базами данных, поэтому, зная его, вы сможете работать с любыми СУБД.
Для чего нужна MySQL
Представьте, что вы разрабатываете свой собственный сайт. Со временем страниц на нем становится все больше, контент продолжает расти. Чтобы оптимизировать работу с большим объемом информации, используют базы данных. В свою очередь, сами БД тоже постоянно меняются и дополняются новыми данными. Для упрощения процесса администрирования, добавления и редактирования информации, были разработаны специальные системы управления (СУБД). Мы выяснили ранее, что MySQL — это одна из множества СУБД, которую используют для упрощения работы с базами данных. Она включает в себя библиотеку внутреннего сервера, с помощью которой можно использовать MySQL в отдельных программах.
Преимущества MySQL
Где используют MySQL
По функциональной оснащенности и надежности MySQL давно конкурирует с другими известными продуктами. Чаще всего ее используют при разработке веб-решений, что объясняется тесной интеграцией с популярными языками программирования, высокими показателями скорости и, конечно, ее бесплатностью. В основном MySQL применяют в следующих проектах:
Таким образом, на MySQL обращают внимание как небольшие компании, так и крупные корпорации. Данная СУБД привлекает своей надежностью и свободным распространением. Если дело касается веб-разработки, то MySQL практически всегда будет лучшим вариантом (с учетом потребностей, специфики проекта и экономической целесообразности). Надеемся, теперь вам понятно, что такое MySQL, зачем она нужна и где ее применяют. Спасибо, что дочитали!
Что Такое MySQL: Объяснение MySQL Для Начинающих
Если вы хотите быстро разобраться в технической терминологии — вы попали по адресу. Мы делаем наш веб-хостинг простым и доступным, то же самое касается наших учебных материалов. Итак, что такое MySQL? Давайте разберёмся прямо сейчас.
Что такое MySQL?
Прежде всего, вы должны знать, как это произносится: MY-ES-KYOO-EL ’[май-эс-кью-эл]. Вы можете услышать и другие варианты произношения, но, по крайней мере теперь, вы знаете официальное произношение. Шведская компания MySQL AB первоначально разработала MySQL в 1994 году. Тогда американская технологическая компания Sun Microsystems полностью приобрела право собственности, купив MySQL AB в 2008 году. Американский технологический гигант Oracle в 2010 году приобрёл Sun Microsystems, а с тех пор MySQL практически принадлежала Oracle.
Что касается общего определения, MySQL это система управления реляционными базами данных с открытым исходным кодом (СУРБД) с моделью клиент-сервер. СУРБД — это программное обеспечение или служба, используемая для создания и управления базами данных на основе реляционной модели. Теперь давайте подробнее рассмотрим каждый термин:
База данных
База данных — это просто набор структурированных данных. Например, когда вы делаете селфи: вы нажимаете кнопку и фотографируете себя. Ваша фотография — это данные, а галерея вашего телефона — это база данных. База данных — это место, в котором хранятся данные. Слово «реляционный» означает, что данные, хранящиеся в наборе данных, организованы в виде таблиц. Каждая таблица связана в некотором роде. Если программное обеспечение не поддерживает реляционную модель данных, просто назовите её СУБД.
Открытый исходный код
Открытый исходный код означает, что вы можете свободно использовать и изменять его. Любой может установить программное обеспечение. Вы также можете изучить и настроить исходный код, чтобы он лучше соответствовал вашим потребностям. Однако GPL (GPU Public License) определяет, что именно вы можете сделать в зависимости от условий. Коммерческая лицензированная версия доступна, если вам нужно более гибкое владение и расширенная поддержка.
Модель клиент-сервер
Компьютеры, которые устанавливают и запускают программное обеспечение СУРБД, называются клиентами. Когда им нужно получить доступ к данным, они подключаются к серверу СУРБД. Это система «клиент-сервер».
MySQL является одним из многих вариантов программного обеспечения СУРБД. Считается, что СУРБД и MySQL одинаковы из-за популярности MySQL. Назовите несколько крупных веб-приложений, таких как Facebook, Twitter, YouTube, Google и Yahoo! все используют MySQL для хранения данных. Хотя изначально он создавался для ограниченного использования, теперь он совместим со многими важными вычислительными платформами, такими как Linux, macOS, Microsoft Windows и Ubuntu.
MySQL и SQL не совпадают. Помните, что MySQL является одной из самых популярных торговых марок программного обеспечения СУРБД, которая реализует модель клиент-сервер. Итак, как клиент и сервер взаимодействуют в среде СУРБД? Они используют специфичный для домена язык — язык структурированных запросов (SQL). Если вы когда-либо сталкивались с другими именами, в которых есть SQL, такими как PostgreSQL и сервер Microsoft SQL, они, скорее всего, являются брендами, которые также используют синтаксис SQL. Программное обеспечение СУРБД часто пишется на других языках программирования, но всегда использует SQL в качестве основного языка для взаимодействия с базой данных. Сам MySQL написан на C и C ++. Подумайте о странах Южной Америки, все они географически различны и имеют разную историю, но все они в основном говорят по-испански.
Инженер-компьютерщик Тед Кодд разработал SQL в начале 1970-х годов на основе реляционной модели IBM. Он стал более широко использоваться в 1974 году и быстро заменил аналогичные, тогда устаревшие языки, ISAM и VISAM. Помимо истории, SQL сообщает серверу, что делать с данными. Это похоже на ваш пароль или код WordPress. Вы вводите его в систему, чтобы получить доступ к области панели управления. В этом случае операторы SQL могут указать серверу выполнить определённые операции:
Вы искали отличное решение для хостинга? Мы рекомендуем вам следить за страницей купонов Hostinger и быть первым, чтобы получить качественный хостинг по самой низкой цене на рынке!
Подключение к серверу.
Серверу MySQL, чтобы подключиться к нему, нужно передать 4 параметра:
Подключаться к серверу нужно с помощи команды:
Выбирать конкретную Базу данных:
Закрыть подключение нужно командой:
И соответственно полный пример подключения, выбирание нужной таблицы и закрытие подключеиния :
Создание таблиц. Заполнение информацией БД
Вот мы подключились к серверу MySQL и выбрали БД. Что дальше? Дальше нужно создать новую таблицу. Управления БД в MySQL управляется с помощью специального языка запросов SQL. Поначалу он кажется страшным, непонятным и сложным, но через некоторое время при активной работе с БД вы сможете легко читать самые сложные с виду SQL-запросы (сам так же путался в начале..). Начнем.
Можно создавать сколько угодно полей. Заместо ТипПоля1 пишется:
Это 2 основных типа поля. На самом деле их очень много, но перечислять их — займет лишком много места. Итак, разобрались с созданием таблиц. Пример использования:
Добавление информации в БД
Для этого существует та же команда, только другой SQL-запрос:
Думаю, здесь никаких сложностей не возникнет. Единственное, значения поля с типом TEXT вводить в одинарных кавычках. И, как всегда, пример:
Изменение информации в БД
Для этого используется такая команда:
Такой командой мы обновляем записи, указанные в скобках, а данной таблице, если они подходят по какому либо условию (WHERE …). Это мы рассмотри чуть позже. Сейчас — пример:
Теперь полностью — подключение, создание таблицы, заполнение информации, ее обновление и закрытие подключения:
В итоге у нас появится новая таблица test_zero, в которой будет одна запись.
Получение информации из БД.
Допустим, у нас большущая БД, в которой хранятся сотни записей. Как же эти записи получить? Очень просто:
while($row=mysql_fetch_array($res))
<
$num=$row[ num ];
$title=$row[ title ];
$text=$row[ text ];
Условия получения информации из БД
Когда в таблице сотни записей, получать все не всегда целесообразно. Для этого вводят какое либо условие:
lИх так же достаточно много, это основные.
ОПЕРАТОР — логический оператор:
Это так же основные.
Пример вытаскивания из таблицы записей, номер которых больше 10:
И, так сказать, итоговый пример применения БД:
$res=mysql_query(«SELECT * FROM test_zero «);
while($row=mysql_fetch_array($res))
<
$num=$row[ num ];
$title=$row[ title ];
$text=$row[ text ];
Ну вот и все! Конечно, это очень простой пример, но позволит вам научится простейшие работе с БД. На основе полученных знаний можно сделать гостевую книгу, скрипт выводящий новости, систему статистики и т.д.
Если бы мне попалась эта статья пораньше — я бы не стал ее писать. Когда я еще не знал MySQL, я перерыл статей 10. Достаточно быстро научился создавать таблицы и заполнять их. А вывести не получалось. Пришлось практически методом тыка учится. специально для этого я и написал эту статью.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
MySQL
MySQL (МФА: [maɪ ˌɛskjuːˈɛl]) — свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP, VertrigoServ. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
26 февраля 2008 года Sun Microsystems приобрела MySQL AB за 1 млрд долларов, 27 января 2010 года Oracle приобрела Sun Microsystems за 7,4 млрд долларов и включила MySQL в свою линейку СУБД.
Сообществом разработчиков MySQL созданы различные ответвления кода, такие как Drizzle (англ.), OurDelta, Percona Server и MariaDB. Все эти ответвления уже существовали на момент поглощения компании Sun корпорацией Oracle.
Содержание
О происхождении MySQL
MySQL возникла как попытка применить mSQL к собственным разработкам компании: таблицам, для которых использовались ISAM — подпрограммы низкого уровня. В результате был выработан новый SQL-интерфейс, но API-интерфейс остался в наследство от mSQL. Откуда происходит название «MySQL» — доподлинно неизвестно. Разработчики дают два варианта: либо потому, что практически все наработки компании начинались с префикса My, либо в честь девочки по имени My, дочери Майкла Монти Видениуса, одного из разработчиков системы.
Логотип MySQL в виде дельфина носит имя «Sakila». Он был выбран из большого списка предложенных пользователями «имён дельфина». Имя «Sakila» было отправлено Open Source-разработчиком Ambrose Twebaze.
Лицензирование
MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии GPL. Однако по условиям GPL, если какая-либо программа использует библиотеки (или включает в себя другой GPL-код) MySQL, то она тоже должна распространяться по лицензии GPL. Это может расходиться с планами разработчиков, не желающих открывать исходные тексты своих программ. Для таких случаев предусмотрена коммерческая лицензия, которая также обеспечивает качественную сервисную поддержку. Для свободного программного обеспечения Oracle предоставляет отдельное исключение из правил, явным образом разрешающее использование и распространение MySQL вместе с ПО, распространяемым под лицензией из определённого Oracle списка.
Платформы
MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003, WinCE, Windows Vista, Windows 7 и Windows 10. Существует также порт MySQL к OpenVMS. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.
Языки программирования
MyODBC представляет собой драйвер ODBC (2.50) уровня 0 (с некоторыми возможностями уровней 1 и 2) для подсоединения совместимого с ODBC приложения к MySQL. MyODBC работает на всех системах Microsoft Windows и на большинстве платформ Unix.
История выпусков
MySQL 4.0
Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение. Основные возможности этой версии:
MySQL 4.1
Рекомендованной версией на 2005 год является MySQL 4.1 вышла 27 октября 2004. Она содержит следующие нововведения:
MySQL 5.0
Версия MySQL 5.0 вышла 24 октября 2005 года, в этой версии значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД. Если раньше СУБД MySQL обвиняли в недостаточной поддержке стандарта SQL, то с появлением пятой версии этой популярной базы данных появилась практически полная поддержка стандарта SQL. MySQL 5.0 содержит следующие нововведения:
MySQL 5.1
Версия MySQL 5.1 продолжает путь к стандарту SQL:2003. MySQL 5.1 содержит следующие нововведения.
Тип таблиц Maria
Maria (начиная с версии 5.2.x — Aria) — расширенная версия хранилища MyISAM, с добавлением средств сохранения целостности данных после краха. Основные достоинства Maria.
MySQL 5.5
Ветка MySQL 5.5 базируется на невыпущенной серии MySQL 5.4 и содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:
MySQL 6.0
Версия MySQL 6.0 была заморожена на стадии альфа-тестирования. Первоначально было принято решение о создании версии 5.2, вскоре эта версия была переименована в 6.0. Однако позже информация о MySQL 6.0 исчезла с сайта, а разработчики сосредоточились на версии 5.5 и следующей за ней версии 5.6. Одним из основных нововведений версии 6.0 планировался новый тип таблиц Falcon, разработанный в качестве потенциальной замены для InnoDB компании Innobase, приобретённой компанией Oracle. В связи с приобретением в 2010 году Sun Microsystems тем же Oracle, судьба Falcon остаётся под вопросом.
MySQL 5.6
Стабильный релиз ветки MySQL 5.6 анонсирован 5 февраля 2013.
MySQL 5.7
Первая версия ветки MySQL 5.7.1 анонсирована 23 апреля 2013. Версия MySQL 5.7.8 адаптирована для Debian 8 и Ubuntu 15.04.
Технические характеристики
Максимальные размеры таблиц
Максимальный размер таблиц в MySQL 3.22 до 4 гигабайт, в последующих версиях ограничений нет. Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы. Например, в NTFS этот размер теоретически может быть до 32 эксабайт. В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство. Размер последнего может достигать 64 терабайт. В отличие от MyISAM, в InnoDB имеется значительное ограничение на количество столбцов, которое можно добавить в одну таблицу. Размер страницы памяти по умолчанию составляет 16 килобайт, из которых под данные отведено 8123 байта. Размер указателя на динамические поля составляет 20 байт. Таким образом, в случае использования динамического формата строки (ROW_FORMAT=DYNAMIC), одна таблица может вместить максимум 409 столбцов типа blob или text.
Локализация
Начиная с версии 4.1 в СУБД MySQL внедрена новая система кодировок и сопоставлений. При использовании кодировки Windows-1251, перед выполнением SQL-инструкций необходимо настроить кодировку соединения при помощи операторов:
Эти три оператора эквивалентны вызову одного оператора:
Переменная character_set_client устанавливает кодировку данных, отправляемых от клиента, переменная character_set_results устанавливает кодировку данных, отправляемых клиенту, переменная character_set_connection устанавливает кодировку, в которую преобразуется информация, пришедшая от клиента, перед выполнением запроса на сервере.
При использовании Юникода UTF-8 этот оператор выглядит следующим образом:
Кодировка ISO 8859-5 не поддерживается.
Проблема с Юникод
MySQL не позволяет корректно применять регулярные выражения (операторы REGEXP и RLIKE) на строках в многобайтовых кодировках, например, для Юникода (UTF-8). При необходимости таких операций приходится переходить на однобайтовые кодировки, например русскую Win-1251 или KOI-8.
Основные возможности [6]
Внутренние характеристики и переносимость
Типы столбцов
Команды и функции
Безопасность
Масштабируемость и ограничения
Установка соединений
mySQL на Windows 10
Установка mySQL на Windows 10 Professional 64 bit: [Источник 1]
Для чего используется mysql
MySQL очень быстрый, многопоточный, многопользовательский и поддерживающий SQL (Structured Query Language) сервер баз данных.
MySQL является free software. Он лицензируется по GNU GENERAL PUBLIC LICENSE http://www.gnu.org.
Сайт MySQL предоставляет последнюю информацию касательно MySQL.
Следующий перечень описывает наиболее интересные места руководства:
Если Вы имеете любые предложения относительно добавлений или исправлений этого руководства, пожалуйста, пошлите их на docs@mysql.com.
MySQL представляет собой очень популярную систему управления базами данных с открытыми исходными текстами, разрабатываемую MySQL AB. MySQL AB является коммерческой компанией, строящей свой бизнес на сервисах, сосредоточенных на базе данных MySQL. Подробности в разделе «1.1.2 Что такое MySQL AB».
MySQL представляет собой систему управления базами данных. Базой данных называют структурированный набор данных. Это может быть чем угодно: от простого перечня покупок до галереи изображений. Чтобы добавлять, обращаться и обрабатывать данные, сохраненные в компьютерной базе данных, Вы нуждаетесь в системе управления базы данных, типа MySQL. Так как компьютеры очень хороши при обработке больших количеств данных, базы данных играют центральную роль в вычислениях, как автономные утилиты, или как части других пакетов прикладных программ. MySQL является реляционной СУБД. Реляционная база данных сохраняет данные в отдельных таблицах. Это добавляет быстродействие и гибкость. Таблицы связаны определенными отношениями, делающими возможным объединить данные из нескольких таблиц в одном запросе. SQL-часть MySQL ориентирована на Structured Query Language, наиболее общий стандартизированный язык, используемый, чтобы обратиться к компьютерным базам данных. MySQL является Open Source Software. Open Source означает, что тексты открыты для чтения и правки всем желающим. Любой может скачать MySQL из Internet и использовать его совершенно бесплатно. Любой желающий может изучать исходный текст и изменять его по своему усмотрению. MySQL использует лицензию GPL (GNU General Public License) http://www.gnu.org, чтобы определить то, что Вы можете делать с программным обеспечением в различных ситуациях. Если Вы считаете GPL неудобной или должны внедрить MySQL в коммерческую прикладную программу, Вы можете купить коммерчески запатентованную версию у авторов. Почему используют MySQL? MySQL очень быстр, надежен и легок в использовании. Если это то, что Вы ищете, Вы должны попробовать его. MySQL также имеет очень практичный набор свойств, разработанных в очень близком сотрудничестве с пользователями. Вы можете найти сравнение эффективности MySQL с некоторыми другими администраторами баз данных на странице эталонных тестов. Подробности в разделе «14.1.4 Пакет тестов MySQL Benchmark Suite». MySQL был первоначально разработан, чтобы обработать очень большие базы данных намного быстрее, чем существующие решения, и успешно использовался в высокотребовательных промышленных средах в течение нескольких лет. При постоянной разработке MySQL сегодня предлагает богатый и очень полезный набор функций. Связность, быстродействие и защита делают MySQL очень подходящим для обращения к базам данных из Internet. Технические возможности MySQL. За подробностями отсылаю Вас к разделу «9 Обзор языка MySQL». MySQL является системой «клиент-сервер», состоящей из многопоточного SQL-сервера, который поддерживает различные функции, нескольких различных клиентских программ и библиотек, административных инструментальных средств и нескольких интерфейсов программирования. MySQL имеет много дополнительных программ. Вероятно, Вы обнаружите, что Ваша любимая прикладная программа или язык программирования уже поддерживает MySQL.
Официально MySQL произносится как «Май-Эс-Ку-Эль», а не как MY-SEQUEL.
MySQL AB является шведской компанией, которая владеет правами на исходные тексты сервера и марку MySQL. Она занимается разработкой, распространением и поддержкой пакета MySQL.
Авторы ищут партнеров, которые хотели бы поддерживать разработку MySQL так, чтобы они могли бы ускорить темп разработки. Если Вы заинтересованы в этом, напишите на e-mail partner@mysql.com!
MySQL AB имеет в настоящее время свыше 20 разработчиков ( http://www.mysql.com/development/team.html) в платежной ведомости, и это число возрастает быстро.
Основные источники дохода:
Авторы пакета хотят, чтобы MySQL всегда был:
MySQL AB и команда MySQL AB:
Название возникло из сокращения (а вернее, слияния) слов My SQL, что на английском языке значит «мой SQL». Названию около десяти лет, оно прижилось еще в те времена, когда пакет не был коммерческой разработкой.
Следующий перечень описывает наиболее важные возможности MySQL:
Этот раздел сводится к вопросам о том, насколько можно доверять пакету, и сколько шансов, что он разнесет на кусочки важный проект, зависящий от него. Строго говоря, MySQL очень надежен.
Попробую разъяснить некоторые проблемы и ответить на некоторые из наиболее важных вопросов, которые, кажется, касаются многих. Этот раздел был собран из информации, собранной из списка рассылки (который является очень активным по части сообщений об ошибках и сбоях).
В TcX MySQL работал без любых проблем в проектах, начиная с середины 1996. Когда MySQL был выпущен на публику, авторы отметили, что имелись некоторые части непроверенного кода, которые были быстро найдены новыми пользователями, делавшими запросы иными способами, чем авторы. Каждый новый выпуск имел меньшее количество проблем мобильности, чем предыдущий (даже при том, что каждый имел много новых свойств).
Каждый выпуск MySQL был пригоден для использования, и имелись проблемы только, когда пользователи начинали использовать код из серых зон. Естественно, пользователи снаружи не видят то, чем являются серые зоны, этот раздел пытается указать, которые зоны в настоящее время известны. Описания имеют дело с MySQL Version 3.23. Все известные и сообщенные ошибки выправлены в последней версии, за исключением ошибок, перечисленных в отдельном разделе, которые являются проблемами, связанными с проектом. Подробности в разделе «1.2.7 Известные ошибки и проблемы».
MySQL написан на нескольких уровнях и различных независимых модулях. Эти модули перечислены ниже с индикацией относительно того, как хорошо проверен каждый из них (сравните с MS SQL Server!):
MySQL AB обеспечивает поддержку по электронной почте для покупателей соответствующей услуги, но список рассылки MySQL обычно обеспечивает ответы на общие вопросы. Ошибки обычно исправляются сразу же с помощью патча, для серьезных ошибок почти всегда имеется новый выпуск.
MySQL Version 3.22 имеет лимит в 4G на размер таблицы. С новым кодом MyISAM в MySQL Version 3.23 максимальный размер таблицы увеличен до 8 миллионов терабайт (2^63 байт).
Обратите внимание, однако, что операционные системы имеют их собственные ограничения размера файла. Имеются некоторые примеры:
Операционная система | Ограничение размера файла |
Linux-Intel 32 bit | 2G, 4G или больше, зависит от версии Linux |
Linux-Alpha | 8T (?) |
Solaris 2.5.1 | 2G (возможно, до 4G с патчем) |
Solaris 2.6 | 4G |
Solaris 2.7 Intel | 4G |
Solaris 2.7 ULTRA-SPARC | 8T (?) |
В Linux 2.2 Вы можете получать таблицы больше, чем 2G, используя заплату LFS для файловой системы ext2. В Linux 2.4 существует также заплата для ReiserFS, чтобы получить поддержку для больших файлов.
Это означает, что размер таблицы для MySQL обычно ограничивается операционной системой, а не самим пакетом.
Другое решение может быть реализовано с помощью библиотеки MERGE, которая позволяет Вам обрабатывать совокупность идентичных таблиц как одну.
MySQL непосредственно не имеет никаких трудностей с проблемой 2000 (Y2K):
К сожалению, эти проблемы могут быть трудными в исправлении потому, что различные прикладные программы могут быть написаны различными программистами, каждый из которых может использовать различный набор соглашений и обрабатывающих даты функций.
Имеется простой пример, иллюстрирующий, что MySQL не имеет любых проблем с датами до года 2030:
Это показывает, что типы DATE и DATETIME не будут давать никаких проблем с будущими датами (они легко обрабатывают даты вообще до 9999 года).
Даже при том, что MySQL Y2K-совместим, Вы отвечаете за то, чтобы обеспечить однозначный ввод. Подробности в разделе «5.2.1 Проблема Y2K и типы Date», там описаны правила MySQL для ввода дат с неоднозначными данными (данные, содержащие значения года с 2 цифрами).
Этот раздел описывает, как MySQL соответствует стандартам ANSI SQL. MySQL имеет много расширений для них, здесь Вы выясните, что они из себя представляют, и как использовать их. Вы также найдете информацию относительно функциональных возможностей, отсутствующих в MySQL, и как обойти проблемы.
MySQL-расширения перечислены ниже:
Авторы пробуют заставить MySQL следовать стандартам ANSI SQL и ODBC SQL, но в некоторых случаях MySQL обрабатывает некоторые дела по-другому:
Следующие функциональные возможности отсутствуют в текущей версии MySQL. Есть список, указывающий, когда новые расширения могут быть добавлены к MySQL (с их приоритетами), его можно посмотреть в Интернете по адресу http://www.mysql.com/documentation/manual.php?section=TODO.
Во многих случаях Вы можете переписать запрос без sub-select:
Это может быть переделано так:
Могут быть переделаны так:
Второе решение должно использовать интерактивный SQL для автопостроения набора инструкций DELETE при использовании MySQL-расширения CONCAT() (вместо стандартного оператора || ):
MySQL 4.0 поддерживает многотабличное удаление, которое может использоваться, чтобы эффективно удалить строки, основанные на информации из одной таблицы (или даже из многих таблиц) в то же самое время.
Поскольку MySQL в настоящее время поддерживает транзакции, следующее обсуждение имеет силу, только если Вы используете не транзакционно-безопасные типы таблицы. Подробности в разделе «9.2.1 Синтаксис BEGIN/COMMIT/ROLLBACK «.
Часто спрашивают, почему MySQL не транзационная база данных?
MySQL сделал сознательное решение поддерживать другую парадигму для целостности данных: атомные операции. Дело в том, что атомные операции предлагают равную или даже лучшую целостность с намного лучшей эффективностью. Однако, авторы пакета тем не менее оценивают и понимают транзакционную парадигму базы данных и планируют в следующих версиях представить транзакционно-безопасные таблицы. Пользователям будет предоставлена возможность решить, нуждаются ли они в быстродействии атомных операций, или они должны использовать свойства транзакций в своих программах.
Давайте разберемся в том, как MySQL поддержает строгую целостность, и сравним эти свойства с транзакциями.
Перво-наперво в транзакционной системе, если Ваши программы в критических ситуациях вызывают rollback вместо commit, транзакционная схема удобней. Кроме того, транзакции гарантируют, что незаконченные модификации или разрушительные действия не будут применены к базе данных немедленно, сервер дает возможность сделать автоматическую обратную перемотку, и Ваша база данных будет сохранена.
MySQL почти во всех случаях позволяет Вам обойти проблемы включением простых проверок перед модификациями и запуском простых скриптов, которые проверяют целостность базы данных, а также автоматически проводят ремонт. Обратите внимание, что только используя файл регистрации MySQL или даже добавляя один дополнительный файл регистрации, обычно можно востанавливать таблицы без потери целостности данных.
Кроме того, фатальные модификации в транзакционной схеме могут быть переделаны так, чтобы стать атомными. Фактически все проблемы целостности, которые решают транзакции, могут быть выполнены с помощью LOCK TABLES или атомными модификациями, гарантируя, что Вы никогда не получите автоматическое аварийное прекращение работы базы данных, что является общей проблемой для транзакционных баз данных.
Далеко не все транзакции могут предотвращать потерю данных, если сервер рушится. В таких случаях даже транзакционная система может терять данные. Никакая система не 100%-но безопасна, речь идет лишь о минимизации потерь. Даже Oracle, как сообщают, иногда теряет данные в таких ситуациях, хоть и считается самой безопасной из транзакционных баз данных.
Чтобы обеспечить безопасность в MySQL, Вы должны только иметь копии и регистрацию модификаций. С этим Вы можете восстановить фактически любое повреждение базы данных.
«Атомная» означает, что Вы можете убедиться в том, что в то время как каждая специфическая модификация выполняется, никакой другой пользователь не может сталкиваться с ней, и никакой автоматической обратной перемотки не будет никогда (хотя это может случаться на транзакционных системах, если Вы не очень осторожны). MySQL также гарантирует, что не будет иметься лишних чтений. Вы можете найти пример того, как писать атомные модификации в разделе «1.2.6 Как справиться без COMMIT / ROLLBACK «.
Использование атомной парадигмы позволяет применять много оптимизаций быстродействия, которые иначе не будут возможны. К тому же, при грамотном подходе такая схема ускорит работу в 3-5 раз по сравнению с лучшими транзакционными базами данных при той же надежности.
Для тех случаев, где безопасность более важна, чем быстродействие, я советую применять транзакционные таблицы типов BDB или InnoDB для всех критических данных.
Одно заключительное примечание: в настоящее время авторы пакета работают над безопасной схемой репликации, которая должна быть лучше, чем любая известная на сегодняшний день поддержка репликации. Эта система будет работать наиболее надежно при атомных операциях, а не транзакциях.
Хранимая процедура представляет собой набор команд SQL, который может компилироваться и храниться на сервере. Как только это было выполнено, клиент не должен хранить весь запрос, а может обратиться к сохраненной процедуре. Это обеспечивает лучшую эффективность потому, что запрос должен анализироваться только однажды, и меньшее количество информации должно быть послано между клиентом и сервером. Вы можете также поднимать концептуальный уровень при наличии библиотек функций.
Триггер представляет собой сохраненную процедуру, которая вызывается, когда специфическое событие происходит. Например, Вы можете устанавливать сохраненную процедуру, которая будет вызвана каждый раз, когда запись удалена из таблицы transaction. Эта процедура автоматически удаляет соответствующего заказчика из таблицы customer, когда все его транзакции удалены.
Запланированный язык модификаций будет способен обработать сохраненные процедуры, но без триггеров. Триггеры обычно замедляют все, даже запросы, к которым не имеют отношения.
В ближайшем будущем мы расширим реализацию FOREIGN KEY так, чтобы по крайней мере информация была сохранена в файле спецификации таблицы и могла быть получена mysqldump и ODBC. На более поздней стадии мы выполним ограничения внешних ключей для прикладной программы, которая не может легко быть перекодирована, чтобы избежать их.
Много ученых по теории базы данных и программистов чувствуют, что справочная целостность должна быть предписана внутри сервера базы данных. Действительно, во многих случаях этот подход очень полезен. Однако, в разговоре со многими пользователями баз данных авторы наблюдали, что внешние ключи часто неправильно используются, что может вызывать серьезные проблемы. Даже когда все используется правильно, это не волшебное решение для проблемы справочной целостности, хотя это делает все проще в некоторых случаях.
Из-за вышеупомянутых наблюдений авторы не назначали реализации внешних ключей высокий приоритет. Однако, в последние годы ядро пользователей расширилось, и теперь авторы пакета имеют много пользователей, кто хотел бы иметь предписанную поддержку справочной целостности внутри MySQL. Так что в ближайшем будущем внешние ключи все-таки будут реализованы.
Некоторые преимущества применения внешних ключей:
MySQL не поддерживает views, но это планируется исправить примерно к 4.1.
Views обычно полезны для разрешения пользователям обращаться к набору отношений как к одной таблице (в режиме только для чтения). Многие базы данных SQL не позволяют модифицировать любые строки в таком представлении: Вы должны делать все модификации в отдельных таблицах.
MySQL обычно используется в прикладных программах и на web-системах, где автор прикладной программы имеет полное управление над применением базы данных. По этой причине views не сочтены очень важными.
Чтобы ограничить доступ к столбцам в MySQL views тоже не требуются: MySQL имеет очень сложную систему предоставления привилегий. Подробности в разделе «10 Общие проблемы защиты и система привилегий доступа MySQL».
В MySQL Version 3.23 Вы можете использовать: 1— Это был комментарий
Следующее обсуждение касается Вас, только если Вы управляете MySQL Version 3.23 или ранее:
Вместо обычного решения:
Замените их обратно этой командой:
Entry level SQL92. ODBC levels 0-2.
Вы можете также использовать функции, чтобы модифицировать записи в одиночной операции. Вы можете получать очень эффективную прикладную программу, применяя следующие методы:
Это дает нам нечто, что является подобным блокировке столбца, но фактически это даже лучше потому, что мы модифицируем только некоторые из столбцов, используя значения, которые вычислены относительно их текущих значений. Это означает, что типичные инструкции UPDATE выглядят примерно таким образом:
В MySQL AB авторы пакета никогда не имели никакой потребности в блокировке уровня строки потому, что всегда могли ее обойти. Некоторые случаи и в самом деле нуждаются в блокировке строки, но они очень немногочисленны. Если Вы хотите иметь блокировку уровня строки, Вы можете использовать столбец флажка в таблице и делать нечто вроде:
MySQL вернет для числа обработанных строк, если строка была найдена, и row_flag не был 1 в первоначальной строке.
Перечисленные ниже проблемы известны авторам пакета, и их устранение имеет очень высокий приоритет.
Следующие проблемы известны и будут устранены в назначенное время:
Следующее представляет известные ошибки в более ранних версиях MySQL:
Для изучения ошибок, специфических для конкретной платформы, изучите разделы по компиляции и портированию.