MySQL — вільнасистема керування реляційними базами даних, яка була розроблена компанією «ТсХ» для підвищення швидкодії обробки великих баз даних. Ця система керування базами даних (СКБД) з відкритим кодом була створена як альтернатива комерційним системам. MySQL з самого початку була дуже схожою на mSQL, проте з часом вона все розширювалася і зараз MySQL — одна з найпоширеніших систем керування базами даних. Вона використовується, в першу чергу, для створення динамічних вебсторінок, оскільки має чудову підтримку з боку різноманітних мов програмування.
Ліцензування
MySQL має подвійне ліцензування. MySQL може розповсюджуватися відповідно до умов ліцензії GPL. Але за умовами GPL, якщо якась програма використовує бібліотеки MySQL, то вона теж повинна розповсюджуватися за ліцензією GPL. Проте це може розходитися з планами розробників, які не бажають відкривати сирцеві тексти своїх програм. Для таких випадків передбачена комерційна ліцензія компанії Oracle, яка також забезпечує якісну сервісну підтримку. В разі використання та розповсюдження програмного забезпечення з іншими вільними ліцензіями, такими як BSD, Apache, MIT та інші, MySQL дозволяє використання бібліотек MySQL за ліцензією GPL[5].
Історія
MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблиць, для яких використовувалися ISAM — підпрограми низького рівня для індексного доступу до даних. У результаті був вироблений новий SQL-інтерфейс, але API-інтерфейс залишився в спадок від mSQL. Звідки походить назва «MySQL» — достеменно не відомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіуса, одного з розробників системи[6].
Логотип MySQL у вигляді дельфіна носить ім'я «Sakila». Він був обраний з великого списку запропонованих користувачами «імен дельфіна». Ім'я «Sakila» було відправлено Open Source-розробником Ambrose Twebaze.
В січні-лютому 2008 Sun Microsystems придбала розробника системи керування базами даних MySQL за $1 млрд. Після поглинання у 2009 році Sun Microsystems компанією Oracle Corporation MySQL стала власністю Oracle.
За час розвитку під орудою Oracle дедалі більше відокремлює MySQL від спільноти і робить процес розроблення все менш прозорим. Наприклад, повернута практика поставки власницьких розширених функцій в Enterprise-версії MySQL, спостерігається приховування інформації про вразливості, зі складу виключений тестовий набір, закритий доступ до більшої частини системи відстеження помилок та припинено публікацію згрупованого логу змін, що дозволяє судити про прив'язку патчів до конкретних змін.
Захищені через OpenSSL з'єднання між клієнтом та сервером.
Високо-оптимізована бібліотека, яка може бути використана в сторонніх програмах.
Повноцінна підтримка Юнікоду (UTF-8 і UCS2).
Стандартні просторові типи даних GIS для зберігання географічної інформації.
Покращений повнотекстовий пошук та система допомоги.
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 містить такі нововведення:[7][8]
Сегментування — можливість розбити одну велику таблицю на декілька частин, розміщених в різних файлових системах, базуючись на визначеній користувачем функції. За деяких умов це може дати серйозне збільшення продуктивності та, крім того, полегшує масштабування таблиць.
Змінено поведінку ряду операторів для забезпечення більшої сумісності зі стандартом SQL:2003.
Порядкова реплікація (row-based реплікація), за якої в бінарний лог буде записуватись тільки інформація про реально змінені рядки таблиці замість оригінального (і, можливо, більш повільного) тексту запиту.
Вбудований планувальник робіт, що періодично запускаються. За синтаксисом додання завдання схоже на додання тригера до таблиці; по ідеології — на 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)[9], який у 2010 був перейменований на Aria та став основою форку MySQL від Монті Віденіуса під назвою MariaDB[10]
Тип таблиць Maria
Maria (починаючи з версії 5.2.x — Aria) — новий тип таблиць MySQL для зберігання даних. Maria являє собою розширену версію сховища MyISAM, з додаванням засобів збереження цілісності даних після краху.
У разі краху проводиться відкат результатів виконання поточної операції або повернення в стан до команди LOCK TABLES. Реалізація через ведення логу операцій.
Можливість відновлення стану з будь-якої точки в журналі операцій, включаючи підтримку CREATE/DROP/RENAME/TRUNCATE. Може бути використана для створення інкрементальних бекапів, через періодичне копіювання лог файлу.
Підтримка всіх форматів стовпців MyISAM, розширена новим форматом «rows-in-block», що використовують сторінковий спосіб зберігання даних, при якому дані в стовпцях можуть кешуватися.
В майбутньому буде реалізовано два режими: транзакційний і без відбивання в журналі транзакцій, для не критичних даних.
Розмір сторінки даних дорівнює 8Кб (в MyISAM 1Кб), що дозволяє досягти більш високої продуктивності для індексів за полями фіксованого розміру, але працює повільніше у разі індексування ключів змінної довжини.
MySQL 5.5
Гілка MySQL 5.5 містить ряд значних поліпшень, пов'язаних з підвищенням масштабованості та швидкодії, серед яких:
Підтримка напівсинхронного (semi-synchronous) механізму реплікації, заснованого на патчах до InnoDB від компанії Google.
Поліпшення функцій з партіціювання даних. Розширений синтаксис для розбиття великих таблиць на кілька частин, розміщених в різних файлових системах (partitioning). Додані операції RANGE, LIST і метод оптимізації «partition pruning».
Новий механізм оптимізації вкладених запитів та операцій JOIN.
Перероблена система внутрішніх блокувань.
Інтегровані патчі Google з оптимізацією роботи InnoDB на CPU з великою кількістю ядер.
MySQL вважається гарним рішенням для малих і середніх застосунків. Сирцеві кодисервера компілюються на багатьох платформах. Найповніше можливості сервера виявляються в UNIX-системах, де є підтримка багатопоточності, що підвищує продуктивність системи в цілому.
Можливості сервера MySQL:
простота у встановленні та використанні;
підтримується необмежена кількість користувачів, що одночасно працюють із БД;
кількість рядків у таблицях може досягати 50 млн;
висока швидкість виконання команд;
наявність простої і ефективної системи безпеки.
Відомі користувачі
Apple — для динамічних сторінок на Apple.com, для багатьох внутрішніх проєктів
Cox Communications — четвертий за розміром провайдер кабельного телебачення в США, має понад 3,600 таблиць та 2 мільярди рядків даних у базах і виконує приблизно 2 мільйони вставок на годину
MySQL версії 5.1 має 20 відомих серйозних помилок в додаток до 35 дефектів версії 5.0. Критичні помилки іноді не виправляються протягом тривалих періодів часу. Одним із прикладів є критична помилка, що відома з 2003 року.
MySQL показує низьку ефективність при використанні її як сховища даних, це частково пов'язано з нездатністю використовувати декілька процесорів для обробки одного запиту. До того ж, MySQL часто критикують за те, що ця СКБД має розходження зі стандартом SQL щодо трактування NULL значень і значення за замовчуванням.
Відгалуження MySQL
Продаж MySQL Sun Microsystems у 2008 і наступне поглинання Sun з боку Oracle було несхвально сприйнято спільнотою вільного програмного забезпечення. Незалежними групами, в тому числі навколо колишніх розробників MySQL, були створені відгалуження (форки) проєкту, серед яких
↑[История MySQL (англ.). Архів оригіналу за 31 серпня 2009. Процитовано 3 червня 2010. {{cite web}}: стрип-маркер templatestyles в |title= на позиції 15 (довідка) История MySQL (англ.)]