MySQL 最適化 query_cache_limit パラメータの説明

MySQL 最適化 query_cache_limit パラメータの説明

クエリキャッシュ制限

query_cache_limit は、単一のクエリで使用できるバッファ サイズを指定します。デフォルトは 1M です。

query_cache_size の最適化

MySQL 4.0.1 以降では、クエリ バッファ メカニズムが提供されます。クエリ バッファリングを使用すると、MySQL は SELECT ステートメントとクエリ結果をバッファに保存します。今後、同じ SELECT ステートメント (大文字と小文字が区別されます) の結果はバッファから直接読み取られます。 MySQL ユーザー マニュアルによると、クエリ バッファを使用すると最大 238% の効率向上が達成できます。

ステータス値Qcache_*を確認することで、query_cache_sizeの設定が適切かどうかを知ることができます(上記のステータス値はSHOW STATUS LIKE 'Qcache%'を使用して取得できます)。 Qcache_lowmem_prunes の値が非常に大きい場合、バッファが不足することが多いことを示しています。Qcache_hits の値も非常に大きい場合は、クエリ バッファが非常に頻繁に使用されていることを示し、バッファ サイズを増やす必要があります。Qcache_hits の値が大きくない場合は、クエリの繰り返し率が非常に低いことを示しています。この場合、クエリ バッファを使用すると効率に影響するため、クエリ バッファを使用しないことを検討できます。さらに、SELECT ステートメントに SQL_NO_CACHE を追加すると、クエリ バッファが使用されていないことが明示的に示されます。

クエリ バッファリングに関連するその他のパラメータには、query_cache_type、query_cache_limit、query_cache_min_res_unit などがあります。 query_cache_type は、クエリ バッファリングを使用するかどうかを指定し、0、1、または 2 に設定できます。この変数は、SESSION レベルの変数です。 query_cache_limit は、単一のクエリで使用できるバッファ サイズを指定します。デフォルトは 1M です。 query_cache_min_res_unit はバージョン 4.1 以降で導入されました。割り当てられたバッファ スペースの最小単位を指定します。デフォルトは 4K です。ステータス値 Qcache_free_blocks を確認します。値が非常に大きい場合は、バッファー内にフラグメントが多数存在し、クエリ結果が比較的小さいことを意味します。この場合、query_cache_min_res_unit を減らす必要があります。

サーバーのコンテンツは96Gなので、次のように設定します

クエリキャッシュサイズ = 128M
クエリキャッシュ制限 = 8M

比較的完全な my.ini ファイルです。MySQL の実行が失敗しないように、独自のサーバーに応じて適切に調整できます。これは MySQL バージョン 5.6 用です。

[クライアント]
ポート = 3306
ソケット = /tmp/mysql.sock
デフォルトの文字セット = utf8
#クライアントの文字エンコーディングを設定する
[mysqld]
# 一般的な設定オプション
ポート = 3306
ソケット = /tmp/mysql.sock
basedir="E:/database/mysql/"
データディレクトリ="E:/database/mysql/data/"
tmpdir = "E:/database/mysql/tmp/"
#*** 文字セット ***
文字セットサーバー = utf8
#サーバーの文字エンコーディングを設定する

#次の3つのパラメータのデフォルトは12500、1400、2000です
パフォーマンス_スキーマ_最大_テーブル_インスタンス = 20000
テーブル定義キャッシュ = 2000
テーブルオープンキャッシュ = 4096

#*** ネットワーク ***
バックログ = 1024
#skip-networking #デフォルトでは有効になっていません
最大接続数 = 10000
#最大接続エラー数 = 3000
テーブルオープンキャッシュ = 4096
#外部ロック #デフォルトでは有効になっていません
最大許容パケット = 256M
最大ヒープテーブルサイズ = 128M
secure_file_priv=''
明示的なタイムスタンプのデフォルト=true
同時挿入=2

#*** タイムアウト ***
インタラクティブタイムアウト=1000
待機タイムアウト=1000

# *** グローバルキャッシュ ***
読み取りバッファサイズ = 64M
読み取りバッファサイズ = 64M
ソートバッファサイズ = 64M
結合バッファサイズ = 1024M

# *** 糸 ***
スレッドキャッシュサイズ = 64
# スレッド同時実行性 = 8
スレッドスタック = 512K

# *** クエリキャッシュ ***
クエリキャッシュサイズ = 128M
クエリキャッシュ制限 = 8M

# *** 索引 ***
ft_min_word_len = 8

#memlock #デフォルトでは有効になっていません
デフォルトのストレージエンジン=MYISAM
innodb=オフ
デフォルトの tmp ストレージ エンジン = MYISAM
transaction_isolation = 繰り返し読み取り

# *** 一時テーブル ***
tmp_table_size = 1024M

# *** bin ログ ***
#ログ bin = mysql bin
binlog_cache_size = 4M
binlog_format=混合
#log_slave_updates #デフォルトでは有効になっていません
#log #デフォルトでは有効になっていません。これはクエリ ログです。有効にすると、サーバーのパフォーマンスに影響します。
log_warnings #警告ログを開く

# *** 遅いクエリログ ***
遅いクエリログ
長いクエリ時間 = 10
# *** レプリケーション関連の設定
#サーバーID = 1
#サーバーID = 2
#master-host = <ホスト名>
#master-user = <ユーザー名>
#master-password = <パスワード>
#マスターポート = <ポート>
#読み取り専用
#*** MyISAM 固有のオプション
#マイサム回復
キーバッファサイズ = 2048M
バルク挿入バッファサイズ = 128M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover_options=強制、バックアップ

