この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 11711|答える: 0

[出典] MySQL設定ファイル my.cnf が詳細に説明されています

[リンクをコピー]
掲載地 2017/11/13 11:55:59 | | |
MySQLの実行パラメータを調整し、/etc/my.cnfファイルを修正してください。MySQLの実行パラメータをMySQL再起動後に有効に調整します。MySQL 4バージョン以降は、一部の内部変数をMySQLの実行時に設定できますが、MySQLを再起動すると無効になります。
mysqld プログラム - ディレクトリとファイル
basedir = path # 与えられたディレクトリをルートディレクトリ(インストールディレクトリ)として使用してください。
Datadir = path # 指定されたディレクトリからデータベースファイルを読み取る。
pid-file = filename # mysqldプログラムがプロセスIDを保存するファイルを指定する(UNIX/Linuxシステムのみで利用可能);

[mysqld]                        
socket = /tmp/mysql.sock # MySQLクライアントプログラムとサーバー間のローカル通信用のソケットファイルを指定します(Linuxではデフォルトは/var/lib/mysql/mysql.sockファイルです)
port=3306 # MsSQLが聞くポートを指定します
key_buffer = 384M # key_buffer はブロックのインデックス作成に使われるバッファのサイズであり、すべての読み取りや多重書き込みにおいてより適切に扱うインデックスを増やします。
                               インデックスブロックはバッファリングされ、すべてのスレッドで共有され、key_bufferのサイズはメモリのサイズに依存します。
table_cache = 512 # すべてのスレッドで開かれたテーブルの数。 この値を上げると、mysqldに必要なファイルディスクリプタの数が増えます。 頻繁にデータテーブルを開く際のオーバーヘッドを回避できます
sort_buffer_size = 2M # ソートが必要なスレッドごとにそのサイズのバッファを割り当ててください。 この値を上げると、ORDER BYまたはGROUP BYの操作が加速されます。
                               注:このパラメータに対応する割り当てメモリは各接続に排他的です! 接続が100の場合、実際に割り当てられたソートバッファの総サイズは100×6 = 600MBとなります
read_buffer_size = 2M # 読み取りクエリ操作に使用できるバッファのサイズ。 sort_buffer_sizeと同様に、このパラメータに対応する割り当てられたメモリも各接続に排他的です。
query_cache_size = 32M # MySQL クエリ結果バッファのサイズを指定します
read_rnd_buffer_size = 8M # 行ポインタを使ってソートした後、パラメータをランダムに読み取る方向に変更します。
myisam_sort_buffer_size =64M # MyISAMテーブルが変更された際に並べ替えるために必要なバッファ
thread_concurrency = 8 # 同時スレッドの最大数はサーバーの論理CPU数×2として設定され、CPUがH.Tハイパースレッディングをサポートしている場合は×2
thread_cache = 8 # #缓存可重用的线程数
スキップロック#はMySQLの外部ロックを回避し、エラーの可能性を減らし、安定性を高めます。
[mysqldump]
max_allowed_packet =16M # サーバーとクライアント間で送信可能な最大情報パケット

[マイサムチク]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

その他のオプションパラメータ:
back_log = 384
    MySQLの可能な接続数を指定します。
    MySQLメインスレッドが非常に短時間で非常に多くの接続リクエストを受け取った場合、このパラメータが適用され、メインスレッドは接続を確認して新しいスレッドを開始するのに短時間かかります。
    back_logパラメータの値は、MySQLが一時的に新しいリクエストに応答しなくなるまでの短時間、スタックにどれだけ多くのリクエストを保存できるかを示します。
    短時間内に多くの接続がある場合、このパラメータの値を増やす必要があります。このパラメータは、受信TCP/IP接続のリスニングキューのサイズを指定します。
    OSよりも高い制限を設定しようとしても効果back_logありません。 デフォルト値は50です。 Linuxシステムでは、512未満の整数を設定することが推奨されています。
max_connections = n
    MySQLサーバーが同時に処理できる最大データベース接続数(デフォルト設定は100)です。 制限を超えると「接続数が多すぎる」エラーが報告されます
key_buffer_size = n
    インデックスブロックのRMA値(デフォルト設定は8M)、すべての読み取りとマルチライトに対してより良い扱いのためにインデックスを上げる
record_buffer:
    逐次スキャンを行う各スレッドは、スキャンする各テーブルにこのサイズのバッファを割り当てます。
    連続スキャンを多く行う場合は、その値を上げたほうが良いかもしれません。 デフォルト値は131072(128K)です。
wait_timeout:
    サーバーが接続の動作を待ってからシャットダウンする秒数です。
interactive_timeout:
    サーバーがインタラクティブ接続をシャットダウンする前に動作を待つ秒数です。
    相互作用する顧客とは、mysql_real_connect()に対してCLIENT_INTERACTIVEオプションを使用する顧客を指します。
    デフォルト値は28800で、3600に変更できます。
スキップネームリゾルブ            
    外部接続でMySQLをDNS解析から無効にすると、MySQLがDNSを解決する時間が短縮されます。
    ただし、このオプションを有効にすると、すべてのリモートホスト接続認証はIPアドレス方式を使う必要があり、そうでなければMySQLは通常接続リクエストを処理できません!
log-slow-queries = slow.log
    遅いクエリを記録し、一つずつ最適化しましょう
