問題の説明
TDSQL-C for MySQLクラスタのCPU使用率が過度に高い場合
データベースがビジネスクエリや変更文を実行する際、CPUはまずメモリからデータブロックにアクセスします:
CPUが対応するデータをメモリ内に保持している場合、計算タスク実行後に結果をユーザーに返します。この処理にはソートのようなCPUを高消費する動作が含まれる場合があります。
メモリ内に対応するデータが存在しない場合、データベースはディスクからデータを取得する動作をトリガーします。
データベースにおけるデータ取得プロセスは、論理読み取りと物理読み取りと呼ばれます。したがって、パフォーマンスの低いSQLを実行すると、データベースで大量の論理読み取りが発生しやすく、CPU使用率が過度に高くなる可能性があります。また、大量の物理読み取りを引き起こすことで、IOPSやI/O遅延が過度に高くなることもあります。
ソリューション
DBbrainは、CPU使用率の過度な上昇を引き起こす異常なSQL文を診断し最適化するために、以下の機能をユーザーに提供します: 異常診断:7*24時間の異常検知と診断を実施し、リアルタイムな最適化推奨事項を提供します。
スローSQL分析:現在のインスタンスで発生したスローSQLを対象に分析を実施し、最適化提案を提供します。
方法一:「異常診断」機能を使用してデータベースの異常状況を診断する(推奨)
異常診断機能は、障害の能動的な特定と最適化を提供します。データベースの運用保守経験が一切不要で、CPU使用率の過度な上昇といった異常だけでなく、クラスタ配下の読み書きインスタンスや読み取り専用インスタンスで高頻度で発生するほぼ全ての異常や障害をカバーします。
操作手順と例は以下の通りです:
1. DBbrainコンソールにログインし、左側ナビゲーションで診断・最適化を選択し、上部の異常診断タブを選択します。
2. 左上でインスタンスID(入力と検索が可能)を選択し、ターゲットインスタンスに切り替えます。
3. ページ上でリアルタイムまたは履歴を選択し、問い合わせる時間を指定します。その時間帯に障害が発生している場合、右側の「診断ヒント」に概要情報が表示されます。
4. 「リアルタイム/履歴診断」欄の詳細を表示または診断ヒント欄の診断項目をクリックすると、診断詳細ページに移動できます。
イベント概要:診断項目、開始・終了時間、リスクレベル、継続時間、概要などの情報を含みます。
現象の説明:異常イベント(またはヘルスチェックイベント)の外部に現れる現象のスナップショットおよびパフォーマンス傾向を提供します。
インテリジェント分析:パフォーマンス異常の根本原因を分析し、具体的な操作を特定します。
専門家による提案:最適化のガイダンスを提供します。これには、SQLの最適化(インデックスの提案、書き換え提案)、リソース構成の最適化、パラメータのチューニングなどが含まれますが、これらに限定されません。
5. 最適化提案タブを選択すると、DBbrainがこの障害に対して提供する最適化提案を確認できます。この例ではSQL文の最適化提案です。
方式二:「スローSQL分析」機能を使用してCPU使用率が過剰になる原因となるSQLを調査できます
1. DBbrainコンソールにログインし、左側ナビゲーションで診断・最適化を選択し、上部のスローSQL分析タブを選択します。
2. 左上でインスタンスID(入力と検索が可能)を選択し、ターゲットインスタンスに切り替えます。
3. ページ上で問い合わせる時間を選択します。このインスタンスにその時間帯にスローSQLが存在する場合、SQL統計は棒グラフでスローSQLが発生した時間点と数を表示します。
棒グラフをクリックすると、下部のリストに対応する全てのスローSQL情報(テンプレートで集約されたSQL)が表示され、右側にはその時間帯のSQLの実行時間分布が表示されます。
4. SQLリストのSQL実行データに対して判断とフィルタリングを行い、以下に一つの判断方法を簡単に紹介します:
4.1 平均実行時間(または最大実行時間)で降順にソートし、トップの実行時間がかかっているSQLに注目してください。総実行時間は実行回数が多いために累積されやすいため、使用はおすすめしません。
4.2 そして、返却行数とスキャン行数の値に注目します。
「返却行数」と「スキャン行数」の値が等しいSQLが見つかった場合、高い確率でフルテーブルスキャンが行われ、結果が返されていることを示します。
いくつかのSQL文でスキャン行数が多いが、返却行数が0または非常に少ない場合、システムが大量の論理読み取りと物理読み取りを発生させていることを示します。検索するデータ量が過大でメモリが不足している場合、そのリクエストは必然的に大量の物理I/Oリクエストを発生させ、I/Oリソースの大量消費を招きます。また、大量の論理読み取りは大量のCPUリソースを占有し、CPU使用率の過剰な上昇を招きます。
5. SQL文をクリックすると、そのSQL文の詳細、リソース消費、および最適化提案を表示できます。
分析ページ:完全なSQLテンプレート、SQLサンプル、および最適化提案と説明を確認できます。DBbrainが提供する専門家のアドバイスに基づいてSQLを最適化し、SQLパフォーマンスを向上させ、SQL実行の所要時間を削減できます。
統計ページ:統計レポートの総実行時間割合、総ロック待機時間割合、総スキャン行数割合、総返却行数割合に基づき、このスローSQLが発生した具体的な原因を横断的に分析し、対応する最適化を行うことができます。
明細ページ:このタイプのSQLのユーザーソース、IPソース、データベース、およびその他の詳細情報を確認できます。