舊,mysql
馬哥視頻----mysql事務和隔離級別 sql
MySQL基礎架構圖以下 緩存
鏈接管理器(面對用戶的一端,接收用戶鏈接並創建鏈接)
1. 接受請求: 監聽某個套接字上接收客戶端請求,接收下來後建立一個線程與響應
2. 建立線程:線程還有線程管理器專門負責相關功能,爲了加速線程建立(由於在用戶鏈接很是多且很是頻繁的話線程頻繁建立並銷燬是至關銷燬資 源)因而有了線程重用的概念,一個用戶鏈接進來退出了,線程沒有被銷燬而是直接放到空閒線程池當中,而
新的用戶請求到來後,直接給它拿一個空閒線程響應 。安全
( 每一個用戶都有一個線程,每一個用戶本身的全部操做都在它自身線程地址空間內完成,而cpu是有限的也就意味着每一個用戶發起的操做只能輪流在cpu上執行,而某個一個查詢的速度很是很是慢,執行速度又很是慢,結果致使一個用戶的查詢雖然很單,
可是執行起來卻任然很慢,由於此行人的沒結束, 因此像這些每個查詢操做每個用戶的線程最終都要輪流在cpu上執行的,而這些輪流執行的過程頗有可能受到其餘用戶線程的影響)服務器
3.驗證用戶是否能夠連入mysql服務器:
4.創建安全鏈接:架構
mysql協會是明文的(若是須要機密性的,鏈接管理器可能還會建立安全鏈接)優化
查詢緩存(若是緩存有結果,那麼從高速緩存中直接返回用戶的查詢結果,查詢緩存只跟讀操做有關)
分析器(若是緩存沒命中,因而交由分析器作分析,分析的結果若是發現緩存中任然有結果還能夠交由緩存,直接從緩存中返回結果,不然交給優化器完成優化器
優化器 (完成優化)
執行引擎
儲存引擎(完成語句執行)spa
當咱們發起查詢操做後,mysql服務器會負責解析每個查詢,而且會在mysql進程內部建立一個解析數,在這個解析數執行各類優化,並計算出最優執行路徑,
若是查詢結果是肯定性的(像 select current_time() 查詢當前時間的結果 是非肯定性的),將緩存下來線程
若是沒有緩存直接交給解析數處理
若是有緩存沒一次查詢以前都須要查詢緩存是否是命中了,若是沒有交給解析數視頻