Mysqlの同時パラメータ調整の詳細な説明

Mysqlの同時パラメータ調整の詳細な説明

クエリキャッシュの最適化

使用することはお勧めしません。通常、アプリケーション サービスのキャッシュ レイヤーとして使用されます。結局のところ、データの同時実行能力には制限があります。

概要

MySQL クエリ キャッシュを開始すると、同じ SQL ステートメントを実行すると、サーバーはキャッシュから結果を直接読み取ります。データが変更されると、以前のキャッシュは無効になります。頻繁に変更されるテーブルは、クエリ キャッシュには適していません。

クエリプロセス

1. クライアントがサーバーにクエリを送信します。 2. サーバーは最初にクエリ キャッシュをチェックします。キャッシュにヒットした場合は、キャッシュに保存されている結果をすぐに返し、ヒットしなかった場合は次の段階に進みます。 3. サーバーは SQL を解析して前処理し、オプティマイザーが対応する実行プランを生成します。 4. 生成された実行プランに従って、ストレージ エンジン API を呼び出してクエリを実行します。 5. 結果をクライアントに返し、クエリ結果をクエリ キャッシュに格納します。

クエリキャッシュ構成

データベースがクエリキャッシュをサポートしているかどうかを確認します (YES または ON)
	'have_query_cache' のような変数を表示します。
データベース クエリ キャッシュが有効になっているかどうかを確認します。'query_cache_type' などの変数を表示します。
	OFF または 0 クエリ キャッシュ機能がオフになっています。ON または 1 クエリ キャッシュ機能がオンになっており、キャッシュ条件を満たす SELECT 結果がキャッシュされ、そうでない場合はキャッシュされず、SQL_NO_CACHE が指定され、キャッシュは実行されません。DEMAND または 2 クエリ キャッシュ機能は要求に応じて実行され、SQL_CACHE を指定する SELECT ステートメントのみがキャッシュされ、その他はキャッシュされません。クエリ キャッシュのサイズを表示するには、「query_cache_size」などの変数を表示します。
キャッシュ ステータスを確認すると、「Qcache%」のようなステータスが表示されます。
		Qcache_free_blocks キャッシュで使用可能なメモリ ブロックの数 Qcache_free_memory キャッシュで使用可能なメモリの量 Qcache_hits クエリ キャッシュ ヒットの数 Qcache_lowmen_prunes メモリ不足のためクエリ キャッシュから削除されたクエリの数 Qcache_not_cached キャッシュされていないクエリの数 (query_cache_type 設定によりキャッシュできない)
		Qcache_queries_in_cache クエリキャッシュに登録されているクエリの数 Qcache_total_blocks クエリキャッシュ内のブロックの合計数 クエリキャッシュを有効にする mysql設定ファイルを見つけてmy.cnfを追加します query_cache_type=1を追加します
	クエリキャッシュはquery_cache_type=DEMANDで有効になります   
		テーブルからSQL_CACHE IDを選択
	クエリキャッシュはquery_cache_type=ONで有効になります    
		テーブルからSQL_NO_CACHE IDを選択

クエリキャッシュの無効化

SQL ステートメントの不整合: クエリ SQL に不確実な情報があります:
	now()、current_date()、curdate()、curtime()、rand()、uuid()、database() など
テーブル クエリ ステートメントを使用せずに、mysql、infomation_schema、または performance_schema データベース内のテーブルをクエリする場合、クエリ キャッシュは使用されません。挿入、更新、削除、ドロップなど、保存された関数、トリガー、またはイベントの本体内で実行されるクエリ テーブルの変更により、クエリ キャッシュが削除されます。

メモリ管理の最適化

メモリ最適化の原則

MySQL にキャッシュ用にできるだけ多くのメモリを割り当て、オペレーティングシステムやその他のプログラム用に十分なメモリを確保します。MyISAM ストレージ エンジンのデータ ファイルの読み取りは、オペレーティングシステム自身の IO キャッシュに依存します。そのため、MyISAM テーブルがある場合は、IO キャッシュのソート領域としてオペレーティングシステム用にさらに多くのメモリを確保する必要があります。接続領域およびその他のキャッシュは、各データベース セッションに割り当てられます。デフォルト設定は、最大接続数に応じて合理的に割り当てる必要があります。設定が大きすぎると、リソースを浪費するだけでなく、同時接続が多い場合にメモリ不足を引き起こします。

MyISAM メモリ最適化

