読み方:まいえすきゅーえるリレーショナルデータベース管理システム(RDBMS)の一のこと。Weblio国語辞典では「MySQL」の意味や使い方、用例、類似表現などを解説しています。">

MySQLとは何? わかりやすく解説 Weblio辞書 (original) (raw)

MySQL

現在のロゴ
Linux上で実行中のGUIフロントエンド MySQL Administrator
開発元 オラクルサン・マイクロシステムズ
初版 1995年5月23日 (1995-05-23)
最新版 9.0.1 - 2024年7月23日 (7か月前) (2024-07-23)[1] [±]
リポジトリ github.com/mysql/mysql-server
プログラミング言語 C, C++
対応OS クロスプラットフォーム
種別 RDBMS
ライセンス GPL v2 または Commercial License
公式サイト www.mysql.com/jp/dev.mysql.com
テンプレートを表示

MySQL(マイ・エスキューエル、海外ではマイ・シークェルとも)は、オープンソースリレーショナルデータベース管理システム (RDBMS) である。その名前は、共同設立者のミカエル・ウィデニウスの娘の名前である「My」と、Structured Query Languageの略称である「SQL」を組み合わせたものである。

MySQLは、GNU General Public Licenseの条件に基づいたフリーでオープンソースのソフトウェアであり、さまざまなプロプライエタリライセンスでも利用可能である。MySQLは、サン・マイクロシステムズ(現在のオラクル)に買収されたスウェーデンの企業MySQL ABが所有、出資していた。2010年にオラクルがサンを買収したとき、ウィデニウスはオープンソースのMySQLプロジェクトをフォークしてMariaDBを作った。

MySQLは、LAMP Webアプリケーションソフトウェアスタック(LAMPは、LinuxApache、MySQL、Perl/PHP/Pythonの頭字語)のコンポーネントである。MySQLは、DrupalJoomlaphpBBWordPressなど、多くのデータベース駆動型Webアプリケーションで使用されている。MySQLは、FacebookFlickrMediaWikiTwitterYouTubeなど[2][3]、多くの人気Webサイトでも使用されている。

概要

MySQLはCC++で書かれている。SQLパーサーについて構文解析はyaccで書かれている(実際のコンパイルにはBisonが使われる)が、字句解析にはLexは使わず自家製の字句解析器を使用している。MySQLは、AIX、BSDi、FreeBSDHP-UX、eComStation、i5/OS、IRIX、Linux、macOSMicrosoft WindowsNetBSD、Novell NetWare、OpenBSDOpenSolaris、OS/2Warp、QNX、Symbian、SunOS、SCO OpenServer、SCO UnixWare、Sanos、Tru64など、多くのシステムプラットフォームで動作する。OpenVMSへのMySQLのポートも存在する。

MySQLサーバーソフトウェアとクライアントライブラリは、デュアルライセンス配布を使用している。これらはGPLバージョン2、またはプロプライエタリなライセンスで提供されている。

公式マニュアル[4]からサポートを得ることができる。また、別のIRCチャネルやフォーラムでも無償サポートが提供されている。オラクルはMySQL Enterprise製品を通じて有償サポートを提供している。それらはサービスの範囲や価格がそれぞれ違っている。さらに、MariaDBやPercona (en:Percona) など、サポートやサービスを提供するサードパーティ組織も多数存在する。

MySQLは肯定的なレビューを受けており、レビュー担当者はMySQLが「平均的なケースでは非常によく機能」し、「開発者向けのインターフェイスがあり、ドキュメント(Webサイトなどを通じた現実世界でのフィードバックは言うまでもなく)も非常に良い。」ことに気付いた。また、「高速で安定した真のマルチユーザ、マルチスレッドのSQLデータベースサーバ」としてもテストされている。

特徴

MySQLは、オープンソースのMySQL Community ServerとプロプライエタリのEnterprise Serverの2つの異なるエディションで提供される。[5] MySQL Enterprise Serverは、サーバープラグインとしてインストールされる一連の独自の拡張機能によって差別化されているが、それ以外は同じバージョン番号付けシステムを共有し、同じコードベースから構築される。

MySQL 5.6で利用可能な主な機能:

開発者は、約3か月ごとにMySQL Serverのマイナーアップデートをリリースする。ソースは、両方ともGPLライセンスの下で、MySQLのWebサイトまたはMySQLのGitHubリポジトリから取得できる。

シェア

