文章目录
- 前言
- 一、MySQL 引擎
- 二、MyISAM和InnoDB特点
- 三、InnoDB和MyISAM的区别
- 总结
前言
面试经常会问到MySQL存储引擎的相关内容。常见的MySQL存储引擎有MyISAM和InnoDB,本文主要介绍这两种存储引擎的特点和区别以及如何选择合适的存储引擎。
一、MySQL 引擎
什么是引擎?
引擎(Engine)是开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能。
什么是MySQL 引擎?
简单来说:MySQL存储引擎就是指表的类型以及表在计算机上的存储方式。
不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可以根据数据的特点来选择不同的存储引擎。
二、MyISAM和InnoDB特点
InnoDB是事务型数据库的首选引擎,是目前MYSQL的默认事务型引擎,是目前最重要、使用最广泛的存储引擎。支持事务安全表(ACID),支持行锁定和外键。
MyISAM是MySQL 的引擎之一,不支持数据库事务,也不支持行级锁和外键。
如何选择InnoDB和MyISAM:
1.InnoDB:如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交和回滚。
2.MyISAM:读取数据快,空间和内存使用比较低。如果表主要是用于读取记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
三、InnoDB和MyISAM的区别
1. InnoDB是MySQL默认的存储引擎。
2.只有 InnoDB 支持事务,MyISAM不支持事务。
3.MyISAM不支持行级锁和外键, InnoDB支持。
4.InnoDB表的大小更加的大,用MyISAM可省很多的硬盘空间。
5.InnoDB 引擎的索引和文件是存放在一起的,找到索引就可以找到数据,是聚簇式设计。
6.MyISAM 引擎采用的是非聚簇式(即使是主键)设计,索引文件和数据文件不在同一个文件中。
总结
MySQL存储引擎就是指表的类型以及表在计算机上的存储方式。选择一个合适的存储引擎是一个比较复杂的问题。每种存储引擎都有自己的优缺点,不能笼统地说谁比谁好,需要辩证的来对待。