资料来源:网络整理
时间:2023/2/17 14:54:35 共计:3621 浏览
我们在《MySQL存储引擎有哪些》一节中介绍了 MySQL 中几种主要的存储引擎以及它们的使用特性,本节将介绍如何根据不同的应用场景去选择合适的存储引擎。
在使用 MySQL 数据库管理系统时,选择一个合适的存储引擎是一个非常复杂的问题。不同的存储引擎都有各自的特性、优势和使用的场合,正确的选择存储引擎可以提高应用的使用效率。
为了能够正确地选择存储引擎,必须掌握各种存储引擎的特性。下面重点介绍几种常用的存储引擎,它们对各种特性的支持如下表所示。
MySQL存储引擎特性汇总和对比
特性 |
MyISAM |
InnoDB |
MEMORY |
存储限制 |
有 |
支持 |
有 |
事务安全 |
不支持 |
支持 |
不支持 |
锁机制 |
表锁 |
行锁 |
表锁 |
B树索引 |
支持 |
支持 |
支持 |
哈希索引 |
不支持 |
不支持 |
支持 |
全文索引 |
支持 |
不支持 |
不支持 |
集群索引 |
不支持 |
支持 |
不支持 |
数据缓存 |
|
支持 |
支持 |
索引缓存 |
支持 |
支持 |
支持 |
数据可压缩 |
支持 |
不支持 |
不支持 |
空间使用 |
低 |
高 |
N/A |
内存使用 |
低 |
高 |
中等 |
批量插入速度 |
高 |
低 |
高 |
支持外键 |
不支持 |
支持 |
不支持 |
表中主要介绍了 MyISAM、InnoDB 和 MEMORY 三种存储引擎特性的对比。下面详细介绍这 3 个存储引擎的应用场合并给出相应的建议。
1) MyISAM
在 MySQL 5.1 版本及之前的版本,MyISAM 是默认的存储引擎。
MyISAM 存储引擎不支持事务和外键,所以访问速度比较快。如果应用主要以读取和写入为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择 MyISAM 存储引擎是非常适合的。
MyISAM 是在 Web 数据仓储和其他应用环境下最常使用的存储引擎之一。
2) InnoDB
MySQL 5.5 版本之后默认的事务型引擎修改为 InnoDB。
InnoDB 存储引擎在事务上具有优势,即支持具有提交、回滚和崩溃恢复能力的事务安装,所以比 MyISAM 存储引擎占用更多的磁盘空间。
如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,那么 InnoDB 存储引擎是比较合适的选择。
InnoDB 存储引擎除了可以有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交(Commit)和回滚(Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB 都是合适的选择。
3) MEMORY
MEMORY 存储引擎将所有数据保存在 RAM 中,所以该存储引擎的数据访问速度快,但是安全上没有保障。
MEMORY 对表的大小有限制,太大的表无法缓存在内存中。由于使用 MEMORY 存储引擎没有安全保障,所以要确保数据库异常终止后表中的数据可以恢复。
如果应用中涉及数据比较少,且需要进行快速访问,则适合使用 MEMORY 存储引擎。
总结
不同应用的特点是千差万别的,选择适应存储引擎才是最佳方案也不是绝对的,这需要根据实际应用进行测试,从而得到最适合的结果。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。