MySql検索エンジン概要ストレージエンジンとは?

3857 ワード

ストレージエンジンとは?
リレーショナル・データベース・テーブルは、情報を格納および整理するためのデータ構造であり、Excelのスプレッドシートと同様に、行と列からなるテーブルとして理解できます.ある表は簡単で、ある表は複雑で、ある表はまったく長期的なデータを格納するために使われていないで、ある表は読み取る時とても速くて、しかしデータを挿入する時とても悪いです;実際の開発では、さまざまなテーブルが必要になる可能性があります.異なるテーブルは、異なるタイプのデータを格納することを意味し、データの処理にも違いがあります.
MySQLにとって、多くの種類のストレージエンジンを提供しています.データ処理のニーズに応じて、異なるストレージエンジンを選択して、MySQLの強力な機能を最大限に利用することができます.このブログでは、各エンジンの特徴や適用場面をまとめ、分析し、より深いものにこだわることはありません.
MyISAM
MyISAMテーブルはオペレーティングシステムとは独立しており、WindowsサーバからLinuxサーバに簡単に移植できることを示しています.MyISAMエンジンのテーブルを作成するたびに、ローカルディスクに3つのファイルが作成され、ファイル名が表示されます.例えば、MyISAMエンジンのtbを構築しました.Demoテーブルでは、次の3つのファイルが生成されます.
  • tb_demo.frm、ストレージテーブル定義;
  • tb_demo.MYD、データを格納する;
  • tb_demo.MYI、インデックスを格納します.

  • MyISAMテーブルはトランザクションを処理できません.これは、トランザクションに必要なテーブルがあり、MyISAMストレージエンジンを使用できないことを意味します.MyISAMストレージエンジンは、以下の場合に特に適しています.
  • 密集型のテーブルを選択します.MyISAMストレージエンジンは、大量のデータをフィルタリングする際に非常に迅速であることが最も優れた利点です.
  • 密集型のテーブルを挿入します.MyISAMの同時挿入機能により、データの選択と挿入が可能になります.たとえば、MyISAMストレージエンジンは、メールやWebサーバのログデータの管理に適しています.

  • InnoDB
    InnoDBは、多くのインターネット企業で使用されている堅牢なトランザクション型ストレージエンジンであり、ユーザーが非常に大きなデータストレージを操作するための強力なソリューションを提供しています.私のパソコンにインストールされているMySQL 5.6.13版は、InnoDBがデフォルトのストレージエンジンです.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ストレージエンジンは、一般的に次のような場合に使用されます.
    ターゲットデータは小さく、非常に頻繁にアクセスされます.メモリにデータを格納するため、メモリの使用になります.パラメータmax_heap_table_sizeはMemoryテーブルのサイズを制御し、このパラメータを設定すると、Memoryテーブルの最大サイズを制限できます.
    データが一時的で、すぐに使用できる必要がある場合は、メモリ・テーブルに保存できます.
    Memoryテーブルに格納されているデータが突然失われると、アプリケーション・サービスに実質的な悪影響を及ぼすことはありません.
    Memory         B   。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)  
    
    

    上記のコードは、usernameフィールドにHASHハッシュインデックスを使用したテーブルを作成します.次のコードは、BTREEインデックスを使用してテーブルを作成します.
    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圧縮ライブラリを使用し、要求されたレコードをリアルタイムで圧縮する圧縮メカニズムが優れているため、倉庫としてよく使用されています.
    適切なストレージエンジンをどのように選択しますか?選択基準は次のように分けられます.
    (1)取引をサポートする必要があるかどうか.(2)ホットスペアを使用する必要があるか.(3)クラッシュ回復:クラッシュを受け入れることができるか;(4)外部キーのサポートが必要かどうか;
    次に基準に従って、対応するストレージエンジンを選択すればよい.