日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者:王順

愛可生 DBA 團隊成員,在公司負責項目中處理數據庫問題,喜歡學習技術,鉆研技術問題。

本文來源:原創投稿

*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯系小編并注明來源。


同一條 SQL 在 MariaDB 上運行正常,為什么在 MySQL 5.7 上運行很慢?

 

一、問題描述

客戶生產環境數據庫遷移,數據庫從 MariaDB 10.4 遷移到 MySQL 5.7,一條業務 SQL 運行很慢。

從客戶了解到業務之前在 MariaDB 運行正常,近期業務沒有變更過,遷移到 MySQL 5.7 運行很慢,已經影響業務正常使用。

 

二、環境檢查

(因生產環境涉及敏感信息,以下信息為測試環境信息)

1. MariaDB 的執行計劃

 

故障分析 | 同一條 SQL 為何在 MariaDB 正常,MySQL5.7 卻很慢?

 

2. MySQL 5.7 的執行計劃

 

故障分析 | 同一條 SQL 為何在 MariaDB 正常,MySQL5.7 卻很慢?

 

3. 表結構和列信息

 

故障分析 | 同一條 SQL 為何在 MariaDB 正常,MySQL5.7 卻很慢?

 

 

三、分析過程

1. 通過執行計劃分析

 

故障分析 | 同一條 SQL 為何在 MariaDB 正常,MySQL5.7 卻很慢?

 

從 MySQL 5.7 執行計劃的 warnings 中,可以清晰的看到 id 字段的字段類型或排序規則轉換,無法使用索引。

2. 查看圖 3 表結構和列信息對比,兩個表的 id 字段排序規則不同存在隱式轉換。

如下:

sbtest1 表 id 字段 char(32) 排序規則 utf8_bin

sbtest2 表 id 字段 char(32) 排序規則 utf8_general_ci

 

四、解決方法:

1. 將 sbtest1 表 id 字段排序規則 utf8_bin 改成 utf8_general_ci

 

故障分析 | 同一條 SQL 為何在 MariaDB 正常,MySQL5.7 卻很慢?

 

可以看到排序規則改變后,執行計劃正常。

2. 使用 convert 轉換

 

故障分析 | 同一條 SQL 為何在 MariaDB 正常,MySQL5.7 卻很慢?

 

使用 convert 對 sbtest1 表 id 字段進行轉換,執行計劃正常。

 

五、結論:

MySQL 5.7 檢測到表 sbtest1 的 id 字段和表 sbtest2 的 id 字段的 collation 不同,沒有正常走索引,造成查詢很慢。通過改變排序規則或使用 convert 轉換可以解決。由于 MariaDB 和 MySQL 的 collation 轉換規則對執行計劃的影響不同,在 MariaDB 中,不同的 Collation 并沒有影響到查詢效率。

分享到:
標簽:MySQL5
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定