<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • 1.?show profile分析SQL

    Mysql從5.0.37版本開始增加了對 show profiles 和 show profile 語句的支持。show profiles 能夠

    在做SQL優化時幫助我們了解時間都耗費到哪里去了。

    通過 have_profiling 參數,能夠看到當前MySQL是否支持profile:
    select @@have_profiling; set profiling=1; -- 開啟profiling 開關;

    通過profile,我們能夠更清楚地了解SQL執行的過程。

    首先,我們可以執行一系列的操作:
    show databases; ? use mydb13_optimize; ? show tables; ? select * from user
    where id < 2; ? select count(*) from user;
    執行完上述命令之后,再執行show profiles 指令, 來查看SQL語句執行的耗時:
    show profiles;

    通過show? profile for? query? query_id 語句可以查看到該SQL執行過程中每個線程的狀態和消耗的

    時間:
    show profile for query 8;

    在獲取到最消耗時間的線程狀態后,MySQL支持進一步選擇all、cpu、block io 、context switch、

    page faults等明細類型類查看MySQL在使用什么資源上耗費了過高的時間。

    例如,選擇查看CPU的耗費時間? :
    show profile cpu for query 133;

    2.?trace分析優化器執行計劃

    MySQL5.6提供了對SQL的跟蹤trace, 通過trace文件能夠進一步了解為什么優化器選擇A計劃, 而不

    是選擇B計劃:

    打開trace,設置格式為 JSON,并設置trace最大能夠使用的內存大小,避免解析過程中因為默認

    內存過小而不能夠完整展示:
    SET optimizer_trace="enabled=on",end_markers_in_json=on; set
    optimizer_trace_max_mem_size=1000000;
    執行SQL語句 :
    select * from user where uid < 2;
    最后, 檢查information_schema.optimizer_trace就可以知道MySQL是如何執行SQL的 :
    select * from information_schema.optimizer_trace\G;

    ?

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频