• ADADADADAD

    Mysql profile怎么用[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:14:49

    作者:文/会员上传

    简介:

    如何通过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 查看每条语句的执行时间,并且进一步分析开销在什么地方。

    Mysql profile怎么用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlprofile