mysql 仕組み(1)

mysql, インフラ, データベース, 開発mysql, インデックス

mysqlとは

オープンソースのリレーショナルデータベース管理システム(RDBMS)である。

リレーショナル・データベース管理システム(RDBMS)とは

リレーショナル・データベースを作ることや使うためのソフトウェアのことである。

RDBMSの特徴
  • トランザクションを使うことでデータの一貫性を保つ
  • データの参照や更新を簡単にできるための言語SQLが存在
  • データの整合性を維持
  • セキュリティやチューニングなどの機能がある

RDBMS以外のデータベース(NoSQL)

  • 高速な読み書きを行うことができる。
  • データ型の定義が必要ない。
  • データ同士の関連は表現できない

ストレージエンジン

ストレージエンジンとは

通常、RDMBSはいくつかの構成要素によって成り立っており、SQL文を受け取って結果を返すデータベースエンジン部、アプリケーションとデータベースエンジンを結びつけるクライアントモジュールや様々なツール群などから成り立っている。
その中でもサーバ側にて動作するデータベースエンジンはRDBMSの心臓部であり、非常に多くの仕事を担っている。

データベースエンジンの動作

  • データベースエンジンがクライアントからSQL文を受け取ると、そのSQL文の解釈を行う
  • どのようにデータを処理するかの決定。
    インデックスが存在するか。使ったほうが良いのかなど
  • 実データへのアクセス処理が開始。個々の部分がストレージエンジンに当たる。

ストレージエンジンの種類

  • MyISAM:テーブル単位のファイルによるデータ構造を持ち、トランザクション機能をサポートしていない
  • InnoDB:テーブルスペース内に複数のテーブルやインデックスを格納するデータ構造を持ち、トランザクション機能をサポート

MySQLの特徴としてストレージエンジンをテーブルごとに選択できる点が挙げられる。今回は、普段よく使っているInnoDBについて調べてみることにした。

InnoDB

MySQL 5.5.5移行、新しいテーブル用のデフォルトのストレージエンジンはInnoDBです。

利点
  • ハードウェアまたはソフトウェアの問題が原因でサーバーがクラッシュした場合でも、その時点でデータベースに何が発生していたのかには関係なく、データベースの再起動後に特別なことは何もする必要がない。
  • テーブル及びインデックスのデータにアクセスすると、そのデータは、InnoDBのバッファープールにキャッシュされる。頻繁に使用されるでt−あは、直接メモリーから処理される。このキャッシュは非常に数多くのタイプの情報に適用され、これにより処理速度が大幅に上がる。
  • テーブルごとに適切な主キーカラムを持つデータベースを設計すると、これらのカラムが関与する操作が自動的に最適化される。where,order by ,group byを使う時に主キーカラムへの参照が非常に高速である。