한국   대만   중국   일본 
MySQL - Wikipedia コンテンツにスキップ

MySQL

出典: フリ?百科事典『ウィキペディア(Wikipedia)』
MySQL

現在のロゴ
Linux上で?行中の GUI フロントエンド MySQL Administrator
開?元 オラクル サン?マイクロシステムズ
初版 1995年5月23日  ( 1995-05-23 )
最新版 8.4.0 - 2024年4月30日 (58日前)  ( 2024-04-30 ) [1] [±]
プログラミング
言語
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は、 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で利用可能な主な機能:

  • ANSI SQL 99 の?範なサブセットと?張機能
  • クロスプラットフォ?ムのサポ?ト
  • SQL / PSM に?密に?う手?き言語を使用する ストアドプロシ?ジャ [6]
  • トリガ?
  • カ?ソル
  • 更新可能な ビュ?
  • InnoDBストレ?ジエンジンを使用する場合のオンライン デ?タ定義言語 (DDL)。
  • 情報スキ?マ
  • 監視目的でサ?バ?の?行とクエリのパフォ?マンスに?する統計を?集および集約するパフォ?マンススキ?マ。 [7]
  • ?行時の動作を制御するための一連のSQLモ?ドオプション。SQL標準に準?するための?密モ?ドが含まれる。
  • X / Open XA 分散トランザクション?理 (DTP) サポ?ト。この一環として、デフォルトの InnoDB ストレ?ジエンジンを使用した 2フェ?ズコミット
  • デフォルトのInnoDB Storage Engineを使用する場合の セ?ブポイント を持つトランザクション。NDB Cluster Storage Engineはトランザクションもサポ?トする。
  • InnoDBおよびNDB Cluster Storage Engineを使用する場合の ACID コンプライアンス [8]
  • SSL サポ?ト
  • クエリ キャッシング
  • サブ SELECT (ネストされたSELECT)
  • ビルトインされた レプリケ?ション サポ?ト
    • 非同期レプリケ?ション:1つのマスタ?から多?のスレ?ブ [9] [10] への マスタ?/スレ?ブ 、または1つのスレ?ブ [11] への多?のマスタ?。
    • 準同期レプリケ?ション:マスタ?がレプリケ?ション時に待機するマスタ?からスレ?ブへのレプリケ?ション [12] [13]
    • 同期レプリケ?ション: マルチマスタ?レプリケ?ション MySQL Cluster [14] にて提供される。
    • ?想同期 :マルチマスタ?サポ?トを備えたMySQLサ?バ?の自己管理グル?プは、Galera Cluster [15] または組み?みのGroup Replicationプラグイン [16] を使用して?行できる [17]
  • 全文 索引付け および?索 [注 1]
  • 組み?みデ?タベ?スライブラリ
  • Unicode サポ?ト [注 2]
  • オプティマイザ?でパ?ティションをプル?ニングしたパ?ティションテ?ブル
  • MySQL Cluster による 非共有 クラスタリング
  • 複?のストレ?ジエンジン。アプリケ?ションの各テ?ブルに最も?果的なストレ?ジエンジンを選?できる [注 3]
  • ネイティブストレ?ジエンジン InnoDB MyISAM 、マ?ジ、メモリ(ヒ?プ)、 フェデレ?ション 、ア?カイブ、 CSV 、ブラックホ?ル、NDBクラスタ?。
  • グル?プ化をコミットし、複?の接?から複?のトランザクションを?集して、1秒あたりのコミット?を?やす。

開?者は、約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の管理ツ?ル [ 編集 ]

注? [ 編集 ]

  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 8.4.0 (2024-04-30, LTS Release) ” (英語). MySQL 8.4.0 Release Notes . MySQL.com. 2024年4月30日 ??。
  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

?連項目 [ 編集 ]

外部リンク [ 編集 ]