101のMySQLのチューニングのヒント

MySQLは、強力なオープンソースのデータベースです。より多くのデータベース駆動型アプリケーションとして、それには限界へのMySQLの開発を推進してきました。ここで調整する101個のヒントがあります。中には、特定のスキルのためのものであるMySQLをインストールし、最適化。設置環境が、これらのアイデアは一般的なものと私はより多くの規制と最適化手法のMySQLを持っているあなたを助けるためにカテゴリにそれらを入れている。 のMySQLサーバのハードウェアとオペレーティング・システムの規制: 1.メモリのInnoDBにファイル全体をロードするのに十分な物理メモリを持っている - 交換時間を - のすべてのファイルにアクセス2.避けスワップスワップの使用を要するとき時にメモリ速度のハードディスクにアクセスするよりもはるかに高速ハードディスクから読み出され、それは非常に遅い3電池式RAM(注:すなわち、ランダム・アクセス・メモリRAM)4.高度RAID(注:安価なディスクの冗長アレイ、すなわち、ディスクアレイ) - ほとんど。またはより好ましくは5からRAID5 RAID10(注:ストレージ・パフォーマンス、データセキュリティ、そしてストレージをストレージソリューションの両方がコスト)を避けるために - データベースの整合性チェックを保証することは価格で来て、6オペレーティングシステムただ論理的、物理さらに備える上の個別のデータ・パーティション - オペレーティングシステムの読み取りと書き込みのパフォーマンスが一時領域7. MySQLデータベースに影響を与え、別のパーティションにログデータをコピーすることができます - とき、ディスクからのバックグラウンドのデータベース...シリアル時:読み取りおよび書き込み操作は、データベース8より多くのディスクスペース等しいより高速なディスク10 9.より良いの使用のパフォーマンスと高速SAS(注影響を与えます tached SCSI、シリアル接続SCSI)の代わりに、SATA(注:.. SATA、即ちシリアルハードディスクドライブ)11を比較的大きく速い小さなハードドライブ、RAID構成のキャッシュの場合には特に、電池支持体12 (いないディスクドライブ)ディスク・アレイ・データ・パーティションは、固体IOカードを使用するように考えられているRAIDコントローラソフトウェア13 14を使用しないように - 。これらのカードは、データのサポート2ギガバイト/秒15の書き込み速度のLinuxでのほぼ任意の数とすることができます、データベース・サーバのキャッシュファイルには理由これは、サーバーやデスクトップ16可能な場合の利点である、noatimeオプションを使用してnodirtimeファイルシステムをマウント - - swappinessの設定値は0ではありませんAccessデータベースファイルの更新を変更する理由はありません時間17. XFSファイルシステム使用 - 比較のext3より速く、より小さなファイルシステムを、そしてそこに多くのログオプションがあり、とext3は調整XFSファイルシステム18のダブルバッファリングの問題でMySQLにリンクされ、バッファ変数をログに記録されています。 - システム内で最高性能基準19. Linux用。 MySQLの設定: innodb_flush_methodの使用を避けるために、書くとき25 = O_DIRECT 26は、ダブルバッファリングO_DIRECT EXT3ファイルシステムの使用を避け、 - あなたは、シーケンス27メモリのInnoDBにファイル全体をロードするのに十分な分与innodb_buffer_pool_sizeの全てに書き込まれます - ディスク28から以下の読み取りをすばやく同時に多くのディスク領域を持つことができますので、あまりにもパラメータ設定をinnodb_log_file_sizeしないでください - より多くのログが失われ、通常は良いですが、データベースのクラッシュ後にデータベースを回復する時間を短縮することができます。あまりにも多くの接続がRAMの不足と比較的に維持MySQLサービス31 thread_cacheロック - これらの2つの値が30 MAX_CONNECTIONSパラメータに最小量の割り当てと互換性がありません - 29. innodb_thread_concurrencyとthread_concurrencyパラメータを混在させないでくださいクエリを使用することができ、あなたは検索クエリが反復されているDNSを削除すると... 33、およびデータが頻繁に変更されません - 高い数字は、約16 - 32スキップ - 名前解決のパラメータを使用し接続を開くときに遅い防ぎますキャッシュ。しかし、もしあなたのデータ頻繁に変化するので、使用 お問い合わせキャッシュを使用すると、失望を感じるようになります。増加を防ぐために、34 temp_table_size増加した値を、ディスク35 36はsort_buffer_sizeの値を設定しないでください高すぎを防止するために、ディスクに書き込まれた値に書き込まmax_heap_table_size、そうでない場合は、あなたの記憶がしますすぐにそうでなければ、0に設定し、効率的な利用key_buffer 38 innodb_flush_log_at_trx_commitは、パフォーマンスを向上させることはできませんが、あなたがしたい場合は、key_read_requestsとkey_reads値に応じて、key_read_requests key_reads値は通常の状況下でよりも高くする必要がありますサイズを決定するために37 key_bufferを使い果たしデフォルト値(1)を保ち、その後、データの整合性を確認する必要があります。また、その複製が遅れていないことを確認しなければならない。39。 MySQLの最適化モード: 40. 41.データアーカイブ古いデータベースの管理性を維持- 44個のクエリと比較して、インデックスを使いすぎないで、余分な改行を削除するか、あなたのデータを加えた42指標43を照会検索....テキストおよびBLOBデータ・タイプの圧縮- ..、スペースを節約し、ディスクの数が45 UTF-8およびUTF-16は、47の冗長データ最小限にフリップフロップを維持するために控えめ効率46の使用をlatin1のより低い読み出し低減します-不要なデータの重複しない。48.リンクテーブルではなく、他のデータは、多くの場合、可能な限り使用して照会するために使用されている場合は、あなたの実際のデータ、50の最小のデータ型のことをライン49注意を拡張なし、およびBLOB / TEXTデータはないが、他のデータから分離BLOB / TEXTデータを入れる。51.インデックス列を削除するために追加したときに検査し、定期的に最適化テーブル52のテーブルはInnoDBの最適化は、多くの場合、その後の追加、時には53を書き換えバック異なるニーズになる迅速54インデックスに、異なるストレージエンジンは、アーカイブストレージエンジンのテーブルまたは監査ログテーブルを使用して55を使用-...バッファ56に格納されたセッションデータを書き込むために、より効率的です。代わりのMySQLの(Memcacheのは) -キャッシュは自動的に自動的に値を入力し、CHARの代わりにVARCHAR可変長文字列57の蓄積時間を利用して空間的、時間的データを読み取り、MySQLへの書き込みをするのは難しい作成からあなたを防ぐために許可されている- 。保存CHAR固定長および固定長VARCHAR 58徐々に変化するモード(UTF8がこの影響を受けない)のでスペースは、 -小さな変化が大きな影響59は、開発環境ですべてのモードをテストすることができます。生産の変動を反映している。60は、設定ファイルの値を変更しないでください、それは悲惨な効果を持つことができます。61時には、MySQLのコンフィグは以下よりです。62.一般的なMySQL設定の使用が疑わしい場合はファイルの クエリの最適化: 63.使用64 65の正常な動作は常に彼らは最高の状態で実行されているかどうかを確認するためにあなたのクエリをテストするかどうか、クエリの使用を判断するスロークエリの実行プランを見つけるためにスロークエリログ-...時間が経つにつれてパフォーマンスは常に66に変更されますテーブル全体にわたり数(*)を使用しないように、テーブル全体をロックすることがあります。67.クエリキャッシュを使用することができます同様のクエリと一致問い合わせのフォローアップ。68を適切な場合には代わりに、DISTINCT、GROUP BYを使用しました。 69.この場合、インデックスはシンプルなまま句インデックス付きの列BY GROUP BYおよびORDER。70、71時にはMySQLで複数の列が間違ったインデックスを使用しますインデックスに含まれていない使用、使用インデックスを使用。72 SQL_MODE = STRICT問題を用いて検討した。73 5未満のインデックスフィールドの数を記録するために、LIMITのUNIONにORではない場合。74.更新前SELECTを回避するために、重複キーの挿入を使用してまたは)75は、BY句インデックスフィールドとORDERを使用して、MAXを使用しないでください。76回避をRAND(BY ORDERを使用。達成するためにUPDATEを使用していない、IGNORE挿入します。77. LIMIT M、Nは、実際にクエリを遅くすることができます いくつかの状況下では、それは控えめに使用されている。代わりにWHERE句にサブクエリを使用するUNION 78。79.アップデート(更新)排他ロックを防止するために、共有モード(共有モード)を使用。80.再起動のMySQLあなたのデータはメモリと高速クエリの速度であることを確認するために、データベースを温めることを忘れないでください。81.使用DROP表、削除からテーブルからすべてのデータを削除するには、テーブルを作成します。82.あなたが必要とするクエリデータ内のデータを最小限に抑えます、使用*多くの時間を消費する。83は、オーバーヘッドを減らすために、むしろ複数の接続よりも持続的な接続を、検討する。84サーバの負荷の使用を含むベースのクエリ、時には簡単なクエリは他のクエリに影響を与えることができます。85時に負荷が増加サーバー上で、遅いと問題のあるクエリを参照するには、SHOW PROCESSLISTを使用しています。86。 :MySQLのバックアップ処理が 完全にデータベースファイルのバックアップから89のMySQL、90を停止し、データ依存性や外部キー制約での不整合を回避するために、セカンダリサーバの複製にバックアップ・コピーからバックアップを実行中に88 87を停止します...あなたがMySQLのダンプのバックアップを使用している場合は、バイナリログファイルをバックアップしてください- 91 LVMのスナップショットは信用していない中断せずにコピーしてください-一貫性のないデータを生成する可能性がある、将来はより簡単に、単一のテーブルを行うためには、あなたにトラブル92をもたらします回復、ユニットとしてテーブルにエクスポートデータ-...高速インポートするmysqldumpを使用バックアップ最適化チェック前-opt 94とテーブル95を使用する場合、データが他のテーブル93から分離されている場合、インポート一時的に外部キー制約を無効にする。96を高速インポートするための固有の中に導入された場合、一時的検出を無効にする。97.計算データベースのサイズ、および各バックアップ後のテーブルのインデックスを、複数の成長監視データサイズであるために。 ...実行します。98.コピーエラーや遅延インスタンスの自動監視をスケジュールすることにより、スクリプトが定期的にバックアップ100 99.定期的にバックアップ101をテストを実行します MySQLの監視:Monitisを発表世界初の無料

ます。https://my.oschina.net/766/blog/211554で再現

おすすめ

転載: blog.csdn.net/weixin_33967071/article/details/91493115