mysqlストレージエンジンが知る必要のある最適化パラメータ

バックグラウンド

老版本与旧版本交替之际,需要了解之间参数的不同

短い
摘录于https://developer.aliyun.com/article/472132
リンクで

MyISAM

MyISAM存储引擎优化

涉及参数如下:

Key_buffery_size

Concurrent_insert = 2 | WAAYS

Bulk_insert_buffer_size=8M

Myisam_recover_options=FORCE

Myisam_recover_threads=1

Myisam_sort_buffer_size=1G

key_buffery_size

これは主にmyisamテーブルのインデックス情報を格納するために使用され、特別なIOスケジューリングアルゴリズムもあります。不明な場合は、そのバッファがフラッシュされ
ます。mysql5.6バージョンのデフォルトエンジンはinnodbに調整され、一時テーブルのデフォルトエンジンは同じであるため、myisamエンジンは基本的にkey_buffer_sizeを調整しますが、現在ほとんどのmysqlライブラリにmyisamが含まれており、
innodbであるテーブルはごくわずかであるため、禁止することはできません。そのため、それらの多くはmyisamエンジンです。禁止することはできませんが
、5.6バージョンの場合、key_buffer_sizeは8Mです。

Bulk_inser_buffer_size = 8M(デフォルト)

高バージョンでは、デフォルトは8Mで、低バージョンは4Mのままなので、小さい場合は、より大きな値に変更できます。一般的に、SQLの値は次のとおりです
。insertintotb(c1、c2、 c3)values()、()…;
構成が1Mの場合、insertは4Mデータを実行します。この場合、エラーが報告され、デフォルトで調整する必要はありませんが、データ収集などを行っている場合シナリオ、あなたはそれを増やす必要があります

myisamテーブルが壊れている可能性があるため、次のパラメーターをこれで開くことができます。

Myisam_recover_options = FORCE
Myisam_recover_threads = 1
Myisam_sort_buffer_size = 1G
これは自動的に修復され、myisamテーブルの修復です。

但是有缺点,如果使用Myisam_recover_options=FORCE ,很可能会丢失数据,
因为myisam表已经不能保证数据一致性,所以丢数据也避免不了,所以,如果业务数据非常重要,
对于安全性要求很高,那么尽量不要用myisam

因为5.5之后官方不会对myisam做任何升级和维护;5.6之后默认引擎为innodb。临时表也改为innodb

innodb

innodb_buffer_pool_size

主にホットデータを保存する、ページごとに保存する、ページは最小単位、またはセグメントごとに保存する
推奨値:専用データベースサーバーの場合は、物理メモリの50%〜75%に割り当てることをお勧めします

innodb_buffer_pool_instances

主にバッファプールのグローバルロックを容易にするためです。
通常は8に設定されます。5.5バージョンでは4に分割されます。5.6バージョン以降は8に分割されます。他の値に変更することはできません。圧力測定の結果、8最高の性能を得ることが可能です

innodb_log_file_size

データページのパーセンテージを設定することをお勧めします。たとえば、ページが15%で、バッファプールが100Gの場合、両側を乗算した結果は15Gになります。実際、推奨値はデータページと同じです。構成。それほど大きく構成されていない可能性があるため、file_sizeを1gに設定します。

したがって、複数のログファイルを使用する場合は、次のパラメータが関係します
。innodb_log_file_in_gourp

計算方法については、いくつかのログファイルを設定できます。

InnodbのREDOログファイルサイズ。合計サイズはinnodb_log_file_sizeです。*
Innodb_log_file_in_group合計サイズは600M以上である必要があります。
通常、3つのログファイルをお勧めします。

innodb_file_per_table

独立した表スペースを設定するかどうか
5.6より前は閉じられていましたが、デフォルトでは5.6より後に開かれました。開くことをお勧めします

innodb_file_format#バラクーダとして指定することをお勧めします

innodb_flush_log_at_trx_commit


データをインポートする場合、2〜3日で完了しない可能性があります。このパラメータを1に設定した結果である可能性があります。つまり、データをインポートするときに2になる可能性があります。それ以外の場合は、
更新することをお勧めします。トランザクションごとにディスクに。、セキュリティは高いが、パフォーマンスが最も低く、
データ転送が最も遅くなることが多い(データセキュリティが高い)
0トランザクションを
1秒ごとにディスクにフラッシュする2トランザクションをフラッシュし、1秒に1回程度ディスクに同期するが、実際にはオペレーティングシステムのバッファで、オペレーティングシステムの電源がオフになっていると、エラーや損失が発生します。
#データは人間が参加するプロセスであるため、2に設定して速度を最大化し、完了します。エラーです。手動でやり直してください

