深刻分析MySQL的邏輯架構

MySQL的邏輯架構sql

MySQL架構的特色:數據庫

基於C/S 架構模型緩存

基於線程工做
服務器

同時MySQL 是一個獨立的進程架構


客戶端:須要專門的客戶端工具 多是SQL的接口訪問Mysql 
             要執行SQL語句操做須要用到SQL接口 客戶端可能有N多種 對於用戶須要提供驅動 
             Connetort 客戶端經過鏈接器鏈接到服務器上  服務器上有專門的組件用於響應
             客戶端發起的請求 這個組件的名稱叫 鏈接/線程處理      ide

                      

           
     服務器端:包含如下幾部分          
         鏈接/線程處理
         查詢緩存 
         分析器
         優化器
         存儲引擎
          
       每個客戶端發起一個新的請求都由服務器端的鏈接/線程處理工具負責接收客戶端的請求並開闢一個新的內存空間 在服務器端的內存中生成一個新的線程, 當每個用戶連        接到服務器端的時候就會在進程地址空間裏生成一個新的線程 用於響應客戶端請求 用戶發起的查詢請求都在線程空間內運行, 結果也在這裏面緩存並返回給服務器端.線程的        重用和銷燬 都是由鏈接/線程處理管理器實現的
       綜上所述:用戶發起請求 鏈接/線程處理器 開闢內存空間 開始提供查詢的機制
     
       接下來用戶發起SQL 查詢語句 用戶的SQL語句 在鏈接/線程處理器接收 接收下來後 開始交給服務器端的核心組件來查詢 爲了加速 MySQL 的查詢速度 提供了一個查詢緩存          空間 若是同一個SQL語句此前被查詢過告終果符合某個特定條件 就會保存在查詢緩存空間裏  所以第二次執行這條語句的時候 就直接返回結果 這樣大大的提升了MySQL檢          索響應速度。 若是緩存中沒有響應的語句(緩存未命中)此時就交給分析器
     
       分析器分析用戶發起的SQL語句  把語句進行切片 該分析器包括詞法分析和語法分析兩部分 語法分析器用來分析接收到的語句語法是否正確 若是語法是錯誤的就不用執行這 條語句了 若是語法分析無誤 (syntex 0K !) 接下來就作詞法分析, 詞法分析 就是把接收到的語句進行切片 一段一段用空格分開 由於分析器分析的結果要送達給解釋器 進行        執行的  【命令 選項 參數】 
      爲何要進行詞法分析呢?
      SQL 有個最重要的特色  在數據庫的表中的檢索特定字段的數據時 不一樣數據庫不一樣表 是不同的  字段不同 就必需要把接收到的語句進行切片才能找到特定的字段值
      詞法分析後的結果發現沒有問題 
     
     分析的結果交給優化器進行優化  怎麼進行優化呢
     有N中執行辦法  N中執行路徑  是否用到數據庫 執行路徑中哪一個速度最快  都是優化過程須要考慮的問題 優化器的主要目的就是從N中執行路徑中選擇一種最快的 並生成對應      的可執行的二進制格式 並進行執行 ,選一個最優的執行 
      
     執行就是從存儲在磁盤中的文件中檢索一個最優的數據 
    
     真正存儲在磁盤上的數據是由存儲引擎管理的, 存儲在文件系統或者是裸設備上的數據管理程序
     自己能提供給上層應用不一樣的功能 不一樣的存儲引擎具備不一樣的特性
      
--------------------------------------------------------------------------------------------------------------


核心組件包含


 SQL interface
     用戶發過來的SQL命令都由SQL接口接收
     本地API發送來的請求則是由其餘機制接收
     
     DML 數據操做語言  data manipulation language
         update,delete, 
        e.g. 查詢一行數據、刪除一行數據、修改一行數據         // 實現數據自己的操做
     DDL 數據定義語言  data difinition language
         CREATE,DROP
         e.g. 建立一個新的數據庫、建立一個新的表、建立一個新的索引        
         help CREATE TABLE          
       
     存儲過程
     視圖
     觸發器
     
 Parser 分析器
     查詢事情
     對象權限
     詞法分析句法分析
 Optimizer 優化器
     訪問路徑 執行路徑 實現統計
 Caches&Buffers 緩存和緩衝
     全局定義
     特定的緩存緩衝
     
 Pluggable Storage Engines  插件式存儲引擎
  數據庫提供了大量的數據
  MySQL是提供數據庫的管理軟件 管理數據庫中的數據
  數據庫的物理結構是一個個的文件 邏輯上看是一個個的表
  如何組織 對應的表怎麼轉化成物理文件 靠MySQL 提供的存儲引擎來實現 一一對應起來
  用戶能夠本身選擇 由於是插件式的存儲引擎 把表和數據文件對應起來
  存儲引擎:將邏輯結構轉換成物理結構的程序
  MySQL 插件式存儲引擎 使用靈活 最終造成的文件要保存在磁盤分區上 分區上與文件系統相關 

  數據庫對象: 
        表,二維關係                           // 邏輯上是以表的形式存儲
                                           
        記錄
        字段
        索引
        視圖
        觸發器
        存儲過程
        存儲函數
        時間調度器
        用戶
        遊標
     元數據庫信息保存在數據中         
     // 物理上對應於一個文件存儲 函數


http://blog.csdn.net/shyrat/article/details/6740635工具

相關文章
相關標籤/搜索