世界でもっとも普及しているオープンソースのRDBMSとして知られており[18]、市場シェアではPostgreSQLなどの他のオープンソース・データベースを圧倒している[19]。日本でも2009年になってPostgreSQLを超えるシェアを獲得している[20]。初期のMySQLで文字コードのサポートが悪かったのが影響したが、現在はEUC、SJIS、多言語面を含むUTF-8などをサポートしている。

利用企業数の割合

地域 MySQL PostgreSQL 調査機関
世界 82.1% 27.1% 451 Group (2009年)[21]
日本 60.5% 51.9% IPA (2009年)[20]

ストレージエンジン

データの保存とアクセスを行うストレージエンジンがSQLパーサとは分離独立しており、用途に応じたストレージエンジンを選択できる「マルチストレージエンジン」方式を採用している。

バージョン3.23.34以降で組み込まれているInnoDBストレージエンジンは、オープンソースソフトウェア企業のInnobase社が開発したストレージエンジンであり、高い堅牢性とMVCCによる高い並列性を兼ね備えており、あらゆるアプリケーションに対応出来る人気のストレージエンジンとなっている。InnoDBはMySQL本体やOSのクラッシュからの復旧(クラッシュリカバリ)をサポートしている。

また、InnoDB登場以前から搭載されているMyISAMストレージエンジンも検索が高速であり、更新よりも参照の頻度の高いWebアプリケーションなどで活用されている。全文検索や空間検索が利用できるのも、MyISAMの利点であったが最近のMySQLではInnoDBにおいてもそれらは利用できるようになっている。

以前はMyISAMの方が高速であったり多機能であると言われることが多かったが、InnoDBの性能・機能改善が進んだことから、高速性や多機能性を求めるためにMyISAMを利用するということも減ってきている。

トランザクション

MySQLでは、トランザクション管理はストレージエンジンの役割であり、トランザクションを利用したければ対応したストレージエンジンを使用すればよい。

InnoDBは、ACIDに準拠したトランザクションをサポートしている。一方MyISAMでは、トランザクションをサポートしていない。トランザクションが必要でないシーンは徐々に減ってきているので、最近MyISAMの出番も減りつつあるようである。

その他の機能

副次問い合わせ(サブクエリ)は、バージョン4.1以降でサポートされている。バージョン5.0以降では、SQL99にストアドプロシージャビュートリガーが実装され、機能の面でも他のRDBMSに追いつきつつある。またバージョン8.0ではウインドウ関数と共通表式(CTE: Common Table Expression)が実装された。

その他、標準でマスタスレーブ方式のレプリケーション機能を備えており、堅牢なデータストレージの構築が比較的容易である。MySQLはストレージエンジンに寄らないバイナリログ(旧:更新ログ)を実装しており、それを使った論理レプリケーションである。

MySQL 5.7.17以降、MySQL 8.xではグループレプリケーションの機能をプラグインでサポートしている。

また、本体+プラグインのGR(グループレプリケーション)とMySQL Shell, MySQL Routerを組み合わせたMySQL InnoDB Cluster構成も可能になった。

ライセンス

MySQLは GPL とコマーシャルライセンスのデュアルライセンス方式で提供されている[22]。基本的に、MySQLのサーバ本体とクライアントライブラリはGPLで提供される。このため、MySQLを改造し、それを再頒布する場合は、GPLに従う必要がある。

GPLのクライアントライブラリを利用してMySQLに接続するアプリケーションを開発した場合、そのアプリケーションもGPLライセンスとしなければならない可能性がある。ただし、クライアントライブラリに関しては、アプリケーションが既定のオープンソースライセンスで公開されるのであれば、GPL以外のオープンソースライセンスで再頒布することも可能である[23]

サポートやツールが提供される有料サブスクリプションのMySQL Standard Edition, Enterprise Editionでは、コマーシャルライセンス版のバイナリが提供される[24]。コマーシャルライセンス版では、GPLによる制約は受けない。

歴史

利用状況

世界的にはこのMySQLの方が、ライバルであるFirebirdPostgreSQLよりも多く使用されており、ウェブサイトの構築に用いるソフトウェア環境として、LAMP (Linux, Apache, MySQL, PerlPHPPython) の略称が知られている。Yahoo!FacebookTwitterなどの巨大なウェブサイトでの適用例も多く、WebアプリケーションのXOOPSWordPressSugarCRMなどCMSも、バックエンドのデータベースとしてMySQLを利用している。また、ウィキペディアのためのソフトウェアであるMediaWikiでもこのソフトウェアを使用している[注 4]。他にも、社内用WebアプリケーションのサイボウズもMySQLを利用しており、MySQLを改造するため、有償契約をしている。

