MySQLの一般的なストレージエンジンの説明


ストレージエンジンとは?
リレーショナル・データベース・テーブルは、情報を格納および整理するためのデータ構造であり、Excelのスプレッドシートと同様に、行と列からなるテーブルとして理解できます.ある表は簡単で、ある表は複雑で、ある表はまったく長期的なデータを格納するために使われていないで、ある表は読み取る時とても速くて、しかしデータを挿入する時とても悪いです;実際の開発では、さまざまなテーブルが必要になる可能性があります.異なるテーブルは、異なるタイプのデータを格納することを意味し、データの処理にも違いがあります.MySQLにとって、多くの種類のストレージエンジンを提供しています.データ処理のニーズに応じて、異なるストレージエンジンを選択して、MySQLの強力な機能を最大限に利用することができます.このブログでは、各エンジンの特徴や適用場面をまとめ、分析し、より深いものにこだわることはありません.私の学習方法はまず使うことをマスターして、どのように使うことを知っていて、それからいったいどのように使うことができることを知っています.MySQLでサポートされているストレージエンジンについて簡単に説明します.
MyISAM
MyISAMテーブルはオペレーティングシステムとは独立しており、WindowsサーバからLinuxサーバに簡単に移植できることを示しています.MyISAMエンジンのテーブルを作成するたびに、ローカルディスクに3つのファイルが作成されます.ファイル名はテーブル名です.例えば、MyISAMエンジンのtbを構築しました.Demoテーブルでは、次の3つのファイルが生成されます.
1.tb_demo.frm、ストレージテーブル定義;2.tb_demo.MYD、データを格納する;3.tb_demo.MYI、インデックスを格納します.
MyISAMテーブルはトランザクションを処理できません.これは、トランザクションに必要なテーブルがあり、MyISAMストレージエンジンを使用できないことを意味します.MyISAMストレージエンジンは、以下の場合に特に適しています.
1.密なテーブルを選択します.MyISAMストレージエンジンは、大量のデータをフィルタリングする際に非常に迅速であることが最も優れた利点です.2.密なテーブルを挿入します.MyISAMの同時挿入機能により、データの選択と挿入が可能になります.たとえば、MyISAMストレージエンジンは、メールやWebサーバのログデータの管理に適しています.
InnoDB
InnoDBは、多くのインターネット企業で使用されている堅牢なトランザクション型ストレージエンジンであり、ユーザーが非常に大きなデータストレージを操作するための強力なソリューションを提供しています.MySqlバージョン5.5以降、innoDBはmyisamの代わりにmysqlのデフォルトストレージエンジンとして機能し始めました.InnoDBには、行レベルのロックと外部キーコンストレイントも導入されています.以下の場合、InnoDBを使用するのが理想的です.
1.密なテーブルを更新します.InnoDBストレージエンジンは、多重同時更新要求の処理に特に適している.2.事務.InnoDBストレージエンジンは、トランザクションをサポートする標準MySQLストレージエンジンです.3.災害復旧の自動化他のストレージエンジンとは異なり、InnoDBテーブルは災害から自動的にリカバリされます.4.外部キー制約.MySQLが外部キーをサポートするストレージエンジンはInnoDBのみです.5.自動増分列AUTO_をサポートINCREMENTプロパティ.
一般的に、トランザクションサポートが必要で、同時読み取り頻度が高い場合は、InnoDBが良い選択です.
MEMORY
MySQL Memoryストレージエンジンを使う出発点は速度です.最も速い応答時間を得るために採用される論理記憶媒体はシステムメモリである.メモリにテーブルデータを格納すると、確かにパフォーマンスが向上しますが、mysqldデーモンがクラッシュすると、すべてのMemoryデータが失われます.速度を得ると同時にいくつかの欠陥ももたらした.Memoryデータテーブルに格納されているデータは、長さが一定のフォーマットを使用する必要があります.これは、BLOBやTEXTのような長さが可変なデータ型は使用できないことを意味します.VARCHARは長さが可変なタイプですが、MySQL内部では長さが一定のCHARクラス型として使用できるためです.
Memoryストレージエンジンは、一般的に次のような場合に使用されます.
1.ターゲットデータは小さく、非常に頻繁にアクセスされます.メモリにデータを格納するため、メモリの使用になります.パラメータmax_heap_table_sizeはMemoryテーブルのサイズを制御し、このパラメータを設定すると、Memoryテーブルの最大サイズを制限できます.
2.データが一時的で、すぐに使用できる必要がある場合は、メモリ・テーブルに保存できます.
3.Memoryテーブルに格納されたデータが突然失われた場合、アプリケーション・サービスに実質的な悪影響を及ぼすことはありません.
Memoryはハッシュインデックスとツリーインデックスを同時にサポートします.Bツリーインデックスがハッシュインデックスより優れているのは、部分クエリーとワイルドカードクエリーを使用するか、<、>および>=などのオペレータを使用してデータマイニングを容易にすることです.ハッシュ・インデックスの「等しい比較」は非常に速いが、「範囲比較」の速度はずっと遅いため、ハッシュ・インデックス値は=と<>のオペレータに適しており、<または>オペレータに適しておらず、order by句にも適していない.
使用するバージョンは、テーブル作成時にUSING句を使用して指定できます.例:

