MySQLのパフォーマンスの問題を感じた場合、通常、あなたは、MySQL、使用の実装の現在の状態を見て show processlist
例えばビューに、:
状態情報は非常に重要である[ステータス]列は、各列の意味を見て、その後、状態の一般的な状態を見て
列の意味
1、ID
ロゴ、あなたが例えば、使用するときに声明を殺すために、 mysql> kill 207;
2、ユーザー
ルートでない場合は表示され、現在のユーザーが、このコマンドは、あなたの範囲内にSQL文を表示します。
3、ホスト
この文は、IPは、問題文のユーザーを追跡するために使用可能なポートから発行された表示
4、デシベル
現在データベースに接続され、このプロセスを表示します
5、コマンド
現在の接続、一般的には休止している(睡眠)、クエリ(クエリ)の表示コマンド、(接続)を接続
6、時間
秒でこの状態の継続時間、
7、状態
現在の接続状態のためのSQL文を使用して表示し、それが重要な柱である、状態は、それらが完了する前にこのような状態などのデータを送信するクエリ、結果の並べ替え、テーブルをtmpにするために、コピーを通過する必要があり、として、刑の執行の状態のみであり、
8、インフォ
理由は限られた長さのため、このSQL文を表示するので、長いSQL文が不完全で表示するために、しかし、裁判官は声明のための重要な基礎を発行
状態の一般的な状態分析
1、スリープ
接続プールによって、スリープ状態は、例えば、特定の数の範囲内で一定でなければならない場合、一般的には、リソースが解放されない表します。
ネットワークの出力が1秒ほどかかりながら0.1秒のデータクエリ時間は、元のデータ接続の0.1秒を解放することができますが、フロントエンドプログラムが近くで行われていないため、直接の出力は、その結果は、ユーザーのデスクトップ、データベースの前に表示されません。接続がスリープ状態に維持されてきました
2、ロック
操作がロックされ、一般に使用がよく生成InnoDBのロック状態を軽減することができます
TMPテーブルに3、コピー
インデックスと既存の構造がクエリをカバーできない場合は、クエリの要件を満たすために一時テーブルを作成し、圧力コピーO巨大なI / tmpのテーブルの通常のテーブルの問い合わせもお勧め削減に関するお問合せや、さらに最適化するには、クエリ、もし文のこの状態が長時間実行されると、それは真剣に、操作を殺すために時間を他の操作に影響を与えます
4、Sending data
Sending data并不是发送数据,是从物理磁盘获取数据的进程,如果你的影响结果集较多,那么就需要从不同的磁盘碎片去抽取数据,如果sending data连接过多,通常是某查询的影响结果集过大,也就是查询的索引项不够优化
5、Storing result to query cache
如果频繁出现此状态,使用set profiling
分析,如果存在资源开销在SQL整体开销的比例过大(即便是非常小的开销,看比例),则说明query cache碎片较多,使用flush query cache
可即时清理,Query cache参数可适当酌情设置
MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。
除了服务器硬件的性能瓶颈,对于MySQL系统本身,我们可以使用工具来优化数据库的性能,通常有三种:使用索引,使用EXPLAIN分析查询以及调整MySQL的内部配置。
在优化MySQL时,通常需要对数据库进行分析,常见的分析手段有慢查询日志,EXPLAIN 分析查询,profiling分析以及show命令查询系统状态及系统变量,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接