1. 程式人生 > >MySql-邏輯架構

MySql-邏輯架構

      和其它資料庫相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用併發揮良好作用。主要體現在儲存引擎的架構上,外掛式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。這種架構可以根據業務的需求和實際需要選擇合適的儲存引擎。

邏輯架構分層

 

1.連線層
      最上層是一些客戶端和連線服務,包含本地sock通訊和大多數基於客戶端/服務端工具實現的類似於tcp/ip的通訊。主要完成一些類似於連線處理、授權認證、及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接入的客戶端提供執行緒。同樣在該層上可以實現基於SSL的安全連結。伺服器也會為安全接入的每個客戶端驗證它所具有的操作許可權。

2.服務層
       第二層架構主要完成大多少的核心服務功能,如SQL介面,並完成快取的查詢,SQL的分析和優化及部分內建函式的執行。所有跨儲存引擎的功能也在這一層實現,如過程、函式等。在該層,伺服器會解析查詢並建立相應的內部解析樹,並對其完成相應的優化如確定查詢表的順序,是否利用索引等,最後生成相應的執行操作。如果是select語句,伺服器還會查詢內部的快取。如果快取空間足夠大,這樣在解決大量讀操作的環境中能夠很好的提升系統的效能。optimizer是sql優化器

3.引擎層
       儲存引擎層,儲存引擎真正的負責了MySQL中資料的儲存和提取,伺服器通過API與儲存引擎進行通訊。不同的儲存引擎具有的功能不同,這樣我們可以根據自己的實際需要進行選取。後面介紹MyISAM和InnoDB

4.儲存層
       資料儲存層,主要是將資料儲存在運行於裸裝置的檔案系統之上,並完成與儲存引擎的互動。

Mysql儲存引擎介紹

#檢視資料庫的儲存引擎:
show engines;
#看你的mysql當前預設的儲存引擎:
show variables like '%storage_engine%';

雖說MySql的儲存引擎有十多種,但是最常用的還是MyISAM和InnoDB,一下是二者的區別

MySql主要檔案

配置檔案

    windows : my.ini 檔案         
    linux : my.cnf 檔案    目錄:/etc/my.cnf

資料檔案

    frm檔案:存放表結構
    myd檔案:存放表資料
    myi檔案:存放表索引
    存放目錄:
    windows:D:\devSoft\MySQLServer5.5\data目錄下可以挑選很多庫
    linux:預設/var/lib/mysql

二進位制日誌log-bin:

    主要用於主從複製,檔案目錄在my.cnf中配置

錯誤日誌log-error:預設是關閉的,記錄嚴重的警告和錯誤資訊,每次啟動和關閉的詳細資訊等。

    檔案目錄在my.cnf中配置

查詢日誌log

    預設關閉,記錄查詢的sql語句,如果開啟會減低mysql的整體效能,因為記錄日誌也是需要消耗系統資源的

 

MySql主從複製的三步驟

    1.master將改變記錄到二進位制日誌(binary log)。這些記錄過程叫做二進位制日誌事件,binary log events;
    2.slave將master的binary log events拷貝到它的中繼日誌(relay log);
    3.slave重做中繼日誌中的事件,將改變應用到自己的資料庫中。 MySQL複製是非同步的且序列化的