skip-innoDB
スキップ-BDB
    不要なテーブルタイプは閉じて、必要なら追加しないようにしましょう
         
         
# > '%query_cache%' のような変数を表示します。
# 「QCACHE%」のようにステータスを表示する>;
Qcache_lowmem_prunes値が非常に大きい場合、バッファリングが不十分であることを示します。
Qcache_hitsの値が非常に大きい場合は、クエリバッファが非常に頻繁に使われていることを示し、値が小さいが効率に影響を与える場合は、クエリバッファリングを使わないことを検討できます。
Qcache_free_blocks値が非常に大きい場合は、バッファ内に多くのゴミがあることを示します。


##########################################
###### max_allowed_packet      ######
##########################################
通信パケットとは、MySQLサーバーに送信される単一のSQL文、またはクライアントに送られる1行のことです。
MySQL 5.1サーバーとクライアント間で送信できる最大パケットは1GBです。
MySQLクライアントやmysqldサーバーがmax_allowed_packetバイトを超えるパケットを受信すると、「パケットが大きすぎる」エラーが出て接続が終了します。 一部のクライアントでは、通信パケットが大きすぎると、クエリ中に「Lost of connection of connection to MySQL server」というエラーが発生することがあります。
クライアントとサーバーの両方にそれぞれ独自のmax_allowed_packet変数があるため、大きなパケットを扱う予定がある場合は、クライアントとサーバーの両方にその変数を追加する必要があります。
mysqlクライアントプログラムを使っている場合、max_allowed_packet変数はデフォルトで16MBになります。 より大きな値を設定するには、mySQLを次の方法で起動できます:
mysql> mySQL --max_allowed_packet=32M
情報パッケージのサイズを32MBに設定します。
サーバーのデフォルトmax_allowed_packet値は1MBです。 サーバーが大きなクエリを処理する必要がある場合は、この値を増やすことができます(例えば、大きなブロブカラムを処理する準備をしている場合)。 例えば、16MBに設定するには、サーバーを次のように起動できます:
mysql> mysqld --max_allowed_packet=16M

オプションファイルを使ってmax_allowed_packetを設定することもできます。 この変数をサーバーで16MBに設定するには、オプションファイルにダウンリンクコンテンツを追加します:
[mysqld]
max_allowed_packet=16M
この変数の値を増やしても安全です。なぜなら、追加のメモリは必要な時だけ割り当てられるからです。 例えば、長いクエリを発行した場合や大きな結果行を返す必要がある場合のみ、mysqldがより多くのメモリを割り当てます。 この変数の小さなデフォルト値は、クライアントとサーバー間のエラーパケットをキャッチし、大きなパケットの誤用によってメモリオーバーフローが発生しないようにするための予防措置です。
大きなブロブのデータを使い、クエリを処理するのに十分なメモリへのアクセス権限をmysqldに与えていない場合、大きなパケットに関する奇妙な問題にも直面します。 もしそうなら、スクリプトのulimit -d 256000を増やし始めてmysqldを再起動してみてくださいmysqld_safe。
##########################################
##### MySQLでデータベーステーブルの開閉方法 #####
##########################################
table_cache、max_connections、max_tmp_tablesはサーバーが開いておく最大ファイル数に影響を与えます。 これらの値を1つまたは両方増やすと、各プロセスが開くファイルディスクリプタの数にOSが課す制限に直近になることがあります。 しかし、多くのシステムでは制限を増やすことができます。 制限を変更する方法はシステムごとに大きく異なるため、OSのドキュメントに確認してください。
table_cache max_connectionsに関係しています。 例えば、200個のオープンジョインの場合、テーブルバッファは少なくとも200 * n(nはジョイン内の最大テーブル数)を持つべきです。
開いているテーブルのキャッシュは最大1 table_cache(デフォルトは64、 これはmysqldの-O table_cache=#选项来改变)で行えます。 テーブルはキャッシュが満杯で他のスレッドがテーブルを開こうとする場合や、mysqladminのリフレッシュやmysqladminフラッシュテーブルを使う場合以外は閉じません。
テーブルキャッシュが満杯になった場合、サーバーは以下の手順で使用するキャッシュエントリを探します。
現在使用されていない表は、使用頻度が最も低い順(LRU)でリリースされます。
キャッシュが満杯でリリースすべきテーブルがない場合、新しいテーブルを開く必要がある場合は、キャッシュを一時的に拡張する必要があります。
キャッシュが一時的に拡張状態にあり、テーブルがアクティブから非アクティブに変わると、そのテーブルは閉じられキャッシュから解放されます。
同時アクセスごとにテーブルを開いてください。 つまり、同じテーブルに2つのスレッドがアクセスしている場合、または同じクエリで2回(ASで)テーブルに2回アクセスする場合、そのテーブルは2回開く必要があります。 任意のテーブルの最初の開きは2つのファイルディスクリプタを考慮します。 テーブルの追加使用は1つのファイルディスクリプタのみを意味します。 最初の開口時には、ファイルをインデックスするための追加のディスクリプタが使われます。 この記述子はすべてのスレッドで共有されます




先の:Linuxシステムでは/etc/init.dディレクトリと/etc/rc.localスクリプトを理解してください
次に:LinuxのCentOS上でMySQLサービスが開始されたことを確認する方法
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com