mysql使用注意

1. utf-8mb4和排序规则

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。

最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。

mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。(emoji)

字符排序:

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果,A和a不一样
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

utf8_unicode_ci与utf8_general_ci的区别:utf8_general_ci校对速度快,但准确度稍差。utf8_unicode_ci准确度高,但校对速度稍慢。utf8_general_ci也适用与德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。 

2. int(10),tinyint(3)

int(M) 在 integer 数据类型中,M 表示最大显示宽度。

在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

说白了,除了显示给用户的方式有点不同外,int(M) 跟 int 数据类型是相同的。

如果int的值为10,int(10)显示结果为0000000010,int(3)显示结果为010,就是显示的长度不一样而已,都是占用四个字节的空间。

3. 修改mysql默认连接时长

mysql连接的空闲时间超过8小时后 MySQL自动断开该连接

show global variables like 'wait_timeout';
## 设置成10小时;
set global wait_timeout=36000;

 

参考:

1. MySQL中锁机制超详细解析

2. Innodb中的事务隔离级别和锁的关系

posted @ 2020-08-04 15:14  yuxi_o  阅读(123)  评论(0编辑  收藏  举报