На чем написан mysql
Что такое MySQL?
Погружение в мир Big Data не проходит без изучения баз данных. Сегодня говорим об одной из самых популярных — MySQL, которой пользуются корпорации типа Google. Все подробности и список полезных функций ниже.
MySQL — это система управления реляционными базами данных (СУРБД). Где «реляционные» значит, что данные хранятся в виде таблиц. Возможно, одна из самых старых, так как была написана еще в 80-х годах на языках С и C++. С тех пор её ни раз выкупали, дополняли, продавали. Сейчас принадлежит компании Oracle, поэтому все вопросы по поддержке к ним.
Вообще, системы типа MySQL могут использоваться любыми сайтами или приложениями для хранения разных данных. Например, социальные сети хранят всю информацию о пользователях, их сообщения, картинки, видео и тд. Конечно, можно придумать и свою систему хранения. Но смысл изобретать велосипед, если уже есть варианты, которые гарантируют надежность, безопасность и работу без потерь.
Стоит изучить, как управляться с такими система, как минимум по одной причине — вы сможете анализировать/находить любую информацию, которая есть в базе. Например, у вас свой блог и вы решили узнать, самые популярные статьи за прошлый год. Также полезно, если вы планируете карьеру программиста.
Но вернемся к MySQL. У этой системы открытый исходный код, то есть можно изменять его или дополнять под свои потребности. Так как возможность скачать программное обеспечение доступна любому. Также система совместима со множеством платформ — MacOS, Windows, Linux, Ubuntu.
Интересный момент: многие, в силу популярности этой системы, используют MySQL как имя нарицательное для понятия СУРБ. Ее используют гиганты рынка, как Facebook, Google, Twitter и тд. Хотя есть множество других систем.
SQL — это язык структурированных запросов, который позволяет взаимодействовать между вами и базой данных. Есть множество других СУРБД, которые также используют язык SQL. В том числе для названия, например, PostgreSQL.
В целом SQL — один самых популярных языков, использующихся в базах данных. Так как с его помощью можно все манипуляции с данными проходят эффективно. Это важно для скорости работы и стабильности базы.
Многие системы, в том числе и MySQL, работают по принципу «клиент-сервер». То есть коммуникация происходит по SQL-запросу. Например, клиент (компьютер бухгалтера в университете) отправляет запрос — «у кого из студентов успеваемость выше 80% », сервер выдаёт список студентов. Главное, знать язык, на котором нужно спрашивать.
Понять и выучить основные функции SQL для запросов несложно. Особенно тем, кто знает английский. Потому что один из типичных запросов «удалить пользователя из БД» будет выглядеть примерно так:
DELETE FROM users WHERE email = ‘ivan@exaple.com’ — удалить из списка пользователей имейл, которому равен ….
Что еще этот язык позволяет делать:
Эта система считается относительно дешевой, по сравнению с другими платными СУРБД. Она хорошо масштабируется, считается довольно гибкой и простой в использовании. Плюс, изначально система разрабатывалась для управления большими базами данных. Поэтому сейчас она подходит для промышленной эксплуатации, если смотреть с точки зрения скорости работы. Неважно, выполняете ли вы тяжёлую бизнес-аналитику или нужно хранить большие объемы данных электронной коммерции.
Гибкость обеспечена большим количеством вариантов таблиц для хранения данных. Можно выбрать, например, таблицы типа MyISAM — поддерживающие полнотекстовый поиск. Также таблицы типа InnoDB, которые поддерживают транзакции на уровне отдельных записей. То есть, вы спокойно выбираете то, что подходит именно под ваш проект.
Плюс система поддерживает множество графических интерфейсов — WorkBench, SequelPro, DBVisualizer и Navicat DB. Какие-то из них доступны только для определенной ОС, какие-то коммерческие. Но в любом случае есть возможность выбрать собственный комфортный формат.
По поводу лицензии, если вы захотите поменять что-то в коде — систему можно распространять с помощью доступов GNU GPL, либо под собственной коммерческой лицензией. Если какая-то программа включает в себя исходные коды MySQL, то и она должна распространяться по лицензии GPL. Так что, если вы не хотите открывать свои исходные данные кода, лучше воспользоваться лицензией. К тому же она дает качественную сервисную поддержку.
MySQL — одна из самых популярных СУРБД. Для коммуникации в ней используется язык SQL. Полезно выучить его, чтобы легко работать и с другими базами данных. и уметь вытащить данные из своей.
Система работает по принципу «клиент-сервер» и содержит весь минимально-необходимый набор функций для удобной работы с БД.
Большой плюс в гибкости — систему можно настроить по своему удобству, выбрать привычный или просто удобный интерфейс. Или потыкаться в коде, если вы понимаете основы программирования.
Она также подходит для работы в промышленных масштабах в плане скорости выгрузки. То есть, если у вас огромная юридическая компания с тонной документов, она справится.
MySQL — система управления базами данных
MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб-приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб-фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).
Из преимуществ СУБД MySQL стоит отметить простоту использования, гибкость, низкую стоимость владения (относительно платных СУБД), а также масштабируемость и производительность.
MySQL позволяет хранить целочисленные значения со знаком и беззнаковые, длиной в 1, 2, 3, 4 и 8 байтов, работает со строковыми и текстовыми данными фиксированной и переменной длины, позволяет осуществлять SQL-команды SELECT, DELETE, INSERT, REPLACE и UPDATE, обеспечивает полную поддержку операторов и функций в SELECT- и WHERE- частях запросов, работает с GROUP BY и ORDER BY, поддерживает групповые функции COUNT(), AVG(), STD(), SUM(), MAX() и MIN(), позволяет использовать JOIN в запросах, в т.ч. LEFT OUTER JOIN и RIGHT OUTER JOIN, поддерживает репликацию, транзакции, работу с внешними ключами и каскадные изменения на их основе, а также обеспечивает многие другие функциональные возможности.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Есть и другие типы таблиц, разработанные сообществом.
СУБД MySQL появилась в 1995. Написана на C и C++, протестирована на множестве различных компиляторов и работает на различных платформах. C 2010 года разработку и поддержку MySQL осуществляет корпорация Oracle. Продукт распространяется как под GNU GPL, так и под собственной коммерческой лицензией. Однако по условиям GPL, если какая-либо программа включает исходные коды MySQL, то и эта программа тоже должна распространяться по лицензии GPL. Для нежелающих открывать исходные тексты своих программ как раз предусмотрена коммерческая лицензия, которая, в дополнение к возможности разработки под «закрытой» лицензией, обеспечивает качественную сервисную поддержку. Сообществом разработчиков MySQL созданы различные ответвления — Drizzle, OurDelta, Percona Server и MariaDB, все эти ответвления уже существовали на момент получения прав на MySQL корпорацией Oracle.
Сейчас MySQL вместе с форком MariaDB занимают почётное первое место, а следом за ними идёт PostgreSQL. Остальные СУБД в веб-проектах используются значительно реже.
MySQL
MySQL (расшифровывается как свободная реляционная система управления базами данных) – это компактный многопоточный сервер баз данных, который отличается высокой скоростью работы, устойчивостью и простотой в использовании.
Изначально разрабатывался компанией TcX для решения внутренних задач – максимально быстрой обработки крупных баз данных. Внутри компании используется с 1996 года на сервере с более чем 40 БД, которые содержат 10,000 таблиц, из которых более чем 500 имеют более 7 миллионов строк.
На сегодняшний день разработкой и поддержкой MySQL занимается корпорация Oracle, которая приобрела Sun Microsystems 27 января 2010 года, после чего и включила MySQL в линейку своих продуктов. Ранее (26 февраля 2008 года) Sun Microsystems заплатила за покупку MySQL AB 1 миллиард долларов США. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL – это наиболее оптимальное решение для малых и средних приложений. Исходники сервера компилируются на множестве платформ. Наиболее полно возможности сервера проявляются на Unix-серверах, где есть поддержка многопоточности, что дает значительный прирост производительности. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Благодаря поддержке огромного количества типов таблиц, MySQL является достаточно гибким. Пользователи могут выбирать и таблицы с полнотекстовым поиском MyISAM, и таблицы с транзакциями в отдельных записях InnoDB. Кроме того, MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря этому, а также открытой архитектуре и GPL-лицензированию, в MySQL возможно добавлять новые типы таблиц практически бесконечно.
MySQL-сервер является бесплатным для некоммерческого использования. Иначе необходимо приобретение лицензии, стоимость которой на текущий момент составляет 190 EUR.
Сообществом разработчиков MySQL созданы различные ответвления кода, такие как Drizzle, OurDelta, Percona Server, и MariaDB. Все эти ответвления уже существовали на момент поглощения компании Sun корпорацией Oracle.
До 1994 года на рынке были представлены главным образом базы данных, предназначенные для работы со значительными объемами данных и сложными взаимосвязями, которые обладали различными возможностями, но в тоже время требовали значительных вычислительных ресурсов. К числу таких баз данных относятся Oracle, Informix и Sybase. СУБД, которые бы поддерживали SQL и были при этом доступны по цене, в это время не было.
Крупные корпорации и университеты могли себе позволить приобрести мощные вычислительные комплексы, а небольшие организации и пользователи пользовались слабыми настольными базами данных, такими, как Postgres, в которой использовалась разновидность языка QUEL (PostQUEL), но, которая, к сожалению, требовала таких же ресурсов, что и ее аналоги, но не давала преимущества использования SQL в качестве языка запросов.
Тогда некий Дэвид Хьюз (ставший впоследствии, после публикации своей работы в Интернете, известным как Bamby), писавший на тот момент диссертацию в Университете Бонд (Австралия), занялся разработкой проекта Minerva Network Management System – системой наблюдения и контроля из одной или нескольких точек за группой систем. Главным элементом проекта должна была стать база данных для хранения информации обо всех компьютерах в сети. Сначала Хьюз решил использовать Postgres. Однако коллеги предложили использовать SQL в качестве языка запросов для Minerva, поскольку SQL является наиболее распространенным языком запросов, и, используя его, Minerva могла бы стать доступной в любой точке планеты, где стоит СУРБД, поддерживающая SQL. Это и послужило толчком к созданию MySQL.
Хьюз решил сам создать программу, которая будет в режиме реального времени транслировать SQL в PostQUEL. Сою программу он назвал miniSQL, или mSQL. Она перехватывала предложения SQL, посылаемые Minerva, преобразовывала их в PostQUEL и пересылала результат в Postgres. Некоторое время такая ситуация устраивала Хьюза. Однако в результате дальнейшего роста Minerva, стало очевидно, что на тех ограниченных ресурсах, которые ей доступны, поддерживать тот небольшой набор характеристик, который ей необходим, ни Postgres, ни какая другая большая СУРБД не смогут. Так, например, для того, чтобы реализовать возможность одновременного подключения Minerva сразу к нескольким базам данных, Postgres требовал одновременного запуска нескольких экземпляров сервера базы данных.
Для решения этих проблем Хьюз проанализировал работу Minerva, и, оказалось, основными запросами, генерируемыми Minerva, были: «insert», «delete» и «select». Поскольку у Хьюза уже был mSQL, осуществлявший трансляцию SQL, ему требовалось только создание сервера базы данных, удовлетворяющего его потребностям.
И тут в игру вступает Майкл Монти Видениус, который и считается изобретателем MySQL. В 1979 году он разработал средство управления базами данных, которое называлось UNIREG. В дальнейшем UNIREG была расширена для поддержки больших баз данных и была переписана на нескольких языках. В 1994 году компания TcX стала разрабатывать приложения для www с использованием UNIREG. Однако, в связи с большими накладными расходами, UNIREG не могла успешно использоваться для динамической генерации Web-страниц. Поэтому Видениус решил связаться с автором mSQL, Хьюзом, чтобы предложить ему подключить mSQL к обработчику B+ ISAM в UNIREG. Однако Хьюз успешно продвинулся на пути к mSQL 2, и компания решила создать сервер баз данных под свои нужды.
В TcX взяли за основу UNIREG и использовали утилиты сторонних разработчиков для mSQL, написали API для своей системы, который изначально сильно совпадал с API для mSQL. Однако это позволяло любому пользователю mSQL, желающему перейти на сервер баз данных ТсХ, внести в свой код незначительные изменения. Исходный код новой базы данных был полностью оригинальных. Таким образом, в мае 1995 года у компании имелась база данных MySQL 1.0, полностью удовлетворяющая потребностям компании.
В 1995 году Дэвид Оксмарк, работающий в компании Detron HB и являющийся бизнес-партнером фирмы, начал активно предлагать ТсХ распространять СУБД MySQL через интернет. Дэвид даже принял участие в работе над документацией. В результате версия 3.11.1 СУБД MySQL была выпущена в свет в 1996 году в виде бинарного дистрибутива для работы под управлением ОС Linux и Solaris. Сегодня MySQL работает на многих платформах и доступен как в двоичных кодах, так и в исходных текстах.
На сегодняшний день MySQL стал самым популярным средством для работы с базами данных в РНР. Это связано в первую очередь с тем, что поддержка этого сервера включается в поставку РНР. К тому же, популярности MySQL способствуют достаточно хорошие характеристики и широкий набор стандартных интерфейсных функций, которые крайне просты в использовании.
Лицензионная политика MySQL отличается большей гибкостью в сравнении с другими серверами баз данных. По сути, MySQL распространяется бесплатно за исключением тех случаев, когда вы намереваетесь ее продавать или продавать услуги, создаваемые с ее помощью
MySQL обладает отличной переносимостью и может, с тем же успехом, использоваться на коммерческих операционных системах, таких как Solaris, Irix или Windows, и на любой аппаратуре вплоть до мощных серверов. Более того, так же как и ее более «дорогие соперники», она позволяет обрабатывать большие базы данных, содержащие миллионы записей.
Название и логотип
Что касается названия, то существует несколько версий его возникновения. Первая версия говорит о том, что использование префикса «my» объясняется тем, что в ТсХ базовый каталог, а также значительное число библиотек и утилит в течение десятка лет обозначались именно таким префиксом. Поэтому логично его было использовать и в данном случае.
Вторая версия, более сентиментальная, опирается на то, что Майкл Монти Видениус назвал новый продукт именно MySQL по имени своей дочери – My. Дочь Видениуса действительно зовут My, а сам он не опровергает ни первую, ни вторую версию.
Логотип MySQL в виде дельфина носит имя «Sakila». Он был выбран из большого списка предложенных пользователями «имён дельфина». Имя «Sakila» было отправлено Open Source-разработчиком Ambrose Twebaze.
Возможности MySQL
Главная особенность MySQL в том, что он поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой системе управления базами данных.
Краткий перечень возможностей MySQL:
1. Поддерживается эффективная работа неограниченного количества пользователей, одновременно работающих с базой данных.
2. Количество строк в таблицах может достигать 50 млн.
3. Максимально быстрое выполнение команд. Существует мнение, что MySQL – и вовсе самый быстрый сервер из существующих.
4. Простая и эффективная система безопасности.
Пример диаграммы в MySQL
Впрочем, и у MySQL существуют отдельные недостатки. Главным образом это связано с тем, что для достижения столь высокой скорости работы разработчикам пришлось пожертвовать некоторыми требованиями к реляционным системам управления базами данных.
Итак, в MySQL отсутствуют:
По словам создателей, именно пункты 2-4 дали возможность достичь высокого быстродействия. Их реализация существенно снижает скорость сервера. Эти возможности не являются критичными при создании Web-приложений, что в сочетании с высоким быстродействием и малой ценой позволило серверу приобрести большую популярность.
Лицензирование
MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии GPL. Однако по условиям GPL, если какая-либо программа включает исходные коды MySQL, то она тоже должна распространяться по лицензии GPL. Это может расходиться с планами разработчиков, не желающих открывать исходные тексты своих программ. Для таких случаев предусмотрена коммерческая лицензия, которая также обеспечивает качественную сервисную поддержку.
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. Существует также порт MySQL к OpenVMS. Важно отметить, что на официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.
Языки программирования
• Первый внутренний выпуск MySQL состоялся 23 мая 1995 года [источник не указан 1224 дня].
• Версия для Windows систем (Windows 95 и NT) выпущена 8 января 1998.
• Версия 3.23: бета-версия в июне 2000, релиз в январе 2001.
• Версия 4.0: бета в августе 2002, релиз в марте 2003.
• Версия 4.1: бета в июне 2004, релиз в октябре 2004.
• Версия 5.0: бета в марте 2005, релиз в октябре 2005.
• Версия 5.1: разработка велась с ноября 2005, релиз в ноябре 2008.
• Версия 5.4: бета в апреле 2009, не была выпущена.
• Версия 5.5: релиз в декабре 2010.
• Версия 5.6: в разработке (5.6.6 m9 7 августа 2012).
История версий
MySQL 4.0
Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение. Основные возможности этой версии:
• практически полная реализация ANSI SQL-99, плюс расширения;
• межплатформенная совместимость;
• независимые типы таблиц (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности);
• транзакции;
• поддержка SSL;
• кэширование запросов;
• репликация: один головной сервер на одного подчинённого, много подчинённых на одного головного;
• полнотекстовая индексация и поиск с использованием типа таблиц MyISAM;
• внедрённая библиотека базы данных;
• поддержка Юникода (UTF-8);
• таблицы InnoDB, обеспечивающие соответствие требованиям ACID;
• встроенный сервер, позволяющий включать MySQL в автономные приложения.
Рекомендованной версией на 2005 год является MySQL 4.1, которая вышла 27 октября 2004. Она содержит следующие нововведения:
• вложенные запросы и производные таблицы.
• новая система кодировок и сортировок;
• более быстрый и гибкий протокол клиент-сервер с поддержкой подготовленных запросов, обеспечивающий их оптимальное исполнение;
• новая программа установки и настройки для Microsoft Windows и Linux;
• защищённые через OpenSSL соединения клиент-сервер;
• высоко-оптимизированная библиотека, которая может быть использована в сторонних программах;
• полноценная поддержка Юникода (UTF-8 и UCS2);
• стандартные пространственные типы данных GIS, для хранения географической информации;
• улучшенный полнотекстовый поиск и система помощи.
Версия MySQL 5.0 была выпущена 24 октября 2005 года, в этой версии значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД. Если раньше СУБД MySQL обвиняли в недостаточной поддержке стандарта SQL, то с появлением пятой версии этой популярной базы данных, появилась практически полная поддержка стандарта SQL. MySQL 5.0 содержит следующие нововведения:
• хранимые процедуры и функции;
• обработчики ошибок;
• курсоры;
• триггеры;
• представления;
• информационная схема (так называемый системный словарь, содержащий метаданные).
MySQL 5.1
Версия MySQL 5.1 продолжает путь к стандарту SQL:2003. MySQL 5.1 содержит следующие нововведения:
• Сегментирование — возможность разбить одну большую таблицу на несколько частей, размещенных в разных файловых системах, основываясь на определенной пользователем функции. При определенных условиях это может дать серьёзное увеличение производительности и, кроме того, облегчает масштабирование таблиц.
• Изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003.
• Построчная репликация (row-based replication), при которой в бинарный лог будет записываться только информация о реально измененных строках таблицы вместо оригинального (и, возможно, медленного) текста запроса. Построчную репликацию можно использовать только для определенных типов sql-запросов, в терминах MySQL — смешанная репликация (mixed replication).
• Встроенный планировщик периодически запускаемых работ. По синтаксису добавление задачи похоже на добавление триггера к таблице, по идеологии — на crontab.
• Дополнительный набор функций для обработки XML, реализация поддержки XPath.
• Новые средства диагностики проблем и утилиты для анализа производительности. Расширены возможности по управлению содержимым лог-файлов, логи теперь могут быть сохранены и в таблицах general_log и slow_log. Утилита mysqlslap позволяет провести нагрузочное тестирование БД с записью времени реакции на каждый запрос.
• Для упрощения операции обновления подготовлена утилита mysql_upgrade, которая выполнит проверку всех существующих таблиц на предмет совместимости с новой версией, и при необходимости выполнит надлежащие корректировки.
• MySQL Cluster отныне выпущен как отдельный продукт, базирующийся на MySQL 5.1 и хранилище NDBCLUSTER.
• Значительные изменения в работе MySQL Cluster, такие, как, например, возможность хранения табличных данных на диске.
• Возврат к использованию встроенной библиотеки libmysqld, отсутствовавшей в MySQL 5.0.
• API для плагинов, которое позволяет загружать сторонние модули, расширяющие функциональность (например, полнотекстовый поиск), без перезапуска сервера.
• Реализация парсера полнотекстового поиска в виде plug-in.
• Новый тип таблиц Maria (устойчивый к сбоям клон MyISAM).
Maria (начиная с версии 5.2.x — Aria) — расширенная версия хранилища MyISAM, с добавлением средств сохранения целостности данных после краха.
Основные достоинства Maria:
• В случае краха производится откат результатов выполнения текущей операции или возврат в состояние до команды LOCK TABLES. Реализация через ведение лога операций.
• Возможность восстановления состояния из любой точки в журнале операций, включая поддержку CREATE/DROP/RENAME/TRUNCATE. Может быть использовано для создания инкрементальных резервных копий, через периодическое копирование журнала операций.
• Поддержка всех форматов столбцов MyISAM, расширена новым форматом «rows-in-block», использующим страничный способ хранения данных, при котором данные в столбцах могут кэшироваться.
• В будущем будет реализовано два режима: транзакционный и без отражения в журнале транзакций, для некритичных данных.
• Размер страницы данных равен 8Кб (в MyISAM 1Кб), что позволяет достичь более высокой производительности для индексов по полям фиксированного размера, но медленнее в случае индексирования ключей переменной длины.
MySQL 5.5
Ветка MySQL 5.5 базируется на невыпущенной серии MySQL 5.4 и содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:
• Использование по умолчанию движка InnoDB.
• Поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на патчах к InnoDB от компании Google.
• Улучшение функций по секционированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в файловых системах (partitioning). Добавлены операции RANGE, LIST и метод оптимизации «partition pruning».
• Новый механизм оптимизации вложенных запросов и JOIN-операций.
• Переработана система внутренних блокировок.
• Интегрированы патчи Google с оптимизацией работы InnoDB на процессорах с большим количеством ядер.
Версия 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 3.22 до 4 ГБ, в последующих версиях максимальный размер до 8 млн ТБ (263 байт).
Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы. Например в NTFS этот размер теоретически может быть до 32 эксабайт. В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство. Размер последнего может достигать 64 терабайт.
В отличие от MyISAM в InnoDB имеется значительное ограничение на количество столбцов, которое можно добавить в одну таблицу. Размер страницы памяти по умолчанию составляет 16 килобайт, из которых под данные отведено 8123 байта. Размер указателя на динамические поля составляет 20 байт. Таким образом, в случае использования динамического формата строки (ROW_FORMAT=DYNAMIC), одна таблица может вместить максимум 409 столбцов типа blob или text.
Начиная с версии 4.1 в СУБД MySQL внедрена новая система кодировок и сортировок. При использовании кодировки Windows-1251, перед выполнением SQL-инструкций необходимо настроить кодировку соединения при помощи операторов:
SET character_set_client=’cp1251′;
SET character_set_results=’cp1251′;
SET character_set_connection=’cp1251′;
Эти три оператора эквивалентны вызову одного оператора:
Переменная character_set_client устанавливает кодировку данных отправляемых от клиента, переменная character_set_results устанавливает кодировку данных отправляемых клиенту, переменная character_set_connection устанавливает кодировку, в которую преобразуется информация пришедшая от клиента, перед выполнением запроса на сервере.
При использовании Юникода UTF-8 этот оператор выглядит следующим образом:
SET NAMES ‘utf8’