9

my.cnf以下は、デフォルトのストレージ エンジンとして InnoDB を使用した純粋な UTF-8 セットアップ用の、私のデフォルトの本番 MySQL 構成ファイル ( ) です。

[server]
bind-address=127.0.0.1
innodb_file_per_table
default-character-set=utf8
default-storage-engine=innodb

セットアップでは、次のことを行います。

  1. デフォルトの *:3306 (すべてのインターフェース) ではなく、localhost:3306 (ループバック) にバインドします。セキュリティを高めるために行われます。
  2. テーブルごとに 1 つのテーブル スペースを設定します。保守性を高めるために行われます。
  3. デフォルトの文字セットを UTF-8 に設定します。デフォルトで簡単に国際化できるようにするために行われました。
  4. デフォルトのストレージ エンジンを InnoDB に設定します。デフォルトで行レベルのロックを許可するために行われます。

最大 3 つの構成パラメーターを追加することで、セットアップをさらに改善できると想定します。どちらを追加しますか?なぜですか?

このコンテキストでの改善とは、パフォーマンスの改善、信頼性の改善、または使いやすさ/保守性の向上のいずれかを意味します。MySQL インスタンスを実行しているマシンには 1000 MB の RAM があると想定できます。

4

3 に答える 3

5

より多くのデータをキャッシュするには:

innodb_buffer_pool_size = 512M

大量のデータを書き込む場合:

innodb_log_file_size = 128M

、ログの切り替えが多すぎないようにします。

いずれにせよ、私が追加する3分の1はありません、他のすべては依存します。

于 2009-07-22T18:10:48.370 に答える
1

デフォルトの 8M よりも多くのメモリを (innodb_buffer_pool_size を使用して) InnoDB に割り当てることは、確かに機能強化です。値に関しては、専用のデータベース サーバーでは、RAM の 80% まで設定できます。この値を高く設定すると、ハードディスクとのやり取りが少なくなります。私の2セントを与えるために、ACIDコンプライアンスを犠牲にして、 の値を微調整することでパフォーマンスを向上させることができることに言及したいと思います... MySQLマニュアルinnodb_flush_log_at_trx_commitによると:

innodb_flush_log_at_trx_commit の値が 0 の場合、ログ バッファーは 1 秒に 1 回ログ ファイルに書き出され、ログ ファイルに対してディスクへのフラッシュ操作が実行されますが、トランザクションのコミット時には何も実行されません。

そのため、クラッシュや誤動作により、データベースに正しく書き込まれなかったデータが失われる可能性があります。再びMySQLマニュアルによると:

ただし、InnoDB のクラッシュ リカバリは影響を受けないため、クラッシュ リカバリは値に関係なく機能します。

だから、私は提案します:

innodb_flush_log_at_trx_commit = 0

最後に、接続率が高い場合 (つまり、データベースにアクセスする Web アプリケーションをサポートするように MySQL を構成する必要がある場合) は、接続の最大数を 500 程度に増やすことを検討する必要があります。よく知られているので、back_log接続性を確保することの重要性を強調したいと思います。

これらの情報がデータベース サーバーの最適化に役立つことを願っています。

于 2011-02-15T11:44:04.957 に答える
0

innodbバッファープールのサイズを、実際にできる限り大きくします。

innodb_buffer_pool_size=768M

また、一時テーブル用のキーバッファスペースも必要になります。

key_buffer_size=32M

その他は、データベースで何をしているかによって異なりますが、table_cacheまたはquery_cache_sizeは他のいくつかの可能性です。

于 2009-07-22T18:06:28.703 に答える