mysql技術內幕 innodb存儲引擎第二版 第一章小結

一 mysql 體系結構和存儲引擎

 

1.1 數據庫和實例

 

數據庫是指代存儲數據的各種文件

實例就是數據庫的後臺線程以及一個共享內存區組成,也就是一個進程,可以用ps -ef|grep mysqld 查看實例進程的詳細信息。

linux上讀取配置文件的順序 /etc/my.cnf->/etc/mysql/my.cnf->/usr/local/mysql/etc/my.cnf->~/.my.cnf 如果文件都存在,會默認使用最後一個存在配置文件的配置。

Mac版的 mysql8已經不會生成默認配置文件

datadir在linux系統中默認爲/usr/local/mysql/data,data文件夾只是一個鏈接,指向了/opt/mysql_data/

 

1.2 體系結構

 

Mysql主要有以下幾部分組成

1 連接池組件

2 管理服務和工具組件

3 sql 接口組件

4 查詢分析器組件

5 優化器組件

6 緩衝組件 cache

7 插件式存儲引擎

8 物理文件

 

1.3 存儲引擎類型

 

1 innodb引擎

主要用oltp 在線事務處理

支持行鎖,非鎖定讀,多版本控制(mvcc),支持事務

支持四種隔離級別,讀未提交,讀已提交,可重複度,串行讀,利用插入緩衝(insert buffer),二次寫(double write),自適應哈希索引(adaptive hash index),預讀(read ahead)來提高性能。

利用next-keylocking的策略避免幻讀

 

2 MyISAM引擎

主要用olap 在線數據分析 

不支持事務,表鎖設計。

存儲引擎表由myi,myd文件組成,myd存儲數據文件,myi存儲索引文件。

 

3 NDB存儲引擎

NDB存儲引擎是一個集羣引擎。

 

4 Memory存儲引擎

Memory存儲引擎將數據都存儲在內存中,一旦數據庫重啓或者崩潰,數據就會消失,一般只用來存儲臨時數據。默認的索引方式是自適應哈希索引,不支持行鎖,不能使用text blob類型數據,如果使用了,則該表就會自動轉爲MyISAM引擎的表,使用變長數據依舊會按照定長數據存儲。

 

5 Archive 

只支持insert和select,mysql5.1開始支持索引

 

6 Federated

指向遠程mysql表,只支持mysql表

 

7 Maria

MyISAM引擎升級版,支持行鎖,緩存和索引文件,mvcc。

 

1.4 各種存儲引擎的區別

對於事務

BDB和InnoDB支持,MYISAM不支持

MYISAM和Memory都是表鎖

BDB是page鎖

InnoDB和NDB支持行鎖。

 

1.5連接mysql

本節主要講了連接mysql的幾種方式,連接mysql的操作實際上就是一個連接進程和mysql實例的通信過程,也就是進程通信,進程通信主要管道,命名管道,命名字,TCP/IP套接字,UNIX域套接字。

Mysql連接主要有

1 tcp/ip

Tcp/ip是最常用的方式,jdbc連接數據庫就是基於此。

2 命名管道和共享內存

在一些早起的windows版本上。

3 unix域套接字

linux和unix環境下。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章