世界的な傾向に反し、以前の日本では、PostgreSQLの適用例がMySQLを上回っていた。2003年平成15年)の時点で、オープンソース系のデータベースとして、日本では8割以上がPostgreSQLだった。

その理由として、以下の理由が指摘されている。

だが、そのような状況は徐々に変遷し、2009年(平成21年)の段階では、MySQLのほうがPostgreSQLよりも多く利用されているという報告がある[29][30]

プラットフォーム

MySQL 8.0は次のプラットフォームでサポートされている。[31]

開発言語

C, C++, Eiffel, Smalltalk, Java (JNI), LISP, Perl, PHP, Python, Ruby, TclはMySQLのAPIを介してデータベースにアクセスできる。またODBCインターフェース (Connector/ODBC (旧名:MyODBC)) もサポートされている。MySQL自体はCおよびC++で開発されている。埋め込みSQLによる開発はサポートされていないため、オープンソースプロジェクトのOpen ESQL等が利用される[32]

日本語処理

MySQLは、sjis (Shift_JIS)、cp932(Microsoftコードページ932)、utf8(UTF-8(3バイトまで))、utf8mb4(UTF-8(4バイトまで/MySQL5.5以降でサポート))、ujis (EUC-JP) といった文字セットを指定することで、日本語の文字を含む入出力を正しく扱うことができる。

sjisは、JIS X 0201およびJIS X 0208に準じたものであるが、同じ「Shift_JIS」でも、Windows環境で使用される文字の一部を正しく扱えない場合がある。これは、Windowsでは、前記の規格以外の拡張文字を含む、拡張されたShift_JISを使用しているためである。これらの文字をMySQLで正しく扱うには、sjisではなくcp932を指定する。同様の理由でujisではなくeucjpmsを指定すべきである。

たとえば、Microsoft AccessからUTF-8で格納するテーブルにODBCリンク経由でアクセスする場合は、MyODBCの文字セット設定をcp932にしておけば、正しく入出力できる。

cp932がMySQLでサポートされたのは4.1.12からであり、それまでは、「sjisで格納し、sjisで入出力」するという設定を行い、入出力時の文字コード変換を避けることで、Windowsの拡張シフトJISで問題が起きないようにする、というのが、日本国内における「常識」であった。cp932のサポートの前にはすでにUnicodeがサポートされていたが、それらを積極的に使用する人はあまりいなかった。なぜなら、Unicodeで格納するテーブルに対してsjisで入出力を行うと、Windows環境において拡張文字が適切に変換されず文字化けが発生するため、それが「Unicode対応が不完全」「Unicodeはまだ使いものにならない」という評価を生む一因となっていたからである。

Ruby on RailsCakePHPのデフォルトはutf8だが、データベース接続設定でencodingをutf8と明示的に使用宣言しておく必要がある。

MySQLの管理ツール

注釈

  1. ^ Initially, it was a MyISAM-only feature; supported by InnoDB since the release of MySQL 5.6.
  2. ^ Prior to MySQL 5.5.3, UTF-8 and UCS-2 encoded strings are limited to the BMP; MySQL 5.5.3 and later use utf8mb4 for full Unicode support.
  3. ^ In MySQL 5.0, storage engines must be compiled in; since MySQL 5.1, storage engines can be dynamically loaded at run time.
  4. ^ なお、ウィキペディア自体はMySQLからフォークしたMariaDBの利用へと移行している。
  5. ^ MySQL :: MySQL Workbench
  6. ^ phpMyBackupPro - the MySQL backup tool :: Features
  7. ^ Navicat for MySQL | MySQLに対応したDB管理・開発ツール
  8. ^ MySQL :: MySQL Workbench: Administration
  9. ^ Home - Nucleon Software
  10. ^ Sequel Pro
  11. ^ Adminer - Database management in a single PHP file

