MySQl,:
MySQl常用的存储引擎主要就是2个:Innodb和MyIASM.
MyISAM:
是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MYISAM强调了快速读取操作,缺点是就是不能在表损坏后恢复数据。
ISAM:
ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。
InnoDB:
InnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MYSQL+API
存储引擎对比 | 读取速度 | 锁定机制 | 是否包含事务 | 是否记录表行数 | 数据是否可恢复 | 支持全文索引 | 支持数据库缓存 |
ISAM | 快 | 锁表,无外键 | 否 | 否 | |||
MyISAM | 快 | 否 | 是 | 否 | 是 | 否 | |
InnoDB | 较慢 | 行级锁和外键的约束 | 是 | 否 | 是 | 否 | 是 |
总结:
Innodb和MyIASM各有特点,适用范围不同。大容量的数据集时趋向于选择Innodb,因为它支持事务处理,并发控制和故障的恢复,因此目前互联网相关的电商等选用mysql多用Innodb。MyIASM适用查询大于写入,且查询频繁的场景,通常各种门户,新闻等信息展示的web网站,可以优先考虑。
另外:
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
mysql给开发者提供了查询存储引擎的功能,可以使用:
SHOW VARIABLES LIKE 'storage_engine';
Oracle:
oracle中不存在引擎的概念,数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。