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はグラデーションを巧みに利用して高度な背景光アニメーションを実現します

推薦する

JavaScript 関数はランダムな色の検証コードをカプセル化します (完全なコード)

数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...

MySQL エラー: 接続数が多すぎる場合の解決策

MySQLデータベースの接続が多すぎますこのエラーは明らかに、mysql_connect の後に m...

Quickjs は JavaScript サンドボックスの詳細をカプセル化します

目次1. シナリオ2. 基盤となるAPIを簡素化する2.1 自動的に破棄を呼び出す2.2 VM値を作...

Linux オペレーティング システムの概要と紹介

目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...

VMware Workstationはデバイス/資格情報ガードと互換性がありません

仮想マシンをインストールするときに、「VMware ワークステーションはデバイス/資格情報ガードと互...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

HTML ページジャンプとパラメータ転送の問題

HTMLページジャンプ: window.open(url, "", "...

プライベートウェアハウス(レジストリとハーバー)を構築するためのDockerの実装

使用される Docker イメージが増えるにつれて、イメージを保存する場所、つまりウェアハウスが必要...

CSS グリッドレイアウトの完全ガイド

Grid は 2 次元のグリッド レイアウト システムです。これを使用すると、本質的にはハック メソ...

テーブル関連の配置とJavascript操作テーブル、tr、td

適切に機能するテーブル プロパティ設定:コードをコピーコードは次のとおりです。 <テーブル セ...

Windows Server 2008 のサーバー パフォーマンス監視に関するチュートリアル

次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...

Vue3 のレンダリング関数における互換性のない変更の詳細な説明

目次レンダリングAPIの変更レンダリング関数のパラメータレンダリング関数のシグネチャの変更VNode...

Docker Machineの詳細な説明

Docker と Docker Machine の違いDocker はクライアント サーバー アーキ...

VMware に CentOS7 をインストールし (静的 IP アドレスを設定)、Docker コンテナ経由で mySql データベースをインストールする (非常に詳細なチュートリアル)

2 年生から、これらのインストールと設定の仕方を尋ねられました。簡単なチュートリアルを作成し、ここ...