12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-11-26 22:14:49
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
如何通过profile来发现语句的开销构造场景:开启一个回话,执行语句lock table film_text read;开启另外一个回话,执行下面语句:root@sakila 07:51:14>show variables like '%
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
如何通过profile来发现语句的开销
构造场景:
开启一个回话,执行语句
lock table film_text read;
开启另外一个回话,执行下面语句:
root@sakila 07:51:14>show variables like '%profil%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| have_profiling | YES|
| profiling | OFF|
| profiling_history_size | 15|
+------------------------+-------+
3 rows in set (0.01 sec)
root@sakila 07:52:38>set profiling=1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
root@sakila 07:52:45>update film_text set title='test' where film_id=1003;
Query OK, 0 rows affected (11.02 sec)
Rows matched: 1 Changed: 0 Warnings: 0
root@sakila 07:53:18>show profiles;
+----------+-------------+------------------------------------------------------+
| Query_ID | Duration| Query|
+----------+-------------+------------------------------------------------------+
|1 | 11.02395150 | update film_text set title='test' where film_id=1003 |
+----------+-------------+------------------------------------------------------+
1 row in set, 1 warning (0.01 sec)
root@sakila 07:53:26>show profile for query 1;
+------------------------------+-----------+
| Status| Duration |
+------------------------------+-----------+
| starting | 0.000793 |
| checking permissions | 0.000032 |
| Opening tables| 0.000087 |
| init | 0.000026 |
| System lock | 0.000025 |
| Waiting for table level lock | 11.018648 |
| System lock | 0.000770 |
| updating | 0.002947 |
| end | 0.000077 |
| query end| 0.000069 |
| closing tables| 0.000062 |
| freeing items| 0.000253 |
| cleaning up | 0.000163 |
+------------------------------+-----------+
13 rows in set, 1 warning (0.00 sec)
可以看到开销是在这个waiting table lock.
貌似 show profiles 只能显示本回话执行的sql语句的情况,即使设置了global profiling=1
所以如果要调优一组sql, 那么把这一组sql放到一个回话中执行,然后执行show profiles 查看每条语句的执行时间,并且进一步分析开销在什么地方。
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19