次のコマンドを使用して、mysqld サーバーのデフォルトのバッファ サイズを取得できます:
shell>mysqld --help
このコマンドは、すべての mysqld オプションと構成可能な変数のテーブルを生成します。出力にはデフォルト値が含まれており、次のようになります:
オプション --set-variable (-O) に使用できる変数は次のとおりです:
back_log??????現在の値: 5
connect_timeout?現在の値: 5
layed_insert_timeout?現在の値: 300
layed_insert_limit?現在の値: 100 : 0
interactive_timeout? 現在の値: 28800
join_buffer_size? 現在の値: 131072
key_buffer_size??? 現在の値: 1048540
lower_case_table_names? 現在の値: 0
long_query_time??? 現在の値: 1048576
max_connections??? : 100
max_connect_errors?? 現在の値: 10
max_layed_threads? 現在の値: 20
max_heap_table_size? 現在の値: 16777216
max_join_size?? 現在の値: 4294967295
max_sort_length???値: 1024
max_tmp_tables?? 現在の値: 32 net_buffer_length ?? 現在の値: 16384
query_buffer_size?? 現在の値: 0
record_buffer?? 現在の値: 131072
sort_buffer?? ??? 現在の値: 2097116
table_cache?? 現在の値: 64
thread_concurrency?? 現在の値: 10
tmp_table_size???現在の値: 1048576
thread_stack ?????現在の値: 131072
wait_timeout????現在の値 : 28800
mysqld サーバーが実行されている場合は、次のコマンドを実行することで、実際に使用される変数の値を確認できます。 🎜>
shell>mysqladmin 変数
各オプションについては以下で説明します。バッファ サイズ、長さ、およびスタック サイズの値をバイト単位で指定する場合は、接尾辞「K」または「M」を使用して、値が K バイトまたはメガバイトで表示されることを示すことができます。たとえば、16M は 16 メガバイトを示します。接尾辞の大文字と小文字は関係ありません。16M と 16m は同じです。
コマンド SHOW STATUS を使用して、実行中のサーバーからの統計を確認することもできます。 「7.21 SHOW 構文(テーブルおよびカラム情報の取得)」を参照してください。
back_log
MySQL に必要な接続の数。これは、MySQL のメイン スレッドが短期間に多くの接続リクエストを受信し、メイン スレッドが接続を確認して新しいスレッドを開始するのに (短時間ではありますが) 時間がかかる場合に機能します。 back_log 値は、MySQL が一時的に新しいリクエストへの応答を停止するまでに、短期間にスタックに保存できるリクエストの数を示します。短期間に多数の接続が予想される場合にのみ、この値を増やす必要があります。つまり、この値は、受信 TCP/IP 接続のリスニング キューのサイズです。オペレーティング システムには、このキュー サイズに対する独自の制限があります。 Unix listen(2) システムコールのマニュアルページに詳細が記載されています。この変数の最大値を確認するには、OS のドキュメントを確認してください。 back_log をオペレーティング システムの制限よりも高く設定しようとしても、効果はありません。
connect_timeout
mysqld サーバーが Bad handshake で応答する前に接続メッセージを待機する秒数。
layed_insert_timeout
Insert DELAYED スレッドが終了するまでに Insert ステートメントを待機する時間。
layed_insert_limit
layed_insert_limit 行を挿入した後、Insert DELAYED プロセッサは、Select ステートメントが実行されていないことを確認します。その場合は、続行する前に許可ステートメントを実行してください。
layed_queue_size
挿入 DELAYED の処理に割り当てるキューの大きさ (行数)。キューがいっぱいの場合、Insert DELAYED を実行するクライアントは、キューが再び空になるまで待機します。
flush_time
これがゼロ以外の値に設定されている場合、flush_time 秒ごとにすべてのテーブルが閉じられます (リソースを解放してディスクに同期するため)。
interactive_timeout
サーバーが対話型接続を閉じる前に、対話型接続でのアクションを待機する秒数。インタラクティブクライアントは、mysql_real_connect() の CLIENT_INTERACTIVE オプションを使用してクライアントとして定義されます。 wait_timeout も表示されます。
join_buffer_size
すべての結合 (インデックス付き結合ではない) に使用されるバッファ サイズ。バッファーは、2 つのテーブル間の完全結合ごとにバッファーを割り当てます。インデックスを追加できない場合、この値を増やすと完全結合が高速化される可能性があります。 (多くの場合、結合を高速化するための最良の方法は、インデックスを増やすことです。)
key_buffer_size
インデックス ブロックはバッファリングされ、すべてのスレッドによって共有されます。 key_buffer_size はインデックス ブロックに使用されるバッファ サイズです。(すべての読み取りと複数の書き込みに対して) インデックスをより適切に処理できるように、許容できる範囲で増加させます。サイズを大きくしすぎると、システムがページングを開始し、速度が大幅に低下します。 MySQL は読み取りデータをキャッシュしないため、OS ファイル システム キャッシュ用のスペースを残しておく必要があることに注意してください。複数の行を書き込むときに速度を上げるには、LOCK TABLES を使用します。 「7.24 LOCK TABLES/UNLOCK TABLES 構文」を参照してください。
long_query_time
クエリにこれより長い時間がかかる場合 (秒単位)、Slow_queries カウンタが増加します。
max_allowed_packet
パケットの最大サイズ。メッセージ バッファは net_buffer_length バイトに初期化されますが、必要に応じて max_allowed_packet バイトまで増やすことができます。デフォルトでは、この値は小さすぎるため、大きな (エラーの可能性がある) パケットをキャプチャできません。大きな BLOB 列を使用している場合は、この値を増やす必要があります。使用する最大の BLOB と同じ大きさにする必要があります。
max_connections
許可される同時クライアントの数。この値を増やすと、mysqld に必要なファイル記述子の数が増加します。ファイル記述子の制限については、以下の注意を参照してください。 「18.2.4 接続数が多すぎるエラー」を参照してください。
max_connect_errors
ホストからの接続がこの数を超えて切断された場合、このホストはそれ以上の接続をブロックします。 FLUSH HOSTS コマンドを使用してホストのブロックを解除できます。
max_layed_threads
Insert DELAYED ステートメントを処理するために、この数を超えるスレッドを開始しないでください。すべての挿入 DELAYED スレッドが使用された後で新しいテーブルにデータを挿入しようとすると、DELAYED 属性が指定されていないかのように行が挿入されます。
max_join_size
max_join_size レコードを超えるレコードを読み取る可能性のある結合はエラーを返します。ユーザーが Where 句を持たず、時間がかかり、数百万行を返す結合を実行したい場合は、これを設定します。
max_sort_length
BLOB または TEXT 値をソートするときに使用されるバイト数 (各値の最初の max_sort_length バイトのみが使用され、残りは無視されます)。
max_tmp_tables
(このオプションはまだ何も行いません)。クライアントが同時に開いたままにできる一時テーブルの最大数。
net_buffer_length
通信バッファはクエリ間でこのサイズにリセットされます。通常、これは変更すべきではありませんが、メモリが少ない場合は、クエリで予期されるサイズに設定できます。 (つまり、クライアントが発行する SQL ステートメントの予想される長さ。ステートメントがこの長さを超える場合、バッファーは max_allowed_packet バイトまで自動的に拡張されます。)
record_buffer
順次スキャンを実行する各スレッドがそれをスキャンします 各テーブルこのサイズのバッファが割り当てられます。大量の連続スキャンを実行する場合は、この値を増やすことをお勧めします。
sort_buffer
ソートが必要な各スレッドは、このサイズのバッファを割り当てます。この値を増やすと、ORDER BY または GROUP BY 操作が高速化します。 「18.5 MySQL が一時ファイルを保存する場所」を参照してください。
table_cache
すべてのスレッドに対して開いているテーブルの数。この値を増やすと、mysqld に必要なファイル記述子の数が増加します。 MySQL では、開いている一意のテーブルごとに 2 つのファイル記述子が必要です。以下のファイル記述子の制限に関するコメントを参照してください。テーブル キャッシュの仕組みについては、「10.2.4 MySQL がテーブルをオープンおよびクローズする方法」を参照してください。
tmp_table_size
一時テーブルがこのサイズを超えると、MySQL は「テーブル tbl_name がいっぱいです」という形式のエラーを生成します。高度な GROUP BY クエリを多数実行する場合は、tmp_table_size の値を増やしてください。
thread_stack
各スレッドのスタック サイズ。 crash-me テストで検出される制限の多くは、この値に依存しています。デフォルトのチームは、一般的な操作には十分な規模です。 「10.8 独自のベンチマークの使用」を参照してください。
wait_timeout
サーバーが接続を閉じる前に、接続に対するアクションを待機する秒数。また、interactive_timeout も表示されます。
MySQL は非常にスケーラブルなアルゴリズムを使用しているため、通常は少ないメモリで実行することも、MySQL により多くのメモリを与えてパフォーマンスを向上させることもできます。
大量のメモリ、多数のテーブル、および適度な数のクライアントがあり、最大のパフォーマンスが必要な場合は、次のようなものにする必要があります。
shell> 16M -O table_cache=128
????-O sort_buffer=4M -O Record_buffer=1M &
メモリが少なく接続が多い場合は、次のようなものを使用します:
shell> ;safe_mysqld -O key_buffer=512k -O sort_buffer=100k
????-O Record_buffer=100k &
または:
shell>
?????-O table_cache=32 -O Record_buffer=8k -O net_buffer=1K &
接続数が多い場合、mysqld が接続ごとに設定されていない限り、「スワッピングの問題」が発生する可能性があります使用するメモリはほとんどありません。もちろん、すべての接続に十分なメモリがある場合は、mysqld のパフォーマンスが向上します。
mysqld のオプションを変更した場合、そのオプションは実際にはサーバーのそのインスタンスに対してのみ保持されることに注意してください。
パラメータ変更の影響を理解するには、次の手順を実行します:
shell>mysqld -O key_buffer=32m --help
--help オプションを確認してくださいが最後のものです。それ以外の場合、コマンド ラインでその後にリストされているオプションの効果は出力に反映されなくなります。