mysql服務端可以分為兩個部分,server層和引擎層。
server層包括聯結器、查詢快取、分析器、優化器、執行器等。
儲存引擎層負責資料的儲存和提取。 架構模式是外掛程式式的,支援innodb(5.5.5以後預設)、myisam、memory等多個儲存引擎。
1、 mysql自帶的客戶端,可以通過cmd 到命令列介面
2、 登入mysql聯結器 mysql>mysql –uuse
3、 資料庫連線後可以檢視資料庫當前狀態 mysql>show processlist (客戶端長時間不連線,聯結器自動斷開。時間引數由wait_timeout控制,預設8h),連線的會話訊息儲存在聯結器的內容中。由聯結器對客戶端進行校驗,查閱user表對使用者host、user、pwd、具體許可權進行校驗。
檢視連線資訊。
4、 建立連線
4.1 長連線:連線成功後,客戶端持續有請求,則一直使用同一連線。
4.2 短連線:每次執行完很少的幾次查詢就斷開連線,下次查詢再重建連線。
4.3 建立連線的過程通常十分複雜,故建議減少連線動作,多用長連線。
4.4 全部長連線,有時會導致mysql佔記憶體過大,因為只有在連線斷開時才會釋放資源,所以會導致記憶體占用過大而oom,進而造成mysql異常重啟。
4.5 全部長連線解決oom問題策略:i、定期斷開長連線再重連(次選) ii、5.7以後版本,每次執行乙個比較大的操作後,通過執行mysql_reset_connection來重新初始化鏈結。
5、查詢快取(弊大於利:每次對錶單行資料更新,都會清空表快取,對於更新頻繁的資料庫,快取命中率很低),mysql8.0已廢棄該功能,innodb的快取機制更優,而且還有lru淘汰機制。
建連完成,就可執行select語句了。執行邏輯第二步:查詢快取。
6、分析器
對輸入的字串進行語法分析,識別操作語句、表、資料等有效資訊。
經過分析器分析後,最終形成樹狀結構。
7、優化器
mysql在明白你要做什麼後,再對輸入的語句進行優化。
7.1 當表內存在多個索引,優化器決定使用哪個索引;
7.2 乙個語句有多表關聯時,決定各表的鏈結順序
8、執行器
執行的順序:先檢查使用者對錶有沒有執行該操作的許可權 —> 開啟表找到表的引擎,使用引擎提供的介面。
8.1 沒有索引時,查詢操作會逐句執行邏輯判斷操作,直至結束
8.2 對於有索引的表,執行的邏輯也差不多。第一次呼叫的是「取滿足條件的第一行」這個介面,之後迴圈取「滿足條件的下一行」這個介面,這些介面都是引擎中已經定義好的。
你會在資料庫的慢查詢日誌中看到乙個 rows_examined 的字段,表示這個語句執行過程中掃瞄了多少行。這個值就是在執行器每次呼叫引擎獲取資料行的時候累加的。
在有些場景下,執行器呼叫一次,在引擎內部則掃瞄了多行,因此引擎掃瞄行數跟 rows_examined 並不是完全相同的。
mysql01 mysql基礎知識
1 mysql的安裝 分為單例項和多例項 2 mysql的許可權 常見的刪庫跑路是因為許可權問題導致的,若是只賦予該賬號乙個某些許可權,就可以避免 grant select on mall.to dev 192.168.244.identified by 123 with grant option ...
MySQL 01 MySQL資料庫安裝指南
mysql官網 主要版本 oracle mysql cloud service commercial mysql enterprise edition commercial mysql cluster cge commercial 解壓到 d mysql my.ini檔案內容,涉及資料庫的配置 my...
MySql服務初始化 安裝 啟動
安裝並開啟服務 public static bool initandstartservice string servicename,string mysqlinipath,string mysqlpath,string mysqlbinpath,string mysqldatapath catch ...