如何在MySQL中找到慢SQL語句?

發布 科技 2024-02-24
4個回答
  1. 匿名使用者2024-01-25

    如果我們經常在慢查詢肢體橡皮擦日誌中發現某條語句執行緩慢,在表結構、索引結構、統計中找不到原因,我們可以利用sys系統庫中的王牌:效能模式的等待事件結合影象找出問題的癥結所在。 那麼會話檢視有什麼用呢?

    您可以使用它來檢視當前使用者會話的程序列表資訊,並在檢視中顯示資料(使用此檢視可以查詢所有前台和後台執行緒的狀態資訊,按程序等待時間和最近一次語句執行完成的時間降序排序。 資料**:效能架構表和圖形,例如執行緒、事件等待當前、事件語句當前、事件階段當前、事件事務當前、會話連線屬性等),查詢結果字段類似於 ProcessList 檢視,但會話檢視會篩選出後台執行緒,並且僅顯示與前台(使用者)執行緒相關的統計資訊。

    “日曆”檢視是 中的新增功能。 下面是使用會話檢視的查詢結果集。

    callcall

    2) 查詢會話

    select * from session where command=‘query‘ and conn_id!=connection_id();

    標籤: 執行緒 callsum, view 和 statement 事件 lisfrom

  2. 匿名使用者2024-01-24

    以下是解決方法:

    1.將資料、日誌和索引放在不同的裝置上,以提高讀取速度;

    2、將桌子垂直和水平分開,以減小桌子的尺寸;

    3.公升級硬體;

    4、根據查詢條件,建立索引,優化索引,優化訪問方式,限制結果集中的資料量,注意適當的填充因子,索引應盡可能小,使用位元組數少的列構建索引,不要為性別欄位等有限數量的字段值構建單個索引;

    4.提高網路速度。

  3. 匿名使用者2024-01-23

    問:我們有乙個 sql,用於查詢沒有主鍵和唯一鍵的表,但它在 mysql 上執行得很慢,我們該怎麼辦?

    在實驗中,我們設定了乙個MySQL環境,這裡省略了構建步驟。

    編寫乙個簡單的指令碼來製作一批帶主鍵和不帶主鍵的表:

    執行以下指令碼:

    現在執行以下 sql 檢視效果:

    執行,感覺很慢。

    現在我們用DBA三板斧頭,看一下執行計畫:

    感覺有點苦,因為資訊是元資料表,沒有必要的統計資訊。

    讓我們顯示警告並看一下 mysql 重寫後的 sql

    讓我們格式化 sql:

    你可以看到 mysql 會。

    select from a where not in (select x from b) 是非關聯子查詢。

    我轉換了它。 從不存在的地方選擇(從 B 中選擇 1,其中 = 關聯的子查詢。

    如果我們自己是MySQL,我們可以在執行非關聯子查詢時使用乙個非常簡單的策略:

    select from a where not in (select x from b where ..非關聯子查詢:1

    掃瞄表B中的所有記錄,找到符合條件的記錄,將其儲存在臨時表C中,並建立索引2掃瞄表 A 中的記錄,將其與臨時表 C 中的記錄進行比較,並直接在索引中進行比較,而關聯子查詢需要迴圈迭代:

    select from a where not exists (select 1 from b where = and ..關聯的子查詢掃瞄表 A 的每個記錄 RA:掃瞄表 B 以查詢滿足 RA 條件的第一條記錄。

    顯然,關聯子查詢的掃瞄成本將高於非關聯子查詢的掃瞄成本。

    我們希望MySQL能排在第一位"快取"子查詢的結果(快取這一步稱為物化),但是MySQL認為不快取更快,所以我們需要給MySQL一些指導。

    可以看到執行時間變成了 。

    1.對於資訊架構中的元資料表,執行計畫不提供有效資訊。

    2.通過檢視 MySQL 重寫的 SQL,我們猜測優化器存在誤報。

    3.我們新增了提示來指導 MySQL 做出正確的優化判斷。

    但目前,我們的實驗僅限於猜測,如果我們猜對了,一切都會好起來的,如果我們猜不到,我們將無法做出好的診斷。

  4. 匿名使用者2024-01-22

    MySQL 資料庫有幾個配置選項,可以幫助我們及時捕獲低效的 SQL 語句。

    1,slow_query_log

    如果設定為on,則可以捕獲執行時間超過一定值的SQL語句。

    2,long_query_time

    如果SQL語句的執行時間超過此值,則會記錄在日誌中,建議設定為1或更短。

    3. 慢查詢日誌檔案的檔名。

    4. 如果將不使用 indexes 引數的日誌查詢設定為 on,則它可以捕獲所有不使用索引的 SQL 語句,儘管此 SQL 語句的執行速度可能相當快。

相關回答
5個回答2024-02-24

在專案開發中,總是需要檢查後台執行的SQL語句,MySQL資料庫也不例外。 命令,可以通過輸出結果的字段說明來分析執行的SQL語句的型別,但不適合一般的初學者使用者,所以通過日誌檔案檢視SQL語句是最直接的方式。 >>>More

16個回答2024-02-24

介紹乙個我自己用過的方法,比如快遞單號是否重複的比較: >>>More

11個回答2024-02-24

你好,更新 mt2 set name = replace(name, substring(name, locate('', name),locate(', name)-locate(''+10, name)),''); >>>More

15個回答2024-02-24

查詢搞笑的重點專業,進入學校官網,會寫出學校的重點專業。 >>>More

7個回答2024-02-24

1.以win7系統為例,點選桌面左下角的“開始”按鈕,在開啟的選單中點選“控制面板”。 >>>More