- MySQL 4.0 [ правити | правити код ]
- MySQL 4.1 [ правити | правити код ]
- MySQL 5.0 [ правити | правити код ]
- MySQL 5.1 [ правити | правити код ]
- Тип таблиць Maria [ правити | правити код ]
- MySQL 5.5 [ правити | правити код ]
- MySQL 6.0 [ правити | правити код ]
- MySQL 5.7 [ правити | правити код ]
- MySQL 8.0 [ правити | правити код ]
- Максимальні розміри таблиць [ правити | правити код ]
- Проблема з Юникоде [ правити | правити код ]
MySQL (МФА: [Maɪ ˌɛskjuːɛl] ) - вільна реляційна система управління базами даних [7] . Розробка та підтримка сайта 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 млрд доларів [8] , 27 січня 2010 року Oracle придбала Sun Microsystems за 7,4 млрд доларів [9] і включила MySQL в свою лінійку СУБД [10] .
Спільнотою розробників MySQL створені різні відгалуження коду, такі як Drizzle ( англ. ), OurDelta , Percona Server і MariaDB . Всі ці відгалуження вже існували на момент поглинання компанії Sun корпорацією Oracle.
MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблицям, для яких використовувалися ISAM - підпрограми низького рівня. В результаті був вироблений новий SQL -інтерфейс, але API -інтерфейс залишився в спадок від mSQL. Звідки походить назва «MySQL» - достеменно невідомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса «My ...» (з англ. - «моє ...»), або на честь дочки Мю ( фін. My) одного з розробників системи Мікаеля Віденіус [11] [12] .
Логотип MySQL у вигляді дельфіна носить ім'я « Sakila ». Він був вибраний з великого списку запропонованих користувачами «імен дельфіна». ім'я « Sakila " було надіслано Open Source -разработчик Ambrose Twebaze .
MySQL має подвійне ліцензування. MySQL може поширюватися відповідно до умов ліцензії GPL . Однак за умовами GPL, якщо яка-небудь програма використовує бібліотеки (або включає в себе інший GPL-код) MySQL, то вона теж повинна розповсюджуватися за ліцензією GPL. Це може розходитися з планами розробників, які не бажають відкривати вихідні тексти своїх програм. Для таких випадків передбачена комерційна ліцензія, яка також забезпечує якісну сервісну підтримку. Для вільного програмного забезпечення Oracle надає окреме виключення з правил, явно дозволяє використання і поширення MySQL разом з ПО, поширюваним під ліцензією з певного Oracle списку. [13]
MySQL портована на велику кількість платформ: AIX , BSDi , FreeBSD , HP-UX , Linux , macOS , 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.
MySQL має API [14] та конектори для мов Delphi , C , C ++ , Ейфель , Java , Лисп , Perl , PHP , Python , Ruby , Smalltalk , компонентний Паскаль і Tcl , Бібліотеки для мов платформи .NET , А також забезпечує підтримку для ODBC за допомогою ODBC-драйвера MyODBC .
MyODBC є драйвер ODBC (2.50) рівня 0 (з деякими можливостями рівнів 1 і 2) для під'єднання сумісного з ODBC додатки до MySQL. MyODBC працює на всіх системах Microsoft Windows і на більшості платформ Unix .
[15] [16] [17] [18] [19] [20] [21]
- Перший внутрішній випуск MySQL відбувся 23 травня 1995 [ Джерело не вказано 3513 днів ].
- Версія для 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.43 від 22.10.2018). [22]
- Версія 5.7: в розробці (останній реліз - 5.7.24 від 22.10.2018). [23]
MySQL 4.0 [ правити | правити код ]
Незважаючи на те, що версія 4.0 є застарілою, вона все ще має значне поширення [ джерело? ]. Основні можливості цієї версії:
- практично повна реалізація ANSI SQL-99 , Плюс розширення;
- межплатформенная сумісність;
- незалежні типи таблиць ( MyISAM для швидкого читання, InnoDB для транзакцій і посилальної цілісності);
- транзакції ;
- підтримка SSL ;
- кешування запитів;
- реплікація : Один головний сервер на одного підлеглого, багато підлеглих на одного головного;
- повнотекстова індексація і пошук з використанням типу таблиць MyISAM;
- впроваджена бібліотека бази даних;
- підтримка юникода ( UTF-8 );
- таблиці InnoDB , Що забезпечують відповідність вимогам ACID ;
- вбудований сервер, що дозволяє включати MySQL в автономні програми.
MySQL 4.1 [ правити | правити код ]
Рекомендованої версією на 2005 рік є MySQL 4.1, що вийшла 27 жовтня 2004 . Вона містить такі нововведення:
- вкладені запити і похідні таблиці.
- нова система кодувань і угруповань;
- швидший і гнучкий протокол клієнт-сервер з підтримкою підготовлених запитів, що забезпечує їх оптимальне виконання;
- нова програма установки і настройки для Microsoft Windows і Linux ;
- захищені через 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 містить наступні нововведення [24] [25] .
- сегментування - можливість розбити одну велику таблицю на кілька частин, розміщених в різних файлових системах, грунтуючись на певній користувачем функції. При певних умовах це може дати серйозне збільшення продуктивності і, крім того, полегшує масштабування таблиць.
- Змінено поведінку ряду операторів, для забезпечення більшої сумісності зі стандартом 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 [ правити | правити код ]
Maria (починаючи з версії 5.2.x - Aria) - розширена версія сховища MyISAM , З додаванням засобів збереження цілісності даних після краху.
Основні переваги Maria [26] .
- У разі краху проводиться відкат результатів виконання поточної операції або повернення в стан до команди 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 [ правити | правити код ]
Версія 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.7 [ правити | правити код ]
Перша версія гілки MySQL 5.7.1 анонсована 23 квітня 2013. Версія MySQL 5.7.8 адаптована для Debian 8 і Ubuntu 15.04. Останній реліз - 5.7.24 від 22.10.2018. [23]
MySQL 8.0 [ правити | правити код ]
Версія 8.0.0 була випущена 12.09.2016, але офіційно придатною до повсюдного використання була версія 8.0.11, випущена 19.04.2018. Остання версія - 8.0.16 (реліз від 25.04.2019) [27]
Максимальні розміри таблиць [ правити | правити код ]
Максимальний розмір таблиць в 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-інструкцій необхідно налаштувати кодування з'єднання за допомогою операторів:
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 цей оператор виглядає наступним чином:
Кодування ISO 8859-5 не підтримується.
Проблема з Юникоде [ правити | правити код ]
MySQL не дозволяє коректно застосовувати Регулярні вирази (Оператори REGEXP і RLIKE) на рядках в мультибайтних кодуваннях, наприклад, для Юнікоду (UTF-8) [28] . При необхідності таких операцій доводиться переходити на однобайтові кодування, наприклад російську Win-1251 або KOI-8 .
- на Вікісховища має мультимедійні дані за темою MySQL
- В. Васвані. MySQL: використання і адміністрування = MySQL Database Usage & Administration. - М.: «Пітер» , 2011. - 368 с. - ISBN 978-5-459-00264-5 .
- Стів Суерінг, Тім Конверс, Джойс Парк. PHP і MySQL. Біблія програміста, 2-е видання = PHP 6 and MySQL 6 Bible. - М.: «Діалектика» , 2010. - 912 с. - ISBN 978-5-8459-1640-2 .
- Роберт Шелдон, Джоффрі Мойї. MySQL 5: базовий курс = Beginning MySQL. - М.: «Діалектика» , 2007. - 880 с. - ISBN 978-5-8459-1167-4 .
- Кузнецов Максим, Сімдянов Ігор. MySQL на прикладах. - СПб .: «БХВ-Петербург» , 2008. - С. 952. - ISBN 978-5-9775-0066-1 .
- Поль Дюбуа. MySQL, 3-е видання = MySQL, 3ed. - М.: «Вільямс» , 2006. - +1168 с. - ISBN 5-8459-1119-2 .
- Кузнецов Максим, Сімдянов Ігор. MySQL 5. В оригіналі. - СПб .: «БХВ-Петербург» , 2006. - С. 1024. - ISBN 5-94157-928-4 .
- Кузнецов Максим, Сімдянов Ігор. Самовчитель MySQL 5. - СПб .: «БХВ-Петербург» , 2006. - С. 560. - ISBN 5-94157-754-0 .