mysql結構 一文讀懂MySQL體系結構

2021-10-25 22:26:38 字數 1453 閱讀 5182

一、定義資料庫和例項

資料庫:

物理作業系統檔案或其他形式檔案型別的集合。資料庫檔案可以是frm、myd、ibd 結尾的檔案。

從概念上來說,資料庫是檔案的集合,是依照某種資料模型組織起來並存放於二級儲存器的資料集合;

例項:mysql資料庫由後台程序以及乙個共享記憶體區組成。共享記憶體可以被執行的後台執行緒所共享。 需要注意的是,資料庫例項才是真正用於運算元據庫檔案的。

從概念上來說,資料庫例項是程式,是位於使用者於作業系統之間的一層資料管理軟體,使用者對資料庫資料的任何操作,包括資料庫定義、資料查詢等都在例項下進行,應用程式只有通過資料庫例項才能和資料庫打交道。

ps:mysql是乙個單程序多執行緒架構的資料庫。也就是說mysql資料庫例項在系統中表現形式就是乙個程序。

二、mysql體系結構

根據上圖可以看出,mysql由以下幾個部分組成:

1. 連線池組建

2. 管理服務和工具組建

3. sql介面元件(sql inte***ce)

4. 查詢分析器(parser)

5. 優化器元件(optimizer)

6. 緩衝元件(cache & buffer)

7. 外掛程式式儲存引擎(pluggable storage engines)

8. 物理檔案 (file sysgtem & logs)

三、mysql儲存引擎

mysql與其他資料庫對比等一大特點就是獨有的外掛程式式體系結構,而每儲存引擎都有各自的特點,能夠根據具體的業務或者應用場景建立不同的儲存引擎表。

下面簡單的介紹以下mysql幾款常見的儲存引擎:

1、innodb儲存引擎:

innodb儲存引擎支援事務,設計目標主要面向oltp應用,特點是行鎖設計、支援外來鍵。ps:mysql5.6+開始支援全文索引。

2、myisam儲存引擎:

myisam儲存引擎不支援事務、表鎖設計,支援全文索引,主要面向一些olap資料庫應用。

3、ndb儲存引擎:

ndb儲存引擎是一款集群儲存引擎,特點是將資料全部放在記憶體中(mysql5.1+開始可以將非索引資料放在磁碟上)因此主鍵查詢的資料快,通過新增資料儲存節點,可以線性的提高資料庫效能,是高可用,高效能的集群系統。

4、memory儲存引擎:

memory儲存引擎將表中所有的資料放置記憶體中,如果資料庫重啟或者崩潰,資料將消失。memory所有預設使用雜湊索引。

5、archive儲存引擎:

只支援insert 和 select操作, 使用zlib演算法將資料行(row)壓縮儲存。 非常適合儲存歸檔資料,如日誌資訊。

6、federated

7、maria

一文讀懂Nginx

問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...

一文讀懂SpringMVC

主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...

堆疊 一文讀懂

堆疊 stack 是一種先進後出的 操作受限的線性表,也可以直接稱為棧。可以把棧想象成乙個桶一樣,往這個桶裡面一層一層的放東西,先放進去的在裡面,後放進去的東西依次在外面。但取東西的時候就是先取靠近外面的,再依次一層層取裡面的。這就是 後進先出 last in first out 的原則。因此 棧 ...