MySQL存儲引擎筆記

MySQL存儲引擎筆記

 

存儲引擎概述

插件式存儲引擎是MySQL數據庫的重要特性之一,用戶可以根據應用的需要選擇如何存儲和索引數據、是否使用事物等  www.aiwalls.com  

特點

MyISAM

InnoDB

Memory

事物安全

 

支持

 

鎖機制

表鎖

行鎖

表鎖

索引類型

B樹索引

全文索引

B樹索引

集群索引

B樹索引

哈希索引

數據緩存

 

支持

支持

索引緩存

支持

支持

支持

支持外鍵

   www.aiwalls.com  

支持

 

存儲引擎特性

MyISAM(ISAM → Indexed Sequential Access Method )引擎

a)         MyISAM

劣勢:不支持事物、不支持外鍵

優勢:訪問速度快

適用:對事物完整性無要求、並發性不高或以select和insert操作為主的應用(web、數據倉庫等)

b)        MyISAMy表存儲格式

靜態表:存儲迅速、容易緩存、故障恢復容易(註:數據末尾的空格會被自動剔除)

動態表:空間占用小,刪除和更新易導致碎片化(註:optimize table或myisamchk -r碎片整理)

壓縮表:每條記錄單獨壓縮、訪問開支小

InnoDB引擎

a)       InnoDB

劣勢:寫操作效率差、占用更多磁盤(保留數據和索引)

優勢:事物安全、支持外鍵

適用:對事物完整性和並發下得一致性要求高並且有較多更新、刪除操作(InnoDB有效降低瞭刪除更新導致的表鎖定)的應用(計費、財務系統等)

b)      自動增長序列

1.       自動增長列必須是索引。

2.       如果是組合索引,則自動增長列必須是第一列(MyISAMy可為其他列,MyISAMy是按照前幾列排序後遞增的)

例:

create table autoincrease_demo_myisam

(t1 smallint not null auto_increment,

 t2 smallint not null,  www.aiwalls.com  

 name varchar(20),

 index(t2,t1)

)engine =myisam;

依次插入以下數據

t1

2

2

2

3

3

2

2

2

2

2

3

3

2

2

t2

2

3

2

3

4

2

3

2

3

2

3

4

2

3

查看數據庫的中數據:select * from autoincrease_demo_myisam order by t2,t1;

+—-+—-+——+

| t1 | t2 | name |

+—-+—-+——+

|  1 |  2 | 2    |

|  2 |  2 | 3    |

|  3 |  2 | 2    |

|  4 |  2 | 2    |

|  5 |  2 | 3    |

|  6 |  2 | 2    |

|  7 |  2 | 3    |

|  8 |  2 | 2    |

|  9 |  2 | 2    |

| 10 |  2 | 3    |

|  1 |  3 | 3    |

|  2 |  3 | 4    |

|  3 |  3 | 3    |

|  4 |  3 | 4    |

+—-+—-+——+

c)       外鍵約束

MySQL支持外鍵的存儲引擎隻有InnoDB。在創建外鍵的時候,要求父表必須有對應的索引,字表在創建外鍵的時候也會創建對應的索引。外鍵關聯的操作主要有restrict、cascade、set null、no action.  www.aiwalls.com  

restrict、no action:在子表有關聯記錄的情況父表不能更新。

cascade:父表在更新或者刪除時,更新或者刪除子表對應記錄。

set null:父表在更新或者刪除時,字表對應的字段被set null。

d)      存儲方式

共享表空間存儲:所有的數據和索引保存在innodb_data_home_dir和innodb_data_file_path定義的表空間中,可以是多個文件。

獨立表空間存儲:每個表的數據和索引單獨保存在自己的表空間中。(單表備份和恢復較方便)

Memory引擎

a)       優點:Memory存儲引擎使用存儲在內存中的內容創建表,默認使用HASH索引。表訪問非常快(在啟動服務的時候可以使用–init-file選項將insert into ,select 或load data infile這樣的語句放入這個文件,就可以再服務啟動時從持久穩定的數據源裝載表。)

b)      缺點:表大小有限制,服務關閉表中的數據就會丟失

c)       適用:內容變化不頻繁,作為統計操作的中間結果表。

 

 

作者 xinhanggebuguake

發佈留言