【学习笔记】InnoDB 和 MYISAM 的区别

InnoDB 和 MYISAM 的区别

InnoDB 和 MYISAM 是 数据库引擎,也就是数据库表的类型

  • INNODB 现在默认使用

  • MYISAM 早些年默认使用

 

INNODB 和 MYISAM 的区别

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

 

  • 事务支持:两条sql同时执行,一条成功,一条不成功,那么这段代码还是会失败。

    事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。一般而言:一段程序中可能包含多个事务。(说白了就是几步的数据库操作而构成的逻辑执行单元

  • 数据行锁定:假设有两条sql去查同一张表,需要先锁住这张表,使这两条sql逐个去查,MYISAM就是表锁,而INNODB是行锁,只锁那一行记录

  • 全文索引:在一篇文章里找某一个字段

 

 

各自的好处:

  • MYISAM 节约空间,速度较快

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

 

 

在物理空间存在的位置

所有数据库文件都存在data文件夹下

每个数据库都对应一个文件夹,在文件夹中都是一些文件,所以本质还是文件存储

MySQL引擎在物理文件上的区别

  • INNODB

    • *.frm

    • 上一级目录的 ibdata1 文件

image-20220928164216628

image-20220928164252069

  • MYISAM

    • *.frm 表结构的定义文件

    • *.MYD 数据文件(data)

    • *.MYI 索引文件(index)

image-20220928164407788

 

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

CHARSET=utf8

不设置的话,默认为Latin1,不支持中文

如果不设置,可以在my.ini 文件中配置默认编码

character-set-server=utf8

但是不建议这样设置,因为如果一旦把代码换到另外的电脑,那台电脑没有设置,就会出错。

所以我们在创建表的时候就给他设置字符编码

posted @ 2022-09-28 16:49  GrowthRoad  阅读(44)  评论(0编辑  收藏  举报