MySQL——关于数据库引擎 INNODB 和 MYISAM 的区别

494 阅读2分钟

「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。

InnoDB是MySQL的数据库引擎之一(最新版本5.7已经设置为默认数据库引擎),为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。

以上来自百度百科。

-- 主要用的
/*
INNODB  默认使用
MYISAM  早些年使用
*/

INNODBMYISAM
事务支持支持不支持
数据行锁定支持不支持
外键约束支持不支持
全文索引不支持支持
表空间大小较大(约为MYISAM两倍)较小

事务支持:假设两个数据库同时执行,要么都成功,要么都失败

数据行锁定:INNODB是数据行锁,MYISAM是数据表锁,因此INNODB的效率比MYISAM高

MYISAM:节约空间,速度较快

INNODB:安全性高,支持事务的处理,多表多用户操作

在数据库物理空间存在的位置

所有的数据库文件都存在data目录下,本质还是文件的存储,一个文件夹对应一个数据库

MYSQL引擎在物理文件上存储的区别

  • INNODB 在数据库表中只有一个.frm文件 以及上级目录下的ibdata1文件

在这里插入图片描述

在这里插入图片描述

  • MYISAM对应的文件
    • .frm文件:表结构的定义文件
    • .MVD文件:数据文件
    • MYI文件:索引文件 在这里插入图片描述

设置数据库表的字符集编码

CHARSET=utf8   -- 在语句最后加上 

不设置的话,会是MYSQL默认的字符集编码Latin1(不支持中文)

还可以在my.ini文件中配置默认的编码

character-set-server=utf8

但不推荐使用,因为如果你的数据库拿到别人的电脑上使用,但他没有配置的话,就会出现问题。