create table users

(

    id smallint unsigned not null auto_increment,

    username varchar(15) not null,

    pwd varchar(15) not null,

    index using hash (username),

    primary key (id)

)engine=memory;

上記のコードは、usernameフィールドにHASHハッシュインデックスを使用したテーブルを作成します.次のコードは、BTREEインデックスを使用してテーブルを作成します.

create table users

(

    id smallint unsigned not null auto_increment,

    username varchar(15) not null,

    pwd varchar(15) not null,

    index using btree (username),

    primary key (id)

)engine=memory;

MERGE
MERGEストレージエンジンは、他のエンジンよりも優れていないが、場合によっては非常に有用なMyISAMテーブルのセットの組合せであり、これらのMyISAMテーブルの構造は完全に同じでなければならない.はっきり言って、Mergeテーブルはいくつかの同じMyISAMテーブルの重合器です.Mergeテーブルにはデータがありません.Mergeタイプのテーブルに対してクエリー、更新、削除操作を行うことができます.これらの操作は実際には内部のMyISAMテーブルに対して操作を行います.Mergeはエンジンの使用シーンを格納します.
サーバ・ログという情報では、一般的に一般的に使用されるストレージ・ポリシーは、データを特定のタイム・エンドに関連する複数のテーブルに分割することです.たとえば、サーバ・ログ・データは12個の同じテーブルで格納できます.各テーブルには、各月に対応する名前が付けられます.12のすべてのログ・テーブルのデータに基づいてレポートを生成する必要がある場合は、これらのテーブルの情報を反映するために複数のテーブル・クエリーを作成して更新する必要があることを意味します.これらのエラーが発生する可能性のあるクエリーを作成するよりも、これらのテーブルを統合してクエリーを使用し、元のデータに影響を与えることなくMergeテーブルを削除します.Mergeテーブルを削除するのはMergeテーブルの定義を削除するだけで、内部のテーブルには何の影響もありません.
ARCHIVE
Archiveはアーカイブという意味で、アーカイブ後の多くの高度な機能はサポートされなくなり、最も基本的な挿入とクエリーの2つの機能だけをサポートします.MySQL 5.5版以前はArchiveはインデックスをサポートしていませんでしたが、MySQL 5.5以降のバージョンではインデックスをサポートし始めました.Archiveはzlib圧縮ライブラリを使用し、要求されたレコードをリアルタイムで圧縮する圧縮メカニズムが優れているため、倉庫としてよく使用されています.
CSV
通常のcsvファイルをMySQLの表として扱うことができ、excelのデータをcsv形式のファイルとして保存し、MySQLのデータディレクトリにコピーすることで、MySQLで表のように開くことができるため、CSVエンジンはデータ交換メカニズムとして非常に有用である.
ストレージエンジンの表示方法:
SHOW ENGINES;

適切なストレージエンジンをどのように選択しますか?
トランザクションをサポートする必要があるかどうか
ホットスペアを使用する必要があるかどうか
クラッシュ・リカバリ:クラッシュを受け入れるかどうか
外部キーサポートが必要かどうかの注意:1.
InnoDBにない特性を使用する必要がない限り、InnoDBエンジンを優先的に選択する必要があります.
2.複数のストレージエンジンを混在させないでください.