出典

  1. ^Changes in MySQL 9.0.1 (2024-07-23, Innovation Release)” (英語). MySQL 9.0 Release Notes. MySQL.com. 2024年10月15日閲覧。
  2. ^Slide 1”. Oracle. 2024年3月6日閲覧。
  3. ^MySQL”. www.mysql.com. 2024年3月5日閲覧。
  4. ^MySQL 8.0 リファレンスマニュアル”. MySQL. 2022年7月3日閲覧。
  5. ^Which Should I Use: MySQL Enterprise or MySQL Community Server?”. MySQL AB. 2009年4月9日時点のオリジナルよりアーカイブ。2009年4月8日閲覧。
  6. ^ Guy Harrison; Steven Feuerstein (2008). MySQL Stored Procedure Programming. O'Reilly Media. p. 49. ISBN 978-0-596-10089-6. https://books.google.com/books?id=YpeP0ok0cO4C&pg=PT75
  7. ^Monitoring RDS MySQL performance metrics”. Datadog (2015年10月20日). 2015年12月14日閲覧。
  8. ^MySQL :: InnoDB 1.1 for MySQL 5.5 User's Guide :: C InnoDB Glossary :: ACID”. 2010年12月25日時点のオリジナルよりアーカイブ。2011年1月5日閲覧。
  9. ^Replication”. MySQL. 2020年5月2日閲覧。
  10. ^MariaDB Replication”. MariaDB KnowledgeBase. 2019年3月9日閲覧。
  11. ^MySQL :: MySQL 5.7 Reference Manual :: 16.1.4 MySQL Multi-Source Replication”. dev.mysql.com. 2019年3月9日閲覧。
  12. ^MySQL :: MySQL 5.7 Reference Manual :: 16.3.9 Semisynchronous Replication”. dev.mysql.com. 2019年3月9日閲覧。
  13. ^Semisynchronous Replication”. MariaDB KnowledgeBase. 2019年3月9日閲覧。
  14. ^MySQL Cluster Replication: Multi-Master and Circular Replication”. MySQL. 2020年5月2日閲覧。
  15. ^MySQL University: MySQL Galera Multi-Master Replication”. Oracle Corporation. 2020年5月2日閲覧。
  16. ^MySQL :: MySQL 8.0 Reference Manual :: 18 Group Replication”. dev.mysql.com. 2019年3月9日閲覧。
  17. ^MySQL :: MySQL 8.0 Reference Manual :: 18 Group Replication”. dev.mysql.com. 2019年3月9日閲覧。
  18. ^ DB-Engines Ranking - popularity ranking of database management systems
  19. ^ http://www-jp.mysql.com/why-mysql/marketshare/
  20. ^ a b オープンソフトウェア:第2回オープンソースソフトウェア活用ビジネス実態調査:IPA 独立行政法人 情報処理推進機構
  21. ^ 451 Group survey highlights user concerns over Oracle's proposed ownership of MySQL
  22. ^ MySQLのライセンスポリシー
  23. ^ FOSS License Exception
  24. ^ MySQL Editions
  25. ^ 1.5. What Is New in MySQL 5.5
  26. ^ Oracle>About>Press Room>Oracle Announces General Availability of MySQL 5.6
  27. ^ Oracle Japan>Media centre home>ニュースリリース>MySQL5.6の一般提供開始を発表
  28. ^ MySQL 8.0: New Features in Replication
  29. ^ http://ossipedia.ipa.go.jp/doc/201
  30. ^ SQL ServerとOSSが勢力拡大の兆し――DBMS市場:ITmedia リサーチインタラクティブ 第6回調査 - ITmedia エンタープライズ
  31. ^ Supported Platforms: MySQL Database
  32. ^ Open ESQL

関連項目

外部リンク

ウィキメディア・コモンズには、**MySQL**に関連するカテゴリがあります。

サン・マイクロシステムズ
同社はオラクルにより2010年に買収された。
人物 アンディ・ベクトルシャイム ジェームズ・ゴスリン ジョナサン・シュワルツ スコット・マクネリ ビノッド・コースラ ビル・ジョイ
ハードウェア ワークステーション、サーバ Sun-1 Sun-2 Sun-3 Sun386i Sun-4 SPARCstation Ultra(英語版) Enterprise(英語版) Sun Blade(英語版Sun Fire Java Workstation(英語版SPARC Enterprise Cobalt Qube Cobalt RaQ(英語版) プロセッサ SPARC MB86900 microSPARC SuperSPARC UltraSPARC UltraSPARC IIUltraSPARC IIe UltraSPARC IIi Gemini UltraSPARC IIIUltraSPARC III Cu UltraSPARC IIIi UltraSPARC IV UltraSPARC T1 UltraSPARC T2 SPARC T3 SPARC T4 SPARC T5 Rock(英語版) MAJC(英語版) ネットワークコンピュータ JavaStation(英語版Sun Ray その他 Sun Modular Datacenter
ソフトウェア SunOS Solaris NIS NFS ZFS SunView NeWS OpenWindows Java Desktop System Java StarSuite Sun ONE MySQL GlassFish
HPC Sun Grid Engine
研究 Fortress
教育 SCP BlueJ
コミュニティ CDDL JCP NetBeans OpenOffice.org OpenSolaris OpenSPARC OpenJDK
カテゴリ