MySQL存儲引擎筆記
存儲引擎概述
插件式存儲引擎是MySQL數據庫的重要特性之一,用戶可以根據應用的需要選擇如何存儲和索引數據、是否使用事物等
特點
</td>
|
MyISAM
</td>
|
InnoDB
</td>
|
Memory
</td>
</tr>
|
事物安全
</td>
|
</td>
|
支持
</td>
|
</td>
</tr>
|
鎖機制
</td>
|
表鎖
</td>
|
行鎖
</td>
|
表鎖
</td>
</tr>
|
索引類型
</td>
|
B樹索引
全文索引
</td>
|
B樹索引
集群索引
</td>
|
B樹索引
哈希索引
</td>
</tr>
|
數據緩存
</td>
|
</td>
|
支持
</td>
|
支持
</td>
</tr>
|
索引緩存
</td>
|
支持
</td>
|
支持
</td>
|
支持
</td>
</tr>
|
支持外鍵
</td>
|
</td>
|
支持
</td>
|
</td>
</tr>
</tbody>
</table>
</div>
存儲引擎特性
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,
name varchar(20),
index(t2,t1)
)engine =myisam;
依次插入以下數據
t1
</td>
|
2
</td>
|
2
</td>
|
2
</td>
|
3
</td>
|
3
</td>
|
2
</td>
|
2
</td>
|
2
</td>
|
2
</td>
|
2
</td>
|
3
</td>
|
3
</td>
|
2
</td>
|
2
</td>
</tr>
|
t2
</td>
|
2
</td>
|
3
</td>
|
2
</td>
|
3
</td>
|
4
</td>
|
2
</td>
|
3
</td>
|
2
</td>
|
3
</td>
|
2
</td>
|
3
</td>
|
4
</td>
|
2
</td>
|
3
</td>
</tr>
</tbody>
</table>
</div>
查看數據庫的中數據: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.
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) 適用:</strong>內容變化不頻繁,作為統計操作的中間結果表。</span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
| | | | | |
| |
| |
|
| | | |
| |
|
sesese色
|