数据库的存储引擎

参考:深入浅出MySql

 

MyIsam:MySQL默认的存储引擎,不支持事务,不支持外键,优势是访问速度快。

MyIsam磁盘上存储三个文件:.frm存储表定义;.MYD存储数据;.MYI存储索引。MyIsam表支持三种不同存储方式,静态表,动态表,压缩表。

静态表:字段都是非变长的,这样每个记录都是固定长度,这种方式的优点是存储迅速,容易缓存,出故障容易恢复。

动态表:字段是变长的,这样占用空间小,但是频繁更新和删除记录会导致碎片很多,需要定期的optimize table

压缩表:记录被压缩存储,访问开支小。

InnoDB:具有提交、回滚和崩溃回复能力,支持事务。InnoDB的自动增长列必须是索引,如果是组合索引,那必须是索引的第一列,对于myIsam表,自动增长列可以是组合索引的其他列。

MySQL只有InnoDB支持外键,在创建外键时,要求父表必须有对应的索引,子表也会自动创建对应的索引。

外键关键字:RESTRICT,CASCADE、SET NULL。

RESTRICT:子表有相应记录,父表不允许更新;

CASCADE:子表有相应记录,父表更新或者删除时,子表同时更新或者删除

SET NULL:父表相应记录删除时,子表对应记录设为NULL。

MEMORY:使用存于内存中的内容来创建表,每个MEMORY表只实际对应一个磁盘文件.frm,Memory表数据访问很快,默认使用HASH索引,但服务器关闭则数据丢失。

在MEMORY创建时,可指定Hash索引或者B-Tree索引。

MEMORY存储引擎主要用于那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效的对中间结果进行分析并得到最终的分析结果。

### 不同数据库存储引擎的特点和区别 #### MySQL 存储引擎对比 在MySQL这类支持多存储引擎数据库系统中,可以根据表的具体用途选择最合适的存储引擎来充分利用各引擎优势,从而实现整体性能和功能的最佳平衡[^1]。一个数据库中的多个表可以采用不同类型的存储引擎以适应多样化的性能需求和应用场景[^2]。 - **MyISAM** - 特点:提供高速的数据插入操作;适合用于只读或很少更新的大数据集查询场景。 - 缺点:不支持事务处理、外键约束以及行级锁机制,在高并发写入环境下表现不佳。 - **InnoDB** - 特点:支持完整的ACID兼容事务管理、外键参照完整性检查及行级锁定策略,这使得它非常适合于需要频繁执行增删改查混合负载的任务环境。 - 行锁定机制允许更细粒度的操作权限分配,有助于减少死锁发生概率并提升系统的吞吐能力[^4]。 #### MongoDB 存储引擎概述 对于NoSQL文档型数据库MongoDB而言,默认配置下会依据版本号选用相应的存储引擎: - **MMAPv1 (Memory-Mapped Files v1)** - MMAPv1作为MongoDB早期版本的主要存储方式之一,通过内存映射技术实现了高效的磁盘I/O访问模式。其优点在于能够很好地应对大规模批量插入请求,并且具备良好的随机读取效率。然而随着项目发展和技术进步,官方逐渐推荐用户转向更加先进的WiredTiger引擎[^3]。 - **WiredTiger** - 这是一个由第三方开发而后被MongoDB公司收购优化后的高性能持久化解决方案。相较于前代产品,新架构不仅增强了压缩率与缓存命中率指标,还引入了更为完善的日志记录体系结构,进一步保障了数据安全性和一致性水平。 ```sql -- 创建使用特定存储引擎的表格实例(仅适用于MySQL) CREATE TABLE example_table ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), PRIMARY KEY(id) ) ENGINE=InnoDB; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值