Знаймо

Додати знання


Цей текст може містити помилки.

MySQL


Mysql.png

План:


Введення

MySQL ( / Mɑɪ ɛs kju ː ɛl / , "Травень-ес-кью-ел", жарги. мускул) [2] - вільна система управління базами даних (СКБД). MySQL є власністю компанії Oracle Corporation, що отримала її разом з поглиненою Sun Microsystems, що здійснює розробку і підтримку програми. Розповсюджується під GNU General Public License або під власною комерційною ліцензією. Крім цього розробники створюють функціональність за замовленням ліцензійних користувачів, саме завдяки такому замовленню майже в найраніших версіях з'явився механізм реплікації.

MySQL є рішенням для малих і середніх додатків. Входить до складу серверів WAMP, AppServ, LAMP і в портативні складання серверів Денвер, XAMPP. Зазвичай MySQL використовується як сервер, до якого звертаються локальні або видалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в автономні програми.

Гнучкість СУБД MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що підтримують повнотекстовий пошук, так і таблиці InnoDB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MySQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць.

26 лютого 2008 Sun Microsystems придбала MySQL AB за 1 мільярд доларів. [3]

27 січня 2010 Oracle Corporation придбала Sun Microsystems і включила MySQL в свою лінійку СУБД. [4]

Спільнотою розробників MySQL створені різні відгалуження коду, такі як Drizzle (англ.), OurDelta, Percona Server (англ.), і MariaDB (англ.). Всі ці відгалуження вже існували на момент поглинання компаній Sun і MySQL AB корпорацією Oracle.


1. Про походження MySQL

MySQL виникла як спроба застосувати mSQL до власних розробок компанії: таблицям, для яких використовувалися ISAM - підпрограми низького рівня. В результаті був вироблений новий SQL -інтерфейс, але API -інтерфейс залишився в спадок від mSQL. Звідки походить назва "MySQL" - достеменно невідомо. Розробники дають два варіанти: або тому, що практично всі напрацювання компанії починалися з префікса My, або на честь дівчинки на ім'я My, дочки Майкла Монті Віденіуса, одного з розробників системи [5] [6].

Логотип MySQL у вигляді дельфіна носить ім'я "Sakila". Він був вибраний з великого списку запропонованих користувачами "імен дельфіна". Ім'я "Sakila" було надіслано Open Source -розробником Ambrose Twebaze.


2. Ліцензування

MySQL має подвійне ліцензування. MySQL може розповсюджуватися відповідно до умов ліцензії GPL. Однак за умовами GPL, якщо яка-небудь програма включає вихідні коди MySQL, то вона теж повинна розповсюджуватися за ліцензією GPL. Це може розходитися з планами розробників, не бажаючих відкривати вихідні тексти своїх програм. Для таких випадків передбачена комерційна ліцензія, яка також забезпечує якісну сервісну підтримку.

3. Платформи

MySQL портована на велику кількість платформ: AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetBSD, OpenBSD, OS / 2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003, WinCE, Windows Vista і Windows 7. Існує також порт MySQL до OpenVMS. Важливо відзначити, що на офіційному сайті СУБД для вільного завантаження надаються не тільки початкові коди, а й відкомпілювалися і оптимізовані під конкретні операційні системи готові виконувані модулі СУБД MySQL.


4. Мови програмування

MySQL має API для мов Delphi, C, C + +, Ейфель, Java, Лісп, Perl, PHP, PureBasic, Python, Ruby, Smalltalk, Компонентний Паскаль і Tcl бібліотеки для мов платформи. NET, а також забезпечує підтримку для ODBC за допомогою ODBC-драйвера MyODBC.


5. Історія випусків

  • Перший внутрішній випуск MySQL відбувся 23 травня 1995 .
  • Версія для 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.
  • Версія 6.0: в розробці.

5.1. MySQL 4.0

