KKB:mysql数据库表引擎与字符集utf8mb4

存储引擎

存储引擎以前又叫做表处理器,它的功能就是接受上层传下来的指令,然后对表中的数据进行提取或写入操作

 

 

MyISAM和InnoDB表引擎的区别

 

1、事务支持

myisam 不支持 事务,innoDB支持

 

2、存储结构

MyISAM:每个MyISAM在磁盘上存储成三个文件

  • .frm文件存储表的结构
  • .MYD文件存储数据
  • .MYI文件存储索引

InnoDB:主要分为两种文件进行存储

  • .frm 存储表结构
  • .ibd存储数据和索引(也可能是多个.ibd文件,或者是独立的表空间文件)

区别:数据和索引是分开存储还是混合存储

 

 

3、表锁差异

后面补充,这里只简单说一下区别

MyISAM:只支持表级锁

InnoDB:支持事务和行级锁,InnoDB的行锁是基于索引建立的,如果索引失效或者没有使用索引,那么行锁会升级为表锁

 

4、表主键

MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址

InnoDB: 如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键

 

5、表的具体行数

MyISAM:保存有表的总行数,使用select count() from table;会直接取出该值

InnoDB:如果没有保存表的总行数(只能遍历),消耗比较大,但是加了where条件后,MyISAM和innoDB处理的方式都一样

 

6、CRUD操作

MyISAM:如果执行大量的select,选择MyISAM

InnoDB:如果你的数据执行大量的insert或update,出于性能考虑,应该使用InnoDB

实际上,我们都该使用InnoDB

 

7、外键

MyISAM:不支持

InnoDB :  支持

 

 

Mysql中的utf8和utf8mb4

  我们上边说 utf8 字符集表示一个字符需要使用 1 4 个字节,但是我们常用的一些字符使用 1 3 个字节就可以表示 了。而在 MySQL 中字符集表示一个字符所用最大字节长度在某些方面会影响系统的存储和性能,所以设计 MySQL 的大叔偷偷的定义了两个概念:
 
  • utf8mb3 :阉割过的 utf8 字符集,只使用13个字节表示字符。
  • utf8mb4 :正宗的 utf8 字符集,使用14个字节表示字符。

在mysql中utf8是utf8mb4的别名,所以之后在mysql中提到utf8就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,那请使用 utf8mb4

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值