天天看點

mysql深入了解(一)邏輯架構

1、概述

    我們對某技術的學習,目的很簡單,一是為了學習技術的使用;二是進行思想的學習。學習技術時,先了解思想,對于技術的掌握是大有益處的,一般了解技術思想的途徑,從他的架構設計和源碼是最直接的。

    mysql是一個開源的關系型資料庫産品, 采用處理與存儲分離的設計,靈活性高,這些年已成為網際網路應用上常用的關系型資料庫。網際網路系統特點是高并發,大資料量,一般瓶頸最終還是會落到資料庫,是以優化mysql是必不可少的。想對mysql了解,我們先了解它架構設計思想。

安裝mysql後主要有下面幾個元件:

mysql伺服器:

    • 也稱為mysqld;
    • 管理記憶體和碰盤上實際的資料庫通路;
    • 多線程的;
    • 支援多用戶端連接配接;
    • 支援多種存儲引擎;
    • 單機上可以安裝多個執行個體。

用戶端程式:

    bin目錄下實用的程式

非用戶端面程式:

    獨立于伺服器的用戶端程式

2、mysql邏輯結構

    mysql采用分層架構,并分成了多個子系統,每個子系統都有互相獨立又互相協助,共同完成資料庫伺服器功能。下圖為mysql邏輯架構圖

mysql深入了解(一)邏輯架構

公共服務層:

    為整個系統提供基礎、公用的服務;

服務層:

    分為有API,Query Parsing,Optimization,Execution,Query Cache等子系統。

    API:用于接收SQL指令,如我們通過用戶端直接select * from table;

    Query Parsing:解釋查詢,對傳入的SQL語句進行解釋、驗證,并生成SQL_ID與SQL語句關聯;

    Optimization:對Query Parsing傳入的SQL,根據不同的存儲引擎生成優化後的執行計劃,并重寫查詢。

    Execution:執行根據Query Parsing和Optimization處理過的資料。

    Query Cache:基于記憶體的緩存,根據SQL_ID.SELECT來判斷是否已經處理過相同的查詢語句,如果處理過,直接從Query Cache中傳回結果集,加快讀速度。

存儲引擎層:

    Mysql中特性之一,用于進行資料處理和檔案管理,采用的是處理與存儲分離,可以根據應用需要進行相應靈活的選擇。mysql中存儲引擎有事務型和非事務型的,我們可以通過指令show engines來檢視目前mysql資料庫版本支援的存儲引擎。

mysql深入了解(一)邏輯架構

目前用的是MYSQL5.6.

InnoDB,預設的存儲引擎,支援事務,采用行鎖;

MyISAM:讀資料很快,不支援事務,采用表鎖機制;

MEMORY:基于記憶體的資料庫,不支援事務,采用表鎖.

其它的資料引擎用的很少,暫時不介紹,但圖中有一種存儲引擎是沒有顯示出來的,即NDB,我們暫時可以把它當做是InnoDB的叢集版本。

來,坐來下

品位這一杯茶

讓我們一起并肩成長

成長會讓我們看的更遠

走的更長

mysql深入了解(一)邏輯架構

繼續閱讀