MySQLのソートに関する設定値とステータスを確認する方法についてです。
※目次をクリックすると目次の下部にコンテンツが表示されます。
mysql> show variables like '%sort_buffer%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | innodb_sort_buffer_size | 1048576 | | myisam_sort_buffer_size | 20971520 | | sort_buffer_size | 262144 | +-------------------------+----------+ mysql> show variables like 'read%'; +----------------------+--------+ | Variable_name | Value | +----------------------+--------+ | read_buffer_size | 40960 | | read_only | OFF | | read_rnd_buffer_size | 262144 | +----------------------+--------+
 
2)各設定値の内容
 
●sort_buffer_size
 
・各セッションのソート用のバッファサイズ。
 
・ストレージエンジン固有のバッファサイズではない。
 
・このサイズを超えるソートはディスクを使用。
 
●myisam_sort_buffer_size
 
・”REPAIR TABLE”中や”CREATE INDEX”、”ALTER TABLE”でインデックス生成中にMyISAMインデックスをソートするのに割り当てるバッファサイズ。
 
●read_buffer_size
 
・MyISAMテーブルをシーケンシャルスキャンする各スレッドに対し、スキャンするテーブル毎に割り当てるバッファサイズ。
 
・ORDER BYでソートするときに一時ファイルにインデックスをキャッシュする際にも使用。
 
・ネストされたクエリの結果をキャッシュするのに使用。
 
●read_rnd_buffer_size
 
・MyISAMテーブルから行をソート順にリードする際、ディスクシークを避けるためにこのバッファを通してリードされる。この値を大きくするとORDER BY句の性能を向上できる。
 
3)チューニング、最適化
 
・バッチ処理などの場合、処理実行前に動的にこれらのパラメタを変更する。
 
・ORDER BY句の最適化は下記記事参照
MySQLのORDER BY句でインデックスを使用
    
mysql> show status like '%Sort_%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Sort_merge_passes | 0 | | Sort_range | 0 | | Sort_rows | 0 | | Sort_scan | 0 | +-------------------+-------+
 
●Sort_merge_passes
 
・ファイルを利用したマージソートのパス数
 
・ソートがメモリ上だけで収まらない場合には要確認。インデックスの利用を検討
    
- 
インストール、基本設定、文字コード、仕組み
 - MySQLのインストール
 - CentOS6でMySQL5.1からMySQL5.7へアップデートする手順、注意点
 - CentOS6.10でMySQL5.7からMySQL8へアップデートする手順、注意点
 - MySQLサーバーの起動スクリプト(v5.1)
 - MySQLのファイルシステムとストレージエンジンの概要
 - MySQLのデータ型の概要
 - MySQLのサーバー、データベース、テーブル、カラムの文字コード設定とクライアントからのサーバー接続時の文字コード設定
 - MySQLの”LOAD DATA INFILE”などでCSVファイル入出力時の文字コード、権限などの注意点
 - セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
 - CentOS6にphpMyAdminを導入
 - MySQLのbツリーインデックスの概要とマルチカラムインデックス
 - MySQLのプレフィックスインデックス、FULLTEXTインデックスの概要
 - MySQLのEXPLAINの実行例
 - MySQLのインデックス結合の概要
 - MySQLのSelect文でインデックスのカラムのみ取得する場合のメリット
 - MySQLのORDER BY句でインデックスを使用
 - MySQLのPACK_KEYSオプション
 - MySQLのインデックス統計更新の概要
 - MySQL初期設定確認
 - mysqladminコマンドでMySQLサーバーの状態確認
 - mysqlshowコマンドで簡単にデータベース、テーブル定義の確認
 - awkを使ってmysqlshowの必要な列のみ表示
 - MySQLのスロークエリログの概要と表示方法
 - show profileでクエリーの内部処理時間を調査
 - MySQL Benchmark Suiteによるパフォーマンス測定
 - MySQLの診断、監視に利用できる外部ツール
 - WordPressデータベースのバックアップとリストア
 - Bashスクリプトでmysqldumpバックアップと世代管理
 - MySQLの壊れたテーブルのチェック、修復方法
 - MySQLのインデックス統計更新の概要
 - MySQLのフラグメンテーションの概要と改善方法
 - MySQLのスレッド、コネクションに関する設定値、チューニング
 - MySQLのセッション単位に設定するバッファーサイズ
 - MySQLのクエリキャッシュの設定値、パフォーマンス
 - MySQLのテーブルオープン、クローズとテーブルキャッシュのチューニング
 - MyISAMキーキャッシュの概要とチューニング
 - MySQLのソートに関する設定値とステータス
 - MySQL innoDBの性能関連の設定値とステータス確認
 - MySQL MyISAMの性能関連の設定値とステータス確認
 
インデックス
状態確認、調査
バックアップ、リストア、メンテナンス
パフォーマンス、チューニング