# *** INNODB 固有のオプション ***
#skip-innodb #デフォルトでは有効になっていません
緩いinnodb-trx=0
緩いInnoDBロック=0
緩いInnoDBロック待機=0
ルーズ-innodb-cmp=0
インデックスごとの緩い Innodb cmp = 0
緩い Innodb cmp インデックスごとのリセット = 0
緩い innodb cmp リセット = 0
緩い innodb-cmpmem=0
緩い innodb cmpmem リセット = 0
緩い InnoDB バッファ ページ = 0
緩い InnoDB バッファ ページ LRU = 0
緩い Innodb バッファ プール統計 = 0
緩いInnoDBメトリック=0
ルーズ-innodb-ft-デフォルト-ストップワード=0
#loose-innodb-ft-inserted=0
緩い innodb ft 削除済み = 0
緩い Innodb ft が削除される = 0
ルーズ-innodb-ft-config=0
緩い InnoDB フィートインデックス キャッシュ = 0
ルーズ-innodb-ft-インデックステーブル=0
緩いInnoDBシステムテーブル=0
緩い innodb-sys-tablestats=0
緩い Innodb システム インデックス = 0
緩い innodb sys 列 = 0
緩いInnoDBシステムフィールド=0
ルーズ-innodb-sys-foreign=0
緩い innodb sys 外部列 = 0

[mysqlダンプ]
素早い
最大許容パケット = 256M

[mysql]
自動再ハッシュなし

[マイサムチク]
キーバッファサイズ = 2048M
ソートバッファサイズ = 2048M
読み取りバッファ = 32M
書き込みバッファ = 32M

[mysqlホットコピー]
対話タイムアウト

[mysqld_safe]
オープンファイル制限 = 10240
sql_mode=NO_ENGINE_SUBSTITUTION、STRICT_TRANS_TABLES

MySQL を最適化したい場合は、MySQL クエリ キャッシュに関する記事を参照してください。

以下もご興味があるかもしれません:
  • MySQL クエリの最適化: LIMIT 1 はテーブル全体のスキャンを回避し、クエリの効率を向上させます
  • 制限を使用すると、MySQL のページングがどんどん遅くなるのはなぜですか?
  • MySQLのorder byとlimitを混在させる際の落とし穴の詳細な説明
  • MySQL ページングの制限パラメータの簡単な例
  • 大きなオフセットによる MySQL 制限ページングが遅い理由と最適化ソリューション
  • MySQL のソートとページング (order by と limit) と既存の落とし穴
  • MySQLの制限を使用して大規模なページングの問題を解決する方法
  • MySQL における制限関数と合計関数の混在使用の問題の詳細な説明
  • MySQL Limitクエリのパフォーマンスを向上させる方法
  • MySQL Limitパフォーマンス最適化とページングデータパフォーマンス最適化の詳細な説明
  • MySQL の制限ページング最適化ソリューションの実装に関する簡単な説明
  • MySQL のクエリパフォーマンスに対する制限の影響

<<:  Docker Compose を使用して ELK を迅速にデプロイする (テスト済みで効果的)

>>:  HTML の div、td、p およびその他のコンテナーでの強制改行と非改行の実装

推薦する

LinuxでのDNSサーバーの設定の詳細な説明

1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...

Vue 開発プロジェクトで Font Awesome 5 を使用する方法

目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...

MySQL 8.0.17 のインストールと使用方法のチュートリアル図

前面に書かれた過去および現在のプロジェクトで最も一般的に使用されているリレーショナル データベースは...

派手なカルーセル効果を実現するJavaScript

この記事では、JavaScriptで派手なカルーセル効果を実装する2つの方法を紹介します。具体的な内...

Centos での Python のアップグレードと Mongodb ドライバーのインストールに関する問題

Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...

Vue h関数の使い方の詳しい説明

目次1. 理解2. 使用1. h() パラメータ2. 使い方が簡単3. カウンターケースを実装する4...

Dockerプライベートウェアハウスレジストリの導入

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

Docker-Composeコマンドの使い方の詳しい説明

Docker コンテナはさまざまな方法で管理およびデプロイできます。 Docker コマンドを直接使...

MySQL 5.7.19 インストールディレクトリに my.ini ファイルを作成する方法

前回の記事では、MySQL 5.7.19 無償インストール版 (64 ビット) の設定方法についての...

製品を選択した後、右下隅に√記号を表示するための純粋なCSS

おすすめの記事: CSS 疑似クラスの右下隅をクリックすると、選択を示すチェックマークが表示されます...

Dockerはmysqldumpコマンドを使用してプロジェクト内のmysqlデータをバックアップおよびエクスポートします。

mysqldump コマンドはじめに: データベースバックアッププログラム形式: mysqldum...

vue-pdf はオンラインファイルプレビューを実現します

この記事では、参考までに、ファイルのオンラインプレビューを実現するためのvue-pdfの具体的なコー...

MySQL グラフィカル管理ツール Navicat のインストール手順

目次序文1. 全員にインストールパッケージを用意する2. Navicatをインストールし、Navic...

jQueryは従業員情報の追加と削除の機能を実装します

この記事では、従業員情報の追加と削除の機能を実装するためのjQueryの具体的なコードを参考までに共...

nginx で複数の仮想ホストを設定する方法の例

nginx で仮想ホスト vhost を設定すると非常に便利です。 nginx設定ファイルnginx...