mysql存储引擎的基本介绍
引擎(Engine)是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能,或利用其辅助程序的运转。一般而言,引擎是一个程序或一套系统的支持部分。常见的程序引擎有游戏引擎,搜索引擎,杀毒引擎等。
mysql的表可以有不同的存储引擎,分为两大类:
- 事务安全性存储引擎
BDB,InnoDB - 非事务安全性存储引擎
Myisam, memory - 查看存储引擎
show engines;
常用数据存储引擎的比较区别(面试多问)
(1) MyISAM的存储引擎的介绍
- 执行速度快.
- 不支持事务,不支持外键
- 会产生碎片,需要定时进行optimize table 表名[]
- 如果我们的表不需要事务,则考虑使用MyISAM
MyISAM:插入数据快,空间和内存使用比较低,搜索查询。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低也可以使用。(表锁,全文搜索 )
(2) InnoDB存储引擎【推荐,高并发】
6. 并发性好.
7. 支持事务,支持外键
8. 适合数据修改或者添加的系统
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。行锁
(3) Memory 存储引擎
- 数据在内存中
- 执行速度快.
- 当重启mysql后,数据丢失了/表结构还在.
- memory 表,可以优化项目,可以存放经常查询或者变化的数据,而且这些数据不需要入库,比如(用户的状态[离线,在线,发呆]) .
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
总结
1,同一个数据库也可以使用多种存储引擎的表。
2,如果一个表要求比较高的事务处理,即高并发情况下[在短时间内处理大量请求]使用InnoDB会比较好。
3,这个数据库中可以将查询要求比较高的表选择MyISAM存储,如果是删除的话,myisam会删除比较快,innodb会一行一行删除。
4,如果该数据库需要一个用于查询的临时表,需要使用大量的查询语句[不限定时间来执行],尤其是不使用select * 的情况下,myisam会比较好,适合于中小型网站。
如何修改表的存储引擎
ALTER TABLE `表名` ENGINE = 储存引擎;