MySQL存储引擎 InnoDB 与 MyISAM 的区别

**功能/**特性

InnoDB

MyISAM

全文检索(FULLTEXT**)**

不支持

支持

索引

必须包含一个主键索引或自增列索引,自增列索引可加入其它字段。

可以没有索引

事务

支持

不支持

存储

结构定义文件(Schema),数据文件(Data),

索引文件(Index)

数据文件、日志文件。InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB

存储体积

较大

较小

性能(读)

一般

大量的SELECT操作性能更好

性能(写)

INSERT/UPDATE 性能要好,DELETE FROM table是逐行删除。

外键

支持

不支持

表行数

select count(*) from table 时扫描表进行统计。

select count(*) from table,直接从系统数据库中读出此表行数。有查询条件时更InnoDB一样要扫描表。

有行锁(locking on row level)与无锁读取机制(non-locking read in SELECTs),MySQL不能确定要扫描的范围时,会锁全表。

只有表锁

LOAD TABLE
FROM MASTER

无效

有效

内存要求

较高

较低

磁盘IO****要求

较高

较低

ACID

在读取作频繁,写操作较少,并且对数据表之间关系简单时采用MyISAM比较好,如:CMS

在写操作频繁,读操作性能要求不苛刻的情况下或数据表之间关系繁杂、需要级联更新、删除时采用InnoDB,如:CRM、交易系统

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid