使用MySQL的PROFILING调试功能
MySQL5.0.37版本以上支持PROFILING调试功能,让您可以了解SQL语句消耗资源的详细信息。因为它需要调用系统的getrusage()函数,所
MySQL5.0.37版本以上支持PROFILING调试功能,让您可以了解SQL语句消耗资源的详细信息。因为它需要调用系统的getrusage()函数,所以只是在Linux/Unix类平台上才能使用,而不能在Windows平台上使用。而且,PROFILING是针对处理进程(process)而不是线程(thread)的,服务器上的其他应用,可能会影响您的调试结果,因此,这个工具适合开发过程中的调试,如果要在生产环境中调试使用,则要注意它的局限性。
参考资料:
PROFILING以及PROFILE和PROFILES的格式如下:
mysql> ? SHOW PROFILES;
--------------------------------------------------------------------------------
SHOW PROFILE [type [, type] … ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL
| BLOCK IO
| CONTEXT SWITCHES
| CPU
| IPC
| MEMORY
| PAGE FAULTS
| SOURCE
| SWAPS
--------------------------------------------------------------------------------
默认情况下,这个调试功能是关闭的,您可以查看MySQL数据库的变量参数:
mysql> SELECT @@PROFILING;
+-------------+
| @@PROFILING |
+-------------+
| 0 |
+-------------+
mysql> show variables like '%profil%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| have_profiling | YES |
| profiling | OFF |
| profiling_history_size | 15 |
+------------------------+-------+
需要使用时,,可以通过SQL命令打开调试功能:
mysql> SET PROFILING=1;
然后,开始执行需要测试的SQL语句,MySQL数据库将会记录想关的调试信息,例如:
mysql> SELECT * FROM mysql.user;
mysql> SHOW PROFILE;
+--------------------------------+----------+
| Status | Duration |
+--------------------------------+----------+
| starting | 0.000041 |
| Waiting for query cache lock | 0.000007 |
| checking query cache for query | 0.000044 |
| checking permissions | 0.000011 |
| Opening tables | 0.000024 |
| System lock | 0.000015 |
| init | 0.000038 |
| optimizing | 0.000009 |
| statistics | 0.000014 |
| preparing | 0.000012 |
| executing | 0.000006 |
| Sending data | 0.000087 |
| end | 0.000008 |
| query end | 0.000006 |
| closing tables | 0.000010 |
| freeing items | 0.000017 |
| logging slow query | 0.000007 |
| cleaning up | 0.000007 |
+--------------------------------+----------+
18 rows in set (0.00 sec)
也可以显示当前所有已经记录的PROFILES,例如:
mysql> SHOW PROFILES;
+----------+------------+--------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------+
| 1 | 0.07194300 | SHOW DATABASES |
| 2 | 0.01126250 | SELECT DATABASE() |
| 3 | 0.00059125 | SHOW TABLES |
| 4 | 0.96143900 | SELECT * FROM |
+----------+------------+--------------------+
4 rows in set (0.00 sec)
注意:这个List的长度由MySQL的数据库变量参数profiling_history_size决定,预设为15。
(命令查询数据库变量参数:mysql> show variables like 'profiling_history_size';)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)