innodb_flush_log_at_timeout(5.6で導入)

このパラメーターは、N秒ごと(1〜2700秒)のログ更新を制御するために使用されます。これはグループコミットの拡張です。デフォルトは1秒で、1秒ごとに更新され、クロップコミットによって処理されます。実際には1〜2700秒で実行できます。システムに高いパフォーマンス要件がある場合は、この値を変更できます。設定を大きくすると、グループコミット作業が向上するため、スループットレートが高くなります。リアルタイム同期要件が高い場合は、低い値を設定します。デフォルト値は
相対関係にすることできます。良好なパフォーマンスが得られますが、ライブラリから遅延が発生する可能性があり
ます.3秒に調整し、この3秒でコミットし、2秒でハングし、2秒の間にデータが変更されます。

innodb_flush_method

指定したデータを実際にディスクに書き込む方法を使用すると、O_DIRECTを直接使用できます
。O_DIRECTはXFSまたはEXT4で動作します。パフォーマンスは非常に優れています。
最大の問題は、O_DIRECTを使用してシステムのVFSレベルのキャッシュを削減することです。メモリは使用するバッファプールを提供
できますfsyncを使用してそれを行うと、vfsレベルのキャッシュを消費し、大量のメモリを消費します。バッファプールが大きいと、oomが発生しやすい
ため、 O_DIRECTの目的は、メモリを節約し、より大きなバッファプールスペースを提供することです。

innodb_flush_neighbors

デフォルトは0です。このパラメータを使用すると、ダーティページがエクステントに近い状態で更新されます。たとえば
、書き込み時にダーティページがチェックされます。今回は、ダーティページがシーケンシャル書き込みにマージされます。たとえば、1番目のエクステントと2番目のエクステントが隣接している場合、ここに移動すると、2番目のエクステントもあることがわかります。ちなみに、2番目のエクステントをブラシで塗ります。あまりにも

sas sataディスクの場合は、1を使用することをお勧めしますが、ssdの場合、アドレス指定の遅延がないため、ダーティページは元々ホットデータでしたが、更新後にコールドデータに変更されたため、更新する必要はありません。データが再度ロードされます(ssdはデフォルトの0を維持します)

IO関連の最適化

innodb_io_capacity #important

このパラメーターは、innodb ioの最大数です。
通常、10W iopsは正常であり、後で最適化が実行されました:hdd 150 *ディスク数、ssd 2000-10千。たとえば
、6つのディスクはRAID10で構成され、次に計算は150 * 3です。
考慮する必要があるのは、6つのディスクを備えたRAIDの場合、ディスクIO容量の速度を考慮する必要があります。最初にRAID 1を実行すると、IO容量を増やすことができます。増やすことができない場合その場合、IO容量を改善するのは0にすぎないため、6つのディスクを備えたRAID10は3ブロックのディスクIO機能しか取得できません。

以下是对capactiy的补充参数

比如这里配置的是3块盘的450个,但是峰值会更高,可能会达到1000个或更多,那么可以对以下参数指定最大值

innodb_io_capacity_max              #设置io_capacity 最大值 

读写相关:

Innodb_write_io_threads

Innodb_read_io_threads

建议配置值:

保持与CPU的数量一样就可以了,比如是16核心的cpu 那么配置为16即可

如果是8核就配成8 以此类推

配置太高的话会到导致系统很卡 ,所以保持一致即可

Innodb_write_io_threshold

1つのprefech複数ページのみをbp(0-64)に
許可
しますInnodb_random_read_ahead Prefech to bpの機能はオンになっていますか?
シーケンシャルIOおよびデータ読み込みの問題を考慮します。たとえば、ユーザーのユーザー情報の読み取りなど、
ioしきい値の読み取りを行います。
システム、次にこのページがdpにロードされる
ので、隣接するページをロードするかどうかを指定する必要がある場合があります。問題があります。ユーザーシステムの場合は、隣接するページをロードする必要はありません。ページを開いて直接オフにします。追加のデータは必要ないため、このパラメーターは間違いなく0です
が、フレンド関係の場合、データがこのユーザーに読み取られると、プログラムは隣接するユーザーを読み取ってロードする必要があります。このパラメータを大きく設定でき
ます。3などの詳細をお読みください。このパラメータは、ビジネスシステムに応じて組み合わせる必要があります。仕方がない場合は、そのままにしておきます。

この記事では、主な技術コンテンツは、インターネットテクノロジーの巨人の共有と、一部の自己処理(注釈の役割のみ)に由来することを説明しています。関連する質問がある場合は、確認後にメッセージを残してください。侵害の実装は削除されます

おすすめ

転載: blog.csdn.net/baidu_34007305/article/details/110409482