一.mysql的兩層架構:
1.sql layer():除了處理底層資料的所有功能,包括許可權判斷,sql解析,執行計劃優化,query cache等
子模組:1.初始化模組:mysql server啟動時整個系統的初始化
2.核心api:對底層操作的優化,
3.網路互動模組:(實現底層互動的api)
4.client&server:實現客戶端與mysql互動的協議
5.使用者模組:(實現連線許可權控制,及使用者授權)
6.訪問控制模組:(根據使用者授權資訊,控制使用者可以訪問的操作)
7.連線管理,連線執行緒和執行緒管理:(監聽使用者的連線請求,**到連線執行緒模組)
8.query的解析和**模組
9.query cache模組:(快取,提高效能)
10.query 優化器模組:(優化請求)
11.表變更管理模組:(dml和ddl)
12.表維護模組:(表的狀態檢查,錯誤修復)
13.系統狀態管理模組:(用於客戶端請求系統引數時,返回使用者系統引數)
14.表管理器:()
15.日誌記錄模組
16.複製模組:
17.儲存引擎介面模組:(實現了儲存引擎外掛式管理)
2.storage engine layer(儲存引擎層):實現底層資料的操作,由多種儲存引擎組成
二.儲存引擎
1.myisam儲存引擎:這種引擎的表在資料庫中,每個表被存放在三個以表命名的物理檔案
分別是儲存表結構定義資訊的.frm檔案,存放資料的.myd檔案,存放索引的.myi檔案
myisam支援下面三種索引:
a.b-tree索引(最常用的)
b.r-tree索引(很少使用)
c.full-text索引:全文索引,儲存結構也是b-tree
資料存放的的.myd檔案,存放資料的格式有:(建立表時,可自己選擇是否壓縮,預設不壓縮)
a.靜態固定長度
b.動態可變長度
c.壓縮
2.innodb儲存引擎
特點:1.支援事務(實現了4個隔離級別)
2.資料的多版本讀取
3.鎖定機制的改進(通過索引,實現行鎖)
4.實現了外來鍵
物理結構:
第一部分:資料檔案(表資料及索引資料)
第二部分:日誌檔案
3.ndb cluster儲存引擎(在無共享儲存裝置的情況下,實現儲存)
(用於mysql的分散式叢集環境)
mysql cluster的環境組成:
a.負責管理各個節點的manage節點主機(必須最先啟動,叢集的配置,啟動關閉各個節點)
b.sql層的sql伺服器節點(連線管理,query優化,cache)(不需要提供儲存引擎)
c.storage層的ndb資料節點,(實現底層的資料儲存功能)
mysql資料庫結構
sql 注入 sql injection 是一種存在於應用程式與資料庫之間的安全漏洞。簡而言之,sql注入是這樣一種漏洞 應用程式在向後臺資料庫傳遞sql查詢時,如果為攻擊者提供了影響該查詢的能力,就會引發sql注入。攻擊者通過影響傳遞給資料庫的內容來修改sql自身的語法和功能,並且會引發sql所支...
資料結構 棧的定義 儲存結構和基本操作
棧空狀態 s.top 1 棧滿狀態 s.top maxsize 1 非法狀態 上溢和下溢 棧滿就是一種繼續入棧就會上溢的狀態,對應的棧下溢就是棧空的時候繼續出棧所造成的結果。順序棧定義 順序棧定義 typedef struct sqstack 初始化順序棧 初始化順序棧 void initsqsta...
資料結構 串的定義 儲存結構和基本操作
定長順序儲存 定長順序儲存 typedef struct str 變長分配儲存 變長分配儲存 typedef struct str 賦值操作 賦值操作 將一個常量字串賦值給str,賦值操作成功返回1,否則返回0 intstrcopy str str,char ch if len 0 else str...