MySQL设计经验分享
INT
等整型不要采用无符号的,计算增加会减少时候如果是负数会报错。- 自增用8个字节的
BIG INT
,而不要用四个字节INT
,自增在MySQL 8.0
前都会有回溯问题。 - 字符集用
UTF8MB4
字符编码。 - 日期类型用
DATETIME
,精确到毫秒用DATETIME(6)
,不建议使用INT
或TIMESTAMP
。 - 用
JSON
存储非频繁更新的结构化数据,比如用户标签等。 - 每张表一定要有一个主键,核心表要有全局唯一字段(比如雪花算法生成
id
或有序UUID
)作为主键。 - 对日志,监控类的表,可以使用压缩设计,提升存储效率。推荐使用透明页压缩。
- 敏感字段要加密,动态盐+非固定加密算法(
AES256
等)+多轮加密。 Mysql
中通过KV
方式访问表中数据,若只是简单的SET
和GET
,可以转成Memcached
的KV
方式,减少开销,提升50%左右性