<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Access denied for user 'root'@'localhost'(using password:YES)
;如果正確,則會去 MySQL 的許可權表查詢當前使用者的許可權。也稱為查詢快取,儲存的資料是以鍵值對的形式進行儲存,如果開啟了快取,那麼在一條查詢 SQL 語句進來時會先判斷快取中是否包含當前的 SQL 語句鍵值對,如果存在直接將其對應的結果返回,如果不存在再執行後面一系列操作。如果沒有開啟則直接跳過。
show variables like 'have_query_cache'; # 檢視快取設定: show variables like 'query_cache_type'; # 檢視是否開啟 show variables like 'query_cache_size'; # 檢視快取佔用大小 show status like 'Qcache%'; # 檢視快取狀態資訊
快取失效場景:
通過上面的失效場景可以看出快取是很容易失效的,所以如果不是查詢次數遠大於修改次數的話,使用快取不僅不能提升查詢效率還會拉低效率(每次讀取後需要向快取中儲存一份,而快取又容易被清除)。所以在 MySQL5.6 預設是關閉快取的,並且在 8.0 直接被移除了。當然,如果場景需要用到,還是可以使用的。
開啟:
在組態檔(linux 下是安裝目錄的 cnf 檔案,windows 是安裝目錄下的 ini 檔案)中,增加設定: query_cache_type = 1
# 指定 SQL_NO_CACHE,SQL_CACHE 同理。 SELECT SQL_NO_CACHE * FROM student WHERE age > 20;
對使用者端傳來的 SQL 進行分析,這將包括預處理與解析過程,並進行關鍵詞的提取、解析,並組成一個解析樹。具體的解析詞包括但不侷限於 select/update/delete/or/in/where/group by/having/count/limit
等,如果分析到語法錯誤,會直接拋給
使用者端異常:ERROR:You have an error in your SQL syntax.。
select * from user where userId = 1234;
在分析器中就通過語意規則器將 select from where 這些關鍵詞提取和匹配出來,MySQL 會自動判斷關鍵詞和非關鍵詞,將使用者的匹配欄位和自定義語句識別出來。這個階段也會做一些校驗:比如校驗當前資料庫是否存在 user 表,同時假如 user 表中不存在 userId 這個欄位同樣會報錯:unknown column in field list.
。
進入優化器說明 SQL 語句是符合標準語意規則並且可以執行。優化器會根據執行計劃選擇最優的選擇,匹配合適的索引,選擇最佳的方案。比如一個典型的例子是這樣的:
表 T,對 A、B、C 列建立聯合索引 —— (A,B,C),在進行查詢的時候,當 SQL 查詢條件是:select xx where B=x and A=x and C=x。很多人會以為是用不到索引的,但其實會用到,雖然索引必須符合最左原則才能使用,但是本質上,優化器會自動將這條 SQL 優化為:where A=x and B=x and C=x
,這種優化會為了底層能夠匹配到索引,同時在這個階段是自動按照執行計劃進行預處理,MySQL 會計算各個執行方法的最佳時間,最終確定一條執行的 SQL 交給最後的執行器。
優化器會根據掃描行數、是否使用臨時表、是否排序等來判斷是否使用某個索引,其中掃描行數的計算可以通過統計資訊來估算得出,而統計資訊可以看作是索引唯一數的數量,可以使用部分取樣來估算,具體就是選擇 N 個資料頁,統計這些頁上資料的不同值,得到一個平均值,然後乘以這個索引的頁面數,就得到了。但是因為索引資料會變化,所以索引的統計資訊也會變化。當變更的資料行數超過 1/M 的時候,就會重新計算一次統計資訊。
關於統計資訊可以選擇是否持久化::通過 innodb_stats_persistent,設定為 on 的時候,表示統計資訊會持久化儲存。這時,預設的 N 是 20,M 是 10。設定為 off 的時候,表示統計資訊只儲存在記憶體中。這時,預設的 N 是 8,M 是 16。
沒有使用最優索引如何優化::
執行器會呼叫對應的儲存引擎執行 SQL,主流的是 MyISAM 和 Innodb。
在 MySQL 5.6 之後引入了 索引下推(Index Condition Pushdown),所以在查詢操作上會有一個 Index Filter 和 Table Filter 的過程,查詢的流程圖大致可以用下面這張圖來概括:
到此這篇關於一條 SQL 語句執行過程的文章就介紹到這了,更多相關SQL 執行過程內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45