一、應用系統如何與mysql進行一次互動?
最開始接觸jdbc的時候,我們系統如何完成一次sql操作呢?第一步,建立資料庫連線;第二步,操作sql;第三步,釋放連線。
但是每次建立與資料庫的連線非常耗時和資源,所以我們加入了連線池的概念。第一步的獲取連線是從連線池中獲取乙個可用的連線,第三步的釋放連線不是斷開連線,而是將連線放回連線池中。
但是mysql是如何處理我們每次提交的sql呢?以前這對於我就是乙個黑盒,只知道操作mysql給我的結果就好了,但是有問題時又無法分析出問題在哪一步。今天就開始深入研究一下mysql,而不只是簡簡單單的curd了。
二、mysql是什麼
首先,mysql是什麼?其實它也就是乙個系統,和我們其他的業務系統一樣,由一行行**組成的。我們自己的系統與mysql互動,就是通過http的一次介面呼叫而已,有建立連線的介面,有查詢的介面等等。
mysql和我們其他系統一樣也維護了乙個執行緒池,其他業務系統用來獲取連線。mysql有乙個監聽執行緒,一直在監聽有什麼新的連線請求過來。一旦有請求過來,就呼叫sql介面進行操作。
三、一次sql操作的流程
那麼一次sql操作的流程是如何的呢?
比如 select id,name from user where id=1:
1.sql解析器解析sql。這條sql就會解析成這是乙個select查詢操作,操作的表名user,查詢的字段id,name。
2.sql優化器優化sql。sql解析出來後,該按照什麼樣的步驟去操作呢?是全表掃瞄後過濾出id=1的那條呢,還是根據id=1指定定位到那一條,把那條資料查詢出來呢。顯然,是後面這種方法更優化。
3.sql執行器執行計畫。如何執行sql的,就是要靠sql執行器了。
4.呼叫儲存引擎介面執行sql。儲存引擎操作存放在記憶體或磁碟的資料,進而返回我們需要的結果。mysql的儲存引擎有innodb,myisam等,現在用的最多的就是innodb了。
初識mysql架構設計
一 應用系統如何與mysql進行一次互動?最開始接觸jdbc的時候,我們系統如何完成一次sql操作呢?第一步,建立資料庫連線 第二步,操作sql 第三步,釋放連線。但是每次建立與資料庫的連線非常耗時和資源,所以我們加入了連線池的概念。第一步的獲取連線是從連線池中獲取乙個可用的連線,第三步的釋放連線不...
salesforce 架構設計 從架構設計到架構師
因為碎片化的時間多了,所以開始刷起某乎了,關注了架構相關的板塊,也順手回答了一些問題。發現有很多同道中人正在經歷著我前兩年經歷的階段,對於做架構沒有相對具象的一些理解,更沒有系統化的認識。所以把最近回答的一些內容整理一下,權當記錄,留給3年後的自己 按慣例,容許我裝x開頭 一 架構的定義 在軟體開發...
軟體架構設計 二 系統總體架構設計
系統總體架構非常重要,但在表達上都不盡相同,下面介紹幾種常用的系統架構模式,供參考 assf access service biz standard fundation 模式 訪問 服務 業務功能 標準 基礎,對系統架構各個層次均有表達,但部署應用模式需要有單獨說明,如下圖方式組織系統總體架構 lo...