MySQL 运维的那些事,真的是踩坑之后才懂门道。主键怎么选、索引怎么建、字段类型怎么配,都是门大学问。像用INT AUTO_INCREMENT
当主键,写入快、分裂小,适合归档库。但别忘了,如果读操作多,还是得按业务需求调。联合索引也是个亮点,字段顺序不对,索引就白建了——配合ORDER BY
优化效果挺。
还有字段类型的选取,TINYINT 省空间又快,适合枚举型数据。反观TEXT
、BLOB
,动不动就 off-page 存储,一查就拖慢性能,最好能拆出去单独建表。TIMESTAMP 和 DATETIME?嗯,早期用前者省空间,现在选哪个看你需求,反正 MySQL 5.6.5 之后差别不大。
JOIN 优化也别忽略,MySQL 默认选驱动表,有时候不靠谱。用STRAIGHT_JOIN
手动指定一下,性能翻倍。比如右表小的时候反过来驱动,结果还真不错。运维不只是调 SQL,监控、备份、恢复都得跟上。慢查询日志、QPS、TPS 这些指标别光看,得会用。
如果你正在维护一个 MySQL 数据库,不妨看看MySQL 运维技术手册,内容比较系统,适合查缺补漏。另外几个也蛮实用:Oracle 里的 TIMESTAMP可以类比参考;主键清理方法也能帮你整理思路。
哦对了,如果你常碰到字段选型或索引设计的疑问,可以把经验积累成小文档,随时翻,挺方便的。