数据库引擎是数据库的底层软件组织系统,数据库管理系统使用数据库引擎进行创建、查询、更新、删除数据的操作。不同存储引擎提供不同的存储机制、索引技巧和锁定水平等。不同的数据库管理系统支持多种不同的数据库引擎。
MySQL支持的数据库引擎有InnoDB,MyISAM,Memory,Merge,Archive,Federated,CSV,BLACKHOLE等,在mysql的shell中可以使用命令show engines\g查看数据库引擎。如图所示:
常见的几个数据库引擎的区别如下:
功能 | InnoDB | MyISAM | Memory | Archive |
存储限制 | 64TB | 256TB | RAM | None |
支持事务 | Yes | No | No | No |
支持全文索引 | No | Yes | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | No | Yes | No |
支持数据缓存 | Yes | No | No | No |
支持外键 | Yes | No | No | No |
各种数据库引擎的特点和、适用情况:
InnoDB:支持事务安全,行锁定和外键。如果要求提供提交、回滚、崩溃恢复的事务(ACID)安全的能力,并要求实现并发控制的时候,InnoDB是个不错的选择。它是MySQL的默认引擎。
MyISAM:具有高速插入、查询能力,不支持事务。如果数据表只用来插入和查询,MyISAM能提供较高效率。它是Web,数据仓库和其他应用程序的常用数据库引擎。
Memory:它将数据存在内存中,为查询和引用其它表提供快速访问。如果只是临时存储数据,数据量不大并且安全性要求不高,可以考虑Memory引擎。MySQL中使用Memory作为临时表的引擎,来存储中间结果。
Archive:支持高并发的插入操作,但是不是事务安全的。如果只需要查询和插入功能,可以选用Archive。Archive引擎很适合存储归档数据,比如日志数据。
一个数据库中的多个表可以使用不同的数据库引擎来满足不同的实际需求。使用合适的数据库引擎可以提高整个数据库的性能。