友情提示:此篇文章大约须要阅读 8分钟53秒,不足之处请多指教,感谢你的阅读。订阅本站mysql
此文章首发于 Debug客栈 |https://www.debuginn.cnsql
对于数据库这一块询问比较多的就是在 MySQL 中怎么去选择一种什么时候当前业务需求的存储引擎,而 MySQL 中支持的存储引擎又有不少种,那么 MySQL 中分别又有那些,怎么优雅的使用呢?数据库
在文件系统中,MySQL 将每一个数据库(也能够称之为 schema )保存为数据目录下的一个子目录。建立表时,MySQL 会在数据库子目录下建立一个和表同名的 .frm 文件保存表的定义。例如建立一个名为 DebugTable 的表,MySQL 会在 DebugTable.frm 文件中保存该表的定义。缓存
由于 MySQL 使用文件系统的目录和文件来保存数据库和表的定义,大小写敏感性和具体的平台密切相关。在 Windows 系统中,大小写是不敏感的;而在类 Unix 系统中则是敏感的。不一样的存储引擎保存数据和索引的方式是不一样的,但表的定义则是在 MySQL 服务层wk统一处理的。并发
想了解 MySQL 中支持的引擎的状况,可使用以下命令查看:app
show engines;
结果以下(MySQL版本:Ver 8.0.19):ide
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec)
MySQL 存储引擎分类有 MyISAM、InnoDB、Memory、Merge等,能够看上面表中列出的支持引擎,可是其中最为经常使用的就是 MyISAM 和 InnoDB 两个引擎,其中针对于以上讲到的存储引擎,以下表进行对比:性能
两种类型最主要的差异是InnoDB支持事务处理与外键和行级锁。spa