jump to navigation

[DB] MySQL編 10月 20, 2009

Posted by hyhy in 技術情報.
Tags:
trackback

知らないうちに、DB製品もバージョンアップを繰り返し、現状何ができるのか、把握しないといかんなーと思いまして、まずMySQLよりまとめてみました。

■各バージョン(10月20日現在)
・MySQL5.4
・MySQL5.1.39
・MySQL5.0.86
・MySQL4.1.22

■概要
RDBMS(リレーショナルデータベースを管理、運用するためのシステム)の実装の一つで、オープンソースで開発されており、GNU GPLと商用ライセンスのデュアルライセンスとなっています。

市場シェアではPostgreSQLよりも高いが、日本ではPostgreSQLが高い、とされています。

他のフリーRDBMSと比較して高速性に定評があり、特に更新よりも参照の頻度の高いアプリケーションに向くとされています。
データストレージエンジンはSQLエンジンとは分離独立しており、用途に応じた機能を持つストレージエンジンを選択できる「マルチストレージエンジン」方式となっています。

■テーブルタイプ
MySQLはほかの多くのデータベースと違って複数のテーブルタイプを提供しており、用途に応じてテーブルタイプを使い分けることができるようになっています。
デフォルトのテーブルタイプはMyISAMですが、ほかにもInnoDBを選択することもできます。
○MyISAM
・特徴: デフォルトのテーブルタイプ
・特徴: シンプル
・特徴: 高速に動作
・特徴: フルテキスト検索に対応
・欠点: トランザクションや外部キー制約をサポートしない
・欠点: REPAIR TABLEで修正できることが多いがクラッシュ時に使えなくなる
・欠点: テーブルレベルでロックをかけるという点でロックの粒度が荒い

○InnoDB
・特徴: トランザクションをサポート
・特徴: 外部キー制約をサポート
・特徴: クラッシュ時のリカバリに対応
・特徴: 列レベルでロックを実施
・欠点: 複雑さが増す
・欠点: フルテキスト検索ができない
・欠点: パフォーマンスが悪い
・用途例: オンラインショップ、金融アプリケーション、データ整合が求められる用途

MyISAMの特徴で十分な場合にはそのまま使い、トランザクションのサポートやデータ整合性が必要とされる場合にはInnoDBを採用するという指針になります。
なおひとつのデータベースで複数種類のテーブルタイプを使うこともできるとされています。

■トランザクション
MyISAMでは、トランザクションをサポートしていません。InnoDBでトランザクションをサポートしています。
InnoDBはメディア障害時の更新ログによるリカバリもサポートしています。
トランザクションの概念がなかったMyISAMベースのテーブルを検索する場合の高速性は、InnoDBの場合は即座に得ることはできず、チューニングが必要です。
MySQL 5.0 では、InnoDBの方が、MyISAMよりも読み込みが速いことも多いとされています。

■レプリケーション(念のため)
データベース管理システムが持つ負荷分散機能の一つ。
あるデータベースとまったく同じ内容のを複製(レプリカ)をネットワーク上に複数配置し、通信回線や1台1台のコンピュータにかかる負荷を軽減する仕組みのことを言います。
マスターデータベースとレプリカは、ネットワークを通じて互いにデータを交換しあい、常に内容が一致するようにできているため、一ヶ所でデータを更新すると、マスターとすべてのレプリカに自動的に更新内容が伝播します。

■その他の機能
○バージョン3.2以降
標準でマスタスレーブ方式の「レプリケーション機能」を備えており、
堅牢なデータストレージの構築が比較的容易でとされています。
○バージョン4.1以降
「副次問い合わせ(サブクエリ)」
○バージョン5.0以降
SQL99に「ストアドプロシージャ」、「ビュー」、「トリガー」が実装

■Tips
プログラムのコード量を減らす MySQL 関数
データベースサーバリプレイスの考え方
実録、ほぼ無停止なMySQLのフェイルオーバ
リアルタイムにMySQLの監視を行う「Jet Profiler for MySQL」
よりシンプルで高速、より強力に:MySQL 最適化のヒント(1)
よりシンプルで高速、より強力に:MySQL 最適化のヒント(2)
MySQLのクエリキャッシュ機能

広告
%d人のブロガーが「いいね」をつけました。