mysql 数据库生命周期_MySQL查询的生命周期
當(dāng)你執(zhí)行一次MySQL查詢時(shí),有沒有仔細(xì)想過,在查詢結(jié)果返回之前,經(jīng)過了哪些步驟呢?這些步驟有可能消耗了超出想象的時(shí)間和資源。因此,在對(duì)MySQL的查詢進(jìn)行優(yōu)化之前,應(yīng)該了解一下MySQL查詢的生命周期。
上面的這張圖,是大家經(jīng)常看到的MySQL的架構(gòu)圖,關(guān)于MySQL的各個(gè)部分顯示的很詳細(xì)。如果從大的方面來看,可以將MySQL分為兩層,SQL層和存儲(chǔ)層。SQL層包括控制連接、準(zhǔn)備語句等,存儲(chǔ)層則主要包括以各種插件形式提供的存儲(chǔ)引擎。目前對(duì)于MySQL來說,最重要的,也是完全支持事務(wù)的引擎是InnoDB。
當(dāng)應(yīng)用程序,或者通過客戶端執(zhí)行一個(gè)查詢時(shí),首先要做的就是創(chuàng)建一個(gè)連接,當(dāng)查詢通過連接到達(dá)MySQL時(shí),要對(duì)其進(jìn)行解析。解析過程包括,將查詢拆分并標(biāo)記,以便知道查詢的類型,并且會(huì)使用一個(gè)列表,里面包含查詢所需的表和列的信息,這個(gè)列表會(huì)在下一步使用。接下來,MySQL會(huì)檢查該用戶是否有對(duì)列表里的對(duì)象執(zhí)行操作的權(quán)限。通過權(quán)限檢查后,查詢將進(jìn)入優(yōu)化器,優(yōu)化器會(huì)涉及重寫查詢、決定表的訪問順序,以及使用哪些索引等工作。實(shí)際的執(zhí)行步驟包括從存儲(chǔ)引擎層請(qǐng)求數(shù)據(jù)。每個(gè)存儲(chǔ)引擎處理的方式可能不同。InnoDB包括一個(gè)緩沖池,用于緩存數(shù)據(jù)和索引、重做和撤消日志、其他緩沖區(qū)以及表空間文件。如果查詢返回結(jié)果,結(jié)果將通過SQL層從存儲(chǔ)引擎發(fā)送回應(yīng)用程序。關(guān)于InnoDB的架構(gòu),請(qǐng)參考下圖,詳細(xì)的過程今后找機(jī)會(huì)介紹:
簡(jiǎn)單的總結(jié)一下,MySQL查詢的生命周期包括:創(chuàng)建連接、解析SQL、檢查權(quán)限、優(yōu)化查詢、執(zhí)行查詢(與存儲(chǔ)引擎進(jìn)行交互)、返回結(jié)果給應(yīng)用程序或客戶端。
以上內(nèi)容是對(duì)MySQL查詢生命周期的一個(gè)簡(jiǎn)單介紹,希望能夠?qū)κ褂肕ySQL的你有所幫助。
歡迎關(guān)注個(gè)人公眾號(hào)“MySQL解決方案工程師”
總結(jié)
以上是生活随笔為你收集整理的mysql 数据库生命周期_MySQL查询的生命周期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乒乓球学员成长档案管理软件怎么选
- 下一篇: wamp mysql 环境变量_wind