sql >> データベース >  >> RDS >> Mysql

ログテーブル用のMySQLストレージエンジン

    さて、あなたの質問によると、InnoDBは次の理由で作業を行う必要があります:

    1. スケーラビリティはMyISAMよりもはるかに優れています
    2. 行ロックであるため、選択よりも書き込みが多い場合は、より適切に適合します。
    3. 最後に、アクセスされることはめったにないとおっしゃっていたので、一部のクエリに適しているため、MyISAMは必要ありません。

    詳細については、こちらを確認してください

    編集

    さて、コメントであなたは他のエンジンについて尋ねます。これが全リスト です。 エンジンの。その中で、あなたがアーカイブには不利な点があると言ったように、他のものはあなたの要求に適合しません。これがMySQLWebサイトからの引用です:

    InnoDB has been designed for maximum performance when processing large data volumes. 
    Its CPU efficiency is probably not matched by any other disk-based relational database
    engine.
    

    つまり、基本的に:

    1. MEMORYを使用する場合は、データにあまりアクセスせず、テーブルが大きくなりすぎると言ったように使用しないでください。そのためには大量のRAMが必要になり、再起動するとすべてのデータが失われます。
    2. MyISAMを使用する場合は、挿入と更新よりもクエリを選択する頻度が高いテーブル用に設計されているため、使用しないでください。
    3. アーカイブに関しては、それがあなたの選択です。 こちら MyISAMとログテーブルのアーカイブの比較です。ただし、InnoDBに固執します。
    4. Merge、Blackhole、Example、その他のエンジンについては触れません。 (CSVエンジンについてはあまり知識がありませんが、読んだ限りでは、この種のテーブルには適切なエンジンではありません。

    正直なところ、私はコーディングで重要な動きをする前に多くの時間を費やしていました。私は何時間も、おそらく何日も問題について調査し、どちらの方法が最も適切かを調べました。何をお話ししますか、研究は良いのですが、それがうまくいかない場合は、立ち止まってコーヒーを飲み、すぐに選択する必要があります。したがって、あなたに最も適切なものを試してみてください。経験するにつれて、自分で試してみると、さらに良い方法が見つかります。つまり、Facebookがそのようなボリューム向けに設計されたとは思いませんが、Facebookが成長するにつれて、それに応じて構造が変更され続けました。それは私が信じていることですが、現実ではないかもしれません:)とにかく、情報があなたに役立つことを願っています。

    2013年編集

    以下に、組み込みのMySQLストレージエンジンの簡単な説明を示します。

    MyISAM

    これらのテーブルには、データへの高速アクセスを提供する高度なキャッシュやインデックス作成メカニズムなどの追加の最適化が含まれています。 MyISAMストレージエンジンは、テーブルレベルのロックを使用して、同時操作を提供します。読み取りパフォーマンスが懸念される場合は、通常、MyISAMが選択されます。

    メモリ

    ヒープテーブルとも呼ばれるメモリテーブルは、頻繁に使用されるデータ(国コード、郵便番号、その他のルックアップテーブルなど)をすばやく取得するのに理想的です。名前が示すように、データはメモリに保存されるため、アクセスはディスクに保存されたデータよりもはるかに高速です。メモリを使用する際の重要な制限の1つは、MySQLセッション中にデータが有効になることです。クラッシュしたり、シャットダウンしたりすると、データが失われます。

    InnoDB

    このストレージエンジンを使用する必要がある1つのケースは、外部キーまたはトランザクションを使用する必要がある場合です。 InnoDBは、行レベルのロックを提供するため、MyISAMよりも同時実行性が高くなります。ストレージエンジンは信頼性が高いです。このストレージを使用するもう1つのケースは、読み取りよりも書き込みが多い場合です。テーブルにデータを頻繁に書き込む場合は、このストレージを使用してみてください。これは、MyISAMよりも同時実行です。

    アーカイブ

    大量のデータを圧縮形式で保存するために設計されています。このストレージエンジンの使用例の1つは、アーカイブデータまたは履歴データまたはセキュリティログを保存することです。このテーブルはインデックスを使用しないため、毎日のデータの取得と保存には適していません。これは行レベルのロックであり、データは必要に応じてその場で非圧縮になります。さらに、テーブルを変更することはできません。

    マージ

    マージは、同じマシン上にあるパーティション化されたテーブルを「マージ」するために使用されます。大きなテーブルをいくつかの小さなテーブルに分割し、マージテーブルを使用してそれらに同時にアクセスする場合、最大の利点はその速度です。テーブル内のデータが少ないため、検索と並べ替えがより迅速に実行されます。




    1. Oracle:レコードデータ型から選択

    2. SQLテーブル結合のON句とWHERE句の違い

    3. mysqlは外部結合を残しました

    4. mysqlは、個別の行をコンマ区切りのリスト列に選択します