mysql存储引擎的配置,可通过my.cnf文件中default_storage_engine参数来指定。
存储引擎是MySQL用于管理数据存储和检索的组件,它负责处理表的创建、插入、更新和查询等操作。
如果想查看当前MySQL实例中可用的存储引擎列表,并查看哪些存储引擎是默认的,可在MySQL中通过SHOW ENGINES命令查看,注MySQL5.7前的版本使用SHOW ENGINE命令。
以MySQL8为例,默认包含了9种存储引擎,分别是InnoDB、MyISAM、MEMORY、CSV、ARCHIVE、BLACKHOLE、MRG_MYISAM、FEDERATED、PERFORMANCE_SCHEMA。
InnoDB引擎
MySQL从5.5.5版本开始,InnoDB已成为MySQL的默认存储引擎。如果你没有特别需求或是特别的原因,建议优先使用InnoDB引擎。
特点:InnoDB是MySQL默认的事务性存储引擎,它支持ACID四个特性(原子性、一致性、隔离性和持久性)。在数据写入时会将数据和索引写入到独立的文件中,支持行级锁定,提供高并发的读写能力。
适用场景:适合于需要事务支持、并发性能要求较高和对数据完整性要求严格的应用。
MyISAM引擎
特点:MyISAM是非事务性存储引擎,它不支持事务和行级锁定,只支持表级锁定,所以并发性能相对较低。在数据写入时将数据和索引分别写入到两个文件中,具有快速的读取速度。
适用场景:适合于读密集的应用,如数据仓库、日志记录等,不适合于频繁的写入操作或需要事务支持的应用。
MEMORY引擎
特点:MEMORY存储引擎将表数据存储在内存中,读写速度非常快,但是在MySQL重启或崩溃时数据会丢失。并且MEMORY存储引擎不支持外键约束和TEXT/BLOB字段,适用于存储小规模的数据。
适用场景:适合用于临时表、缓存表和高性能临时存储,用于存储非关键数据,如缓存数据等。
CSV引擎
特点:CSV存储引擎将数据以CSV(逗号分隔值)格式存储在文本文件中,不支持索引和事务,适合用于导入和导出数据。
适用场景:适合用于数据交换和快速导入导出数据的场景。
ARCHIVE引擎
特点:ARCHIVE存储引擎是用于存档数据的引擎,数据被高度压缩以节省空间。
适用场景:适合用于大量历史数据的存储和查询,不支持索引和事务。
BLACKHOLE引擎
特点:BLACKHOLE存储引擎将写入的数据丢弃,类似于Linux的/dev/null,而对于读取操作会返回一个空结果。
适用场景:适合用于数据复制和数据传输等场景,可以用于临时禁用写入操作。
MRG_MYISAM引擎
特点:MRG_MYISAM是MySQL中的合并(Merge)存储引擎,可以将多个MyISAM表合并成一个逻辑表。
适用场景:适合用于将分散的数据合并成一个逻辑表进行查询,只支持MyISAM表。
FEDERATED引擎
特点:FEDERATED存储引擎允许MySQL服务器上的表访问其他服务器上的数据,实现数据分布式存储和访问。
适用场景:可以在不同的MySQL服务器之间进行数据共享和访问。
PERFORMANCE_SCHEMA引擎
特点:PERFORMANCE_SCHEMA存储引擎用于收集MySQL服务器性能相关的统计信息。
适用场景:适合用于监控和优化MySQL服务器性能,可通过查询performance_schema数据库获取性能参数、查询执行计划、锁等信息。
原文链接:MySQL存储引擎的选择,转载请注明来源!