- 为什么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 TABLEt_log_action_0
CONVERT TO CHARACTER SETutf8mb4
COLLATEutf8mb4_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的损耗,提高性能,对数据影响不大