数据库问题汇总

原创
2021/12/15 09:47
阅读数 42
  • 为什么mysql字符集需要使用utf8mb4

utf8编码可能是1,2,3,4个字节,但是mysql的utf8的utf8编码只能支持最多3个字节的数据,而emoji表情字符是4个字符,如果直接采用utf8编码数据的数据库中插入会导致报错;
1.查看字符编码设置 show variables where variable_name like 'character_set_%' or variable_name like 'collation%'
2.修改table的字符编码和collate设置 ALTER TABLE t_log_action_0 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
更改MySQL数据库的编码为utf8mb4

  • varchar(20)能存储多少个汉字

可以存储20个汉字,varchar是可变字长,最多存储65536个字符长度;varchar存储的是字符个数不是字节个数
在utf8中一个汉字占用3个字节,在gbk中一个汉字占用2个字节

  • mysql的索引机制

分为主键索引和非聚簇索引(单列索引,覆盖索引等),采用的是B+树的设计,非主键索引查找需要找到数据主键后,回报,即两次查找;
设计索引的几点注意事项:1.主键尽可能的有序 2.创建合适的索引 3.杜绝索引冗余,采用从左匹配的规则4.select的时候尽可能准确,只查询需要的字段 4.善用explain进行分析,确保数据库的索引设置合理得当

  • mysql压缩机制也可以考虑

如一些日志,报警数据等,可以减少磁盘io的损耗,提高性能,对数据影响不大

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部
返回顶部
顶部