資料庫考點 4

2021-09-25 13:41:35 字數 1422 閱讀 9616

如何定位並優化慢查詢sql(慢查詢語句只會是dml,資料操作語言)

這個問題屬於開放性的題目,具體場景需要具體分析,這裡給個大致思路

根據慢日誌定位慢查詢sql.

使用explain等工具分析sql.

修改sql或者盡量讓sql走索引.

1. 根據慢日誌定位慢查詢sql

慢日誌的作用就是用來記錄執行速度比較慢的sql語句.

然後我們再來看看系統中慢日誌的狀態,輸入語句:show status like '%slow_queries%'進行模糊查詢即可看到當前慢查詢語句的數量

修改慢日誌的設定

2. 使用explain等工具分析sql

explain在分析查詢語句很有用,一般放在select關鍵字前面

explain主要用於描述mysql如何執行查詢操作,即mysql的執行計畫.

注意: 新增了explain關鍵字以後,sql語句並沒有真正的執行,只是返回了mysql的執行計畫

例如(用的別人的例子):

emmm,我就不去說所有的字段了哈,網上有,我懶得記,等面試問到了我再來看,這裡重點說幾個字段:

rows:這一列是mysql估計要讀取並檢測的行數注意這個不是結果集裡的行數tyoe:它表示mysql找到需要資料行的方式,其效能依次從最優到最差分別為:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

其中index和all表示走的是全表掃瞄

當我們發現如果某條語句是慢查詢語句**或者**type值為index/all,那麼就說明這條語句是可以優化的.

extra:寫的是一些額外資訊,輔助我們了解該語句的執行,它的字段也非常的多,這裡寫兩個很有可能需要被優化的字段,如圖:

3. 修改sql或者盡量讓sql走索引

這是當我們出現慢查詢語句的時候的兩種可選的解決辦法,可以給查詢的字段加索引或者使用其他索引查詢

資料庫考點 1

關係型資料庫和非關係型資料庫的區別 簡單來說 1.關係型資料庫通過外來鍵關聯來建立表與表之間的關係 2.非關係型資料庫通常指資料以物件的形式儲存在資料庫中,而物件之間的關係通過每個物件自身的屬性來決定 比如 有乙個學生的資料 姓名 張三,性別 男,學號 12345,班級 二年級一班 還有乙個班級的資...

資料庫考點 6

myisam和innodb關於鎖方面的區別是什麼 myisam預設使用的是表級鎖,不支援行級鎖.innodb預設使用的是行級鎖,也支援表級鎖.下面的東西針對於myisam引擎 什麼是表級鎖 舉例 前提 我當前有一張表student,使用的是myisam引擎.我們在這裡模擬乙個併發操作哈 當我們對錶進...

資料庫考點 10

next key鎖 行鎖 gap鎖 行鎖 行鎖 即record lock,指對單個行記錄上的鎖.gap鎖 gap lock 間隙鎖 表示鎖定乙個範圍,但不包括記錄本身.其主要目的是為了防止同一事務的兩次當前讀出現幻讀的情況.它在rc及ru隔離級別中是沒有的,在rr以及序列化中預設支援,這就是為啥rc...