MySQL
(マイ?エスキュ?エル、海外では俗にマイ?シ?クェルとも)は、
オ?プンソ?ス
の
リレ?ショナルデ?タベ?ス管理システム
(RDBMS) である。その名前は、共同設立者の
ミカエル?ウィデニウス
の娘の名前である「My」と、
Structured Query Language
の略?である「SQL」を組み合わせたものである。
MySQLは、
GNU General Public License
の?件に基づいたフリ?でオ?プンソ?スのソフトウェアであり、さまざまなプロプライエタリライセンスでも利用可能である。MySQLは、
サン?マイクロシステムズ
(現在の
オラクル
)に買?されたスウェ?デンの企業
MySQL AB
が所有、出資していた。2010年にオラクルがサンを買?したとき、ウィデニウスはオ?プンソ?スのMySQLプロジェクトをフォ?クして
MariaDB
を作った。
MySQLは、
LAMP
Webアプリケ?ションソフトウェアスタック(LAMPは、
Linux
、
Apache
、MySQL、
Perl
/
PHP
/
Python
の頭字語)のコンポ?ネントである。MySQLは、
Drupal
、
Joomla
、
phpBB
、
WordPress
など、多くのデ?タベ?ス?動型Webアプリケ?ションで使用されている。MySQLは、
Facebook
、
Flickr
、
MediaWiki
、
Twitter
、
YouTube
など
[2]
[3]
、多くの人?Webサイトでも使用されている。
?要
[
編集
]
MySQLは
C
と
C++
で書かれている。SQLパ?サ?は
yacc
で書かれている(?際のコンパイルには
Bison
が使われる)が、字句解析には
Lex
は使わず自家製の
字句解析器
を使用している。MySQLは、
AIX
、BSDi、
FreeBSD
、
HP-UX
、eComStation、i5/OS、
IRIX
、Linux、
macOS
、
Microsoft Windows
、
NetBSD
、Novell NetWare、
OpenBSD
、
OpenSolaris
、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による制約は受けない。
?史
[
編集
]
- 1995年5月23日 - ?部的にMySQLの最初のバ?ジョンがリリ?ス。
- 1998年1月8日 - 最初のWindows版がリリ?ス。Windows 95やNT向け。
- 2001年1月 - Version 3.23 プロダクションリリ?ス。ベ?タ版は2000年6月にリリ?ス。
- 2003年3月 - Version 4.0 プロダクションリリ?ス。ベ?タ版は2002年8月にリリ?ス。union搭載。
- 2004年10月 - Version 4.1 プロダクションリリ?ス。ベ?タ版は2004年6月にリリ?ス。
R木
、
B木
、サブクエリ?、prepared statements搭載。
- 2005年10月 - Version 5.0 プロダクションリリ?ス(5.0.15よりGA)。ベ?タ版は2005年3月にリリ?ス。cursors, stored procedures, triggers, views, XA transactions搭載。
- 2008年2月6日 -
サン?マイクロシステムズ
がMySQL ABを買?。
- 2008年7月1日 - サン?マイクロシステムズ株式?社がMySQL株式?社(MySQLの日本法人)を吸?合?。
- 2008年11月 - Version 5.1 プロダクションリリ?ス(5.1.30よりGA)。ベ?タ版は2005年11月にリリ?ス。event scheduler, partitioning, plugin API, row-based replication, server log tables搭載。
- 2010年1月27日 -
オラクル
がサン?マイクロシステムズを買?。
- 2010年12月15日 - Version 5.5 プロダクションリリ?ス(5.5.8よりGA)。デフォルトのストレ?ジエンジンが InnoDB になり、マルチコアCPUでのパフォ?マンスが改善した
[25]
。ベ?タ版 (Version 5.4) は2009年4月にリリ?ス。
- 2013年2月5日 - Version 5.6 プロダクションリリ?ス(5.6.10よりGA)。InnoDB、NoSQLの機能を?化
[26]
[27]
。
- 2015年10月21日 - Version 5.7 プロダクションリリ?ス(5.7.9よりGA)。
- 2018年4月19日 - Version 8.0 プロダクションリリ?ス(8.0.11よりGA)
[28]
。
利用?況
[
編集
]
世界的にはこのMySQLの方が、ライバルである
Firebird
や
PostgreSQL
よりも多く使用されており、
ウェブサイト
の構築に用いる
ソフトウェア
環境として、
LAMP
(
L
inux
,
A
pache
,
M
ySQL,
P
erl
?
P
HP
?
P
ython
) の略?が知られている。
Yahoo!
、
Facebook
、
Twitter
などの巨大なウェブサイトでの適用例も多く、Webアプリケ?ションの
XOOPS
、
WordPress
、
SugarCRM
など
CMS
も、バックエンドのデ?タベ?スとしてMySQLを利用している。また、
ウィキペディア
のためのソフトウェアである
MediaWiki
でもこのソフトウェアを使用している
[注 4]
。他にも、社?用Webアプリケ?ションの
サイボウズ
もMySQLを利用しており、MySQLを改造するため、有償契約をしている。
世界
的な傾向に反し、以前の
日本
では、PostgreSQLの適用例がMySQLを上回っていた。
2003年
(
平成
15年)の時点で、オ?プンソ?ス系のデ?タベ?スとして、日本では8割以上がPostgreSQLだった。
その理由として、以下の理由が指摘されている。
- ?米において、MySQLの?報が積極的だった。
- MySQLの日本ユ?ザ?の立ち上げが?れた。
- 日本での
PHP
の本である「PHP徹底攻略」と「PHP4徹底攻略」が
PostgreSQL
との接?を想定して記述されていた。
- PostgreSQLの開?に日本人である
SRA
の
石井達夫
が?わっていた。彼は上記二冊の執筆も一部??している。
- Java
を開?するサン?マイクロシステムズが、MySQLよりも
PostgreSQL
を推していた。
- かつてのMySQLで
Unicode
のサポ?トが不十分だった。
- アプリケ?ションの頒布形態によっては、GPLではなく商用ライセンスを選?しなければならないケ?スがある。
だが、そのような?況は徐?に?遷し、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
インタ?フェ?ス (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 Rails
、
CakePHP
のデフォルトはutf8だが、デ?タベ?ス接?設定でencodingをutf8と明示的に使用宣言しておく必要がある。
MySQLの管理ツ?ル
[
編集
]
注?
[
編集
]
出典
[
編集
]
?連項目
[
編集
]
外部リンク
[
編集
]
ウィキメディア?コモンズには、
MySQL
に?連するカテゴリがあります。
|
---|
同社は
オラクル
により2010年に買?された。
|
人物
| |
---|
ハ?ドウェア
|
ワ?クステ?ション、
サ?バ
| |
---|
プロセッサ
| |
---|
ネットワ?ク
コンピュ?タ
| |
---|
その他
| |
---|
|
---|
ソフトウェア
| |
---|
HPC
| |
---|
?究
| |
---|
?育
| |
---|
コミュニティ
| |
---|
カテゴリ
|