Незважаючи на те, що версія 4.0 є застарілою, вона все ще має значне поширення. Основні можливості цієї версії:

  • практично повна реалізація ANSI SQL-99, плюс розширення;
  • міжплатформна сумісність;
  • незалежні типи таблиць ( MyISAM для швидкого читання, InnoDB для транзакцій і посилальної цілісності);
  • транзакції;
  • підтримка SSL;
  • кешування запитів;
  • реплікація : один головний сервер на одного підлеглого, багато підлеглих на одного головного;
  • повнотекстова індексація і пошук з використанням типу таблиць MyISAM;
  • впроваджена бібліотеки баз даних;
  • підтримка Юнікод ( UTF-8);
  • таблиці InnoDB, що забезпечують відповідність вимогам ACID;
  • вбудований сервер, що дозволяє включати MySQL в автономні програми.

5.2. MySQL 4.1

Рекомендованою версією на 2005 є MySQL 4.1 вийшла 27 жовтня 2004. Вона містить наступні нововведення:

  • вкладені запити і похідні таблиці.
  • нова система символів та сортувань;
  • більш швидкий і гнучкий протокол клієнт-сервер з підтримкою підготовлених запитів, що забезпечує їх оптимальне виконання;
  • нова програма встановлення і налаштування для Microsoft Windows і Linux;
  • захищені через OpenSSL з'єднання клієнт-сервер;
  • високо-оптимізована бібліотека, яка може бути використана в сторонніх програмах;
  • повноцінна підтримка Юнікоду (UTF-8 і UCS2);
  • стандартні просторові типи даних GIS, для зберігання географічної інформації;
  • покращений повнотекстовий пошук і система допомоги.

5.3. MySQL 5.0

Версія MySQL 5.0 вийшла 24 жовтня 2005 року, в цій версії значно розширена функціональність, яка ставить MySQL в один ряд з комерційними СУБД. Якщо раніше СУБД MySQL звинувачували в недостатній підтримці стандарту SQL, то з появою п'ятої версії цієї популярної бази даних, з'явилася практично повна підтримка стандарту SQL. MySQL 5.0 містить наступні нововведення:


5.4. MySQL 5.1

Версія MySQL 5.1 продовжує шлях до стандарту SQL: 2003. MySQL 5.1 містить наступні нововведення [7] [8].

  • Сегментування - можливість розбити одну велику таблицю на кілька частин, розміщених в різних файлових системах, грунтуючись на певній користувачем функції. За певних умов це може дати серйозне збільшення продуктивності і, крім того, полегшує масштабування таблиць.
  • Змінено поведінку ряду операторів, для забезпечення більшої сумісності зі стандартом 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).

5.4.1. Тип таблиць Maria

Maria (починаючи з версії 5.2.x - Aria) - новий MySQL тип таблиць для зберігання даних. Maria являє собою розширену версію сховища MyISAM, з додаванням засобів збереження цілісності даних після краху.

Основні переваги Maria [9].

  • У разі краху проводиться відкат результатів виконання поточної операції або повернення в стан до команди LOCK TABLES. Реалізація через ведення логу операцій.
  • Можливість відновлення стану з будь-якої точки в балці операцій, включаючи підтримку CREATE / DROP / RENAME / TRUNCATE. Може бути використане для створення інкрементальних бекапів, через періодичне копіювання лог файлу.
  • Підтримка всіх форматів стовпців MyISAM, розширена новим форматом "rows-in-block", що використовують сторінковий спосіб зберігання даних, при якому дані в шпальтах можуть кешуватися.
  • У майбутньому буде реалізовано два режими: транзакційний і без відображення в балці транзакцій, для не критичних даних.
  • Розмір сторінки даних дорівнює 8Кб (в MyISAM 1Кб), що дозволяє досягти більш високої продуктивності для індексів по полях фіксованого розміру, але повільніше у випадку індексування ключів змінної довжини.

5.5. MySQL 5.5