myisam ストレージ エンジンは、key_buffer を使用してインデックス ブロックをキャッシュし、myisam インデックスの読み取りと書き込みを高速化します。 MySQLにはMyISAMテーブルのデータブロック用の特別なキャッシュメカニズムはなく、オペレーティングシステムのIOキャッシュkey_buffer_size=512Mに完全に依存しています。
	key_buffer_size の値が大きいほど、効率が高くなります。使用可能なメモリの少なくとも 1/4 を key_buffer_size に割り当てることをお勧めします。
'key_buffer_size' のような変数を表示し、key_buffer_size red_buffer_size のサイズを照会します
	MyISAM テーブルを頻繁に連続スキャンする場合は、read_buffer_size の値を増やすことでパフォーマンスを向上させることができますが、key_buffer_size は各セッション専用であるため、あまり増やさないでください。複数設定すると、リソースが無駄になります。
	ソートを頻繁に必要とする MyISAM テーブルに対するクエリの場合、SQL に order by 句が含まれていると、red_rnd_buffer_size の値を適切に増やすことで、そのような SQL のパフォーマンスを向上させることができます。これもセッション専用であり、あまり大きく設定することはできません。

InnoDB メモリ最適化

InnoDBはメモリ領域をIOバッファプールとして使用します。これは、InnoDBインデックスブロックをキャッシュするだけでなく、InnoDBデータブロックをキャッシュするためにも使用されます。 inodb_buffer_pool_size
	この変数は、innoDB ストレージ エンジンとインデックス データの最大キャッシュ サイズを決定します。オペレーティング システムとその他のプログラムに十分なメモリが確保されていることを前提として、値が大きいほどキャッシュ ヒット率が高くなり、innoDb テーブルへのアクセスに必要なディスク IO が少なくなり、パフォーマンスが向上します。innodb_buffer_pool_size=521M
innodb_log_buffer_size
	Innodb の再実行ログ バッファのサイズを決定します。大量の更新レコードを生成する可能性のある大規模なトランザクションの場合、innodb_log_buffer_size のサイズを増やすと、トランザクションがコミットされる前に Innodb がディスク IO に不要なログ書き込みを実行するのを回避できます。
	innodb_log_buffer_size=10M
'innodb_buffer_pool_size' のような変数を表示します。
innodb_flush_log_at_trx_commit
	InnoDB がログ バッファ内のデータをログ ファイルに書き込み、ディスクをフラッシュする時間を制御します。値は 0、1、2 です。
innodb_thread_concurrency
	同時実行可能な Innodb スレッドの数を設定します。デフォルト値は 0 で、無制限を意味します。innodb_log_buffer_size を設定する場合は、サーバーの CPU コア数と同じか、CPU コア数の 2 倍にすることをお勧めします。
	ログファイルの実行に使用されるメモリサイズ(M単位) innodb_log_files_in_group
	ログファイルを複数のファイルに循環的に書き込む read_buffer_size
	MySQLの読み取りバッファサイズ。テーブルのシーケンシャルスキャンの要求は読み取りバッファread_rnd_buffer_sizeに割り当てられます。
	MySQL ランダム読み取りバッファサイズ

接続の最適化

最大接続数

最大接続数。デフォルトは 151 ですが、Linux は通常、サーバー パフォーマンス評価に応じて 500 ~ 1000 をサポートできます (「max_connections」などの変数が表示されます)。
	最大接続数を表示する

やり残し

最大接続数を超えた後の待機接続の最大数はスタックに保存され(通常50+(max_connections/5))、最大値は900を超えません。
「back_log」のような変数を表示する

テーブルオープンキャッシュ

すべての SQL ステートメント実行スレッドで開くことができるテーブル キャッシュの数を制御します。SQL ステートメントを実行する場合、各 SQL 実行スレッドは少なくとも 1 つのテーブル キャッシュを開く必要があります。このパラメータの値は、接続の最大数 max_connectons と、各接続による関連クエリの実行に関係するテーブルの最大数に応じて設定する必要があります。

スレッドキャッシュサイズ

データベースへの接続を高速化するために、MySQL は一定数のカスタマー サービス スレッドをキャッシュして再利用します。パラメータ thread_cache_size を使用して、MySQL キャッシュ カスタマー サービス スレッドの数を制御できます。

innodb_lock_wait_timeout

