欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySql数据类型——char和varchar区别以及数据库存储引擎的选择

程序员文章站 2022-04-11 17:06:58
...

1.CHAR 和 VARCHAR 之间的区别

  • CHAR 是固定长度字符,VARCHAR 是可变长度字符。
  • CHAR 会自动删除插入数据的尾部空格,VARCHAR 不会删除尾部空格。

CHAR 是固定长度,所以它的处理速度比 VARCHAR 的速度要快,但是它的缺点就是浪费存储空间。所以对存储不大,但在速度上有要求的可以使用 CHAR 类型,反之可以使用 VARCHAR类型来实现。

2.存储引擎对于选择 CHAR 和 VARCHAR 的影响

  • 对于 MyISAM 存储引擎,最好使用固定长度的数据列代替可变长度的数据列。这样可以使整个表静态化,从而使数据检索更快,用空间换时间
  • 对于InnoDB存储引擎,最好使用可变长度的数据列,因为 InnoDB 数据表的存储格式不分固定长度和可变长度,因此使用 CHAR 不一定比使用 VARCHAR 更好,但由于 VARCHAR 是按照实际的长度存储,比较节省空间,所以对磁盘 I/O 和数据存储总量比较好。

3.数据库存储引擎

# 查询当前数据库的存储引擎
SHOW ENGINES;

MySql数据类型——char和varchar区别以及数据库存储引擎的选择
可以看到,当前默认存储引擎是MyLSAM可以修改临时默认存储引擎

SET default_storage_engine = InnoDB;

再次查看当前默认存储引擎

SHOW VARIABLES LIKE 'default_storage_engine%';

当前默认存储引擎是InnoDB,如下图
MySql数据类型——char和varchar区别以及数据库存储引擎的选择
但是当再次重启客户端时,默认存储引擎仍然是 MyLSAM

3.1 如何选择存储引擎

下面是常用存储引擎的特性比对
MySql数据类型——char和varchar区别以及数据库存储引擎的选择

  • 如果应用主要以读取和写入为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择 MyISAM 存储引擎是非常适合的(Web 数据仓储
  • 如果应用主要以读取和写入为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择 MyISAM 存储引擎是非常适合的(计费系统、财务系统
  • 数据比较少,且需要进行快速访问,则适合使用 MEMORY 存储引擎
相关标签: 后端 mysql