Гілка MySQL 5.5 базується на невипущені серії MySQL 5.4 і містить ряд значних поліпшень, пов'язаних з підвищенням масштабованості та продуктивності, серед яких:

  • Використання за замовчуванням движка InnoDB.
  • Підтримка полусінхронного (semi-synchronous) механізму реплікації, заснованого на патчах до InnoDB від компанії Google.
  • Поліпшення функцій з партіцірованію даних. Розширений синтаксис для розбиття великих таблиць на кілька частин, розміщених в * різних файлових системах (partitioning). Додані операції RANGE, LIST і метод оптимізації "partition pruning".
  • Новий механізм оптимізації вкладених запитів і JOIN операцій.
  • Перероблена система внутрішніх блокувань.
  • Інтегровані патчі Google з оптимізацією роботи InnoDB на CPU з великою кількістю ядер.

5.6. 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 залишається під питанням.


6. Технічні характеристики

6.1. Максимальні розміри таблиць

MySQL 3.22: до 4 Гб

MySQL 3.23 +: до 8 мільйонів терабайт. (2 ^ 63)

Розмір таблиці обмежений її типом. У загальному випадку тип MyISAM обмежений граничним розміром файлу у файловій системі операційної системи. Наприклад в NTFS цей розмір теоретично може бути до 32 ексабайт. У разі InnoDB одна таблиця може зберігатися в декількох файлах, які мають єдине табличний простір. Розмір останнього може досягати 64 терабайт.


7. Локалізація

Починаючи з версії 4.1 в СУБД MySQL впроваджена нова система символів та сортувань. При використанні кодування Windows-1251, перед виконанням SQL-інструкцій необхідно налаштувати кодування з'єднання за допомогою операторів:

 SET  character_set_client  =  'Cp1251'  ;  SET  character_set_results  =  'Cp1251'  ;  SET  character_set_connection  =  'Cp1251'  ; 

Ці три оператори еквівалентні викликом одного оператора:

 SET  NAMES  'Cp1251' 

Мінлива character_set_client встановлює кодування даних відправляються від клієнта, мінлива character_set_results встановлює кодування даних відправляються клієнту, мінлива character_set_connection встановлює кодування, в яку перетвориться інформація прийшла від клієнта, перед виконанням запиту на сервері.

При використанні Юнікод UTF-8 цей оператор виглядає наступним чином:

 SET  NAMES  'Utf8' 

Кодування ISO 8859-5 не підтримується.


Примітки

  1. Oracle Provides Early Access to MySQL 5.6 New Features - www.oracle.com/us/corporate/press/439460, Компанія Oracle представила попередню версію MySQL 5.6 - www.opennet.ru/opennews/art.shtml?num=31291
  2. 1.3.1. What is MySQL? - dev.mysql.com/doc/refman/5.5/en/what-is-mysql.html (Англ.) . MySQL 5.5 Reference Manual. Oracle Corporation. архіві - www.webcitation.org/618ktdxBf з першоджерела 23 серпня 2011.
  3. MySQL:: Observations by Kaj Arn @ Sun - blogs.mysql.com/kaj/2008/01/16/sun-acquires-mysql / (Англ.)
  4. Oracle завершила поглинання Sun - www.oracle.com/us/corporate/press/044428 (Англ.)
  5. MySQL. Керівництво адміністратора = MySQL. Administrator's Guide - М .: Видавничий дім "Вільямс", 2005. - С. 624. - ISBN 5-8459-0805-1.
  6. Історія MySQL (Англ.) - Dev.mysql.com/doc/refman/6.0/en/history.html
  7. Нововведення MySQL 5.1 - dev.mysql.com/doc/refman/5.1/en/news-5-1-x.html
  8. Огляд нововведень MySQL 5.1 російською мовою - www.opennet.ru/opennews/art.shtml?num=19115
  9. Огляд можливостей сховища Maria на opennet.ru - www.opennet.ru/opennews/art.shtml?num=13934

Цей текст може містити помилки.

Схожі роботи | скачати
© Усі права захищені
написати до нас