innoDB トランザクションが行ロックを待機する時間を設定します。デフォルト値は 50 ミリ秒ですが、必要に応じて動的に設定できます。高速フィードバックを必要とするビジネス システムの場合、行ロック待機時間を短縮して、トランザクションの長時間停止を回避できます。バックグラウンドで実行されるバッチ処理プログラムの場合、行ロック待機時間を長くして、大規模なロールバック操作を回避できます。show variables like 'innodb_lock_wait_timeout';

ログ

エラー ログ ファイルの名前。このファイルには、MySQL の起動時および停止時の情報と、サーバーの実行中に発生した検証エラーが記録されます。

ログビン

データベースに変更を加えるすべてのステートメントを記録するために使用されるバイナリ ログ ファイルの名前を指定します。

binlog_do_db binlog_ignore_db

バイナリ ログで更新するデータベースを指定します。明示的に指定されていない他のすべてのデータベース更新は無視され、ログに記録されません。

同期バイナリログ

ディスクを同期する前にログを書き込む回数を指定します

一般ログ=1

クエリログを有効にするかどうか

general_log_file ファイル名 (デフォルトは host_name.log)

クエリ ログ ファイル名を指定します。ユーザーはすべてのクエリ ステートメントをクエリ ログ ファイル名に記録します: slow_query_log_file=slow_query.log
mysqldumpslow slow_query.log; スロークエリログファイルを表示する

遅いクエリログ=1

スロークエリログを有効にするかどうか。1 は有効、0 は無効を意味します。

長いクエリ時間=3

低速クエリ時間を設定します。この時間を超えるクエリ ステートメントのみがログに記録されます。

ログの遅い管理ステートメント

管理ステートメントをスロークエリログに書き込むかどうか

これで、MySQL 同時実行パラメータ調整の詳細な説明に関するこの記事は終了です。MySQL 同時実行パラメータ調整に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL ロック制御同時実行方法
  • MySQL 同時実行制御の原則に関する知識ポイント
  • MySQLデータの同時更新を処理する方法

<<:  JavaScript のモジュール性の説明

>>:  CSSはグラデーションを巧みに利用して高度な背景光アニメーションを実現します

推薦する

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

シンプルな虫眼鏡効果を実現するJavaScript

大きな箱の中に写真があります。マウスをその上に置くと、半透明のマスク レイヤーが表示されます。マウス...

MySQLのROUND関数の丸め演算における落とし穴の分析

この記事では、MySQL の ROUND 関数を使用した丸め操作の落とし穴を例を使って説明します。ご...

mysql での rpm インストールの詳細な説明

インストールとアンインストールの表示 # rpm -qa | grep mysql を表示 # アン...

MySql インデックスの詳細な紹介と正しい使用方法

MySql インデックスの詳細な紹介と正しい使用方法1. はじめに:インデックスはクエリ速度に重大な...

CSS 複数 3 列適応レイアウト実装の詳細な説明

序文従来のWEBレイアウトに沿うため、すべてヘッダーとフッターモードの左・中央・右レイアウトで書かれ...

ソースコード分析からTomcatがサーブレットの初期化を呼び出す方法の詳細な説明

目次導入1. Tomcatを起動するコード2. Tomcatフレームワーク3. コンテナを作成する ...

Windows で MySQL 5.7.17 圧縮バージョンをインストールするときに遭遇する落とし穴

まず、Windows 64 ビット用の最新の MySQL 5.7.17 コミュニティ圧縮バージョンを...

MongoDB データベースの状態を監視する Zabbix3.4 メソッド

Mongodb には db.serverStatus() コマンドがあり、これを使用して Mongo...

CSS継承方法

次の背景画像を持つ div があるとします。 次の反射効果を作成します。 方法はたくさんありますが、...

ECMAScript の演算子を理解するための記事

目次単項演算子ブール演算子乗算演算子加法演算子関係演算子等価演算子条件演算子代入演算子カンマ演算子要...

MySQL 8.0.12 のインストールと設定のチュートリアル

この記事はMySQL 8.0.12のインストールと設定に関する詳細なチュートリアルを記録しています。...

要素の円弧モーションを実現する CSS3 サンプルコード

CSS を使用して要素の円弧の動きを制御する方法CSS3 の新しい属性 transfrom トランジ...

preタグを自動的に折り返すためのサンプルコード

pre 要素は、フォーマット済みのテキストを定義します。 pre 要素で囲まれたテキストでは、通常、...

Linuxシステムにおけるキー認証に基づくSSHサービスのプロセス

ご存知のとおり、SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキ...