1 mysql儲存引擎
和大多數資料庫不同,mysql資料庫是最重要的儲存引擎的概念,針對不同的儲存需求可以選擇不同的儲存引擎.
2.1 myisam
mysql的預設儲存引擎,不支援事務,也不支援外來鍵,其優勢是訪問速度快.
myisam支援3種不同的儲存格式:靜態表,動態表,壓縮表.
其中靜態表是預設的儲存方式.每個欄位都是非變長字段,每個記錄都是固定長度的.優點是儲存非常迅速,容易快取,出現故障容易修復,缺點是占用空間比動態表大,會對資料自動補空格,但是訪問也訪問不到,但是若儲存的資料尾部是空格的話,再訪問該條資料也會丟失空格;
動態表包括變長字段,記錄不是固定長度的,優點是佔空間相對較小,但是頻繁更新刪除會產生碎片,需要定期的執行optimize語句或者myisamchk-r命令來改善效能,並且在出現故障時恢復較難;
壓縮表由myisampack建立,占用非常小的磁碟空間.
2.2 innodb
innodb儲存引擎提供了具有提交,回滾和崩潰恢復能力的事務安全.速度比myisam慢.
特點:(1)自動增長列
自動增長列可以手工插入,但是插入的值是空或者是0時,實際插入的值是自動增長後的值.
(2)外來鍵約束
mysql支援外間的儲存引擎只有innodb
(3)儲存方式
innodb儲存表和索引有以下兩種方式
使用共享表空間儲存
使用多表空間儲存
7.2.3 memory
memory儲存引擎使用存在於記憶體中的內容來建立表,每個memory表只實際對應乙個磁碟檔案,格式是.frm.memory型別的表訪問資料非常的快,因為他的資料是存放在記憶體中的,並且預設使用hash索引,也可以指定使用btree索引.主要用於那些內容變化不頻繁的**表,便於高效的對中間結果進行分析並得到最終的統計結果,對memory表的資料更新要謹慎,因為資料沒有寫到磁碟中,而是在記憶體裡,所以一定要對重啟服務後如何獲得這些修改後的資料有所考慮.
7.2.4 merge
merge儲存引擎是一組myisam表的組合,這些myisam表結果必須完全相同,merge表本身並沒有資料,對merge型別的表進行增改查的時候都是對內部的表的操作,刪除操作drop刪除的是merge表的定義,對內部表無影響,對於merge型別的表的插入操作是insert_method字句定義插入的表,有三個值,first,last和no,不寫和no一樣,就不能對錶進行插入操作.
7.2.5 tokudb
前面介紹的都是mysql自帶的儲存引擎,除此之外還有一些第三方儲存引擎,比如列式儲存引擎infobright,高寫效能的壓縮的tokudb就是其中有代表性的兩種
特性:(1)使用fractal數索引保證高效的插入的效能;
(2)優秀的壓縮特性,比innodb高近10倍;
(4)使用bulk loader達到快速載入大量資料;
(5)提供了主從延遲消除技術
(6)支援acid和mvcc
3 如何選擇合適的儲存引擎
在選擇儲存引擎時,應根據應用特點擊擇合適的儲存引擎.對於複雜的應用程式,還可以根據實際情況選擇多種儲存引擎進行組合.
MySQL讀書筆記 儲存引擎
通過engine欄位可以看出mysql.user表,是乙個myisam表,表中一些字段含義 mysql從2007年開始提供了外掛程式式的儲存引擎api,從此湧出了一系列為不同目的而設計的儲存引擎。percona的xtradb儲存引擎是基於innodb引擎的乙個改進版本,已經包含在percona se...
MySQL讀書筆記 儲存引擎
關於儲存引擎的細節,請參考官方文件。如果使用innodb引擎,建議閱讀官方手冊中的innodb事務模型和鎖一節。通過engine欄位可以看出mysql.user表,是乙個myisam表,表中一些字段含義 mysql從2007年開始提供了外掛程式式的儲存引擎api,從此湧出了一系列為不同目的而設計的儲...
MySQL讀書筆記(一)儲存引擎
mysql被設計為了乙個單程序多執行緒架構的資料庫。mysql啟動時會先去尋找配置檔案,找不到就按預設方式啟動。linux中是尋找my.cnf 檔案,windows上可能是.cnf或者是.ini。資料庫是檔案的集合,資料庫例項是程式,是用來對資料庫檔案操作的。mysql體系結構 mysql提供了一些...