0

バックグラウンド

データベースのボトルネックをできるだけ解消したい聖書を利用したAPIを作成しています。ほとんどの不要な結合を排除するために、私のデータはかなり非正規化されています。

情報

聖書のテキストは変わらないので、私はほとんどINSERT発言をしません。データを挿入するのは、定期的に発生する新しい翻訳を追加するときだけですが、ここでは速度は気にしません。

しかし、私はたくさん SELECT 声明を出すつもりです。

国境を越えた ACID 準拠の機能は必要ありません。私の主な関心事は速度です。

質問

これらの条件に適合する理想的な MySql ストレージ エンジンは何でしょうか?

私は各エンジンの基本を認識しているMyISAMので (私の推測ではそれが理想的です)、これらのエンジンのいくつかについての深い知識を示す統計またはさらなる推論でバックアップできる回答を探しています。

を使用NoSQLするよりは良いかもしれませRDBMSんが、それは私が探している情報ではありません。

4

2 に答える 2

2

聖書はファイルサイズが小さいです。そしてあなたが言ったように変わりません。

読み取りで最高のパフォーマンスを得るには、メモリを検討してください。これには、テキスト/ブロブを使用できないという制限があります。ただし、データが 65,533 文字のチャンクに分割されていれば問題ありません。

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

メモリを使用すると、電源が失われたり、サーバーが再起動されたりすると、すべてのデータが失われます。したがって、定期的にディスクに書き込むと便利であり、再起動時にテーブルに再度データを入力する必要があります。

すべてのテーブルが RAM に保存されるため、他の方法よりもこの方法を使用するには、追加の RAM が必要です。

コメントの質問から。

ドキュメントは言う

MySQL サーバーの起動時に MEMORY テーブルに入力するには、 --init-file オプションを使用できます。たとえば、INSERT INTO ... SELECT または LOAD DATA INFILE などのステートメントをこのファイルに挿入して、永続データ ソースからテーブルをロードできます。セクション5.1.3「サーバーコマンドオプション」およびセクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

http://dev.mysql.com/doc/refman/5.5/en/memory-storage-engine.html#idp82809968

http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_init-file

繰り返しますが、このファイルに変更を加えて最新の状態に保つ必要があります。(mysqldump を使用して維持できます)

于 2013-08-12T21:46:22.720 に答える