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

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区别以及数据库存储引擎的选择_第1张图片
可以看到,当前默认存储引擎是MyLSAM可以修改临时默认存储引擎

SET default_storage_engine = InnoDB;

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

SHOW VARIABLES LIKE 'default_storage_engine%';

当前默认存储引擎是InnoDB,如下图
在这里插入图片描述
但是当再次重启客户端时,默认存储引擎仍然是 MyLSAM

3.1 如何选择存储引擎

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

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

你可能感兴趣的:(后端)