Mysql的个人习惯
- 一定要有主键
一般使用的innodb引擎中会根据主健创建聚簇索引,这种方式会使得数据排列的更连续,减少随机IO
- 关于数据长度
考虑数据范围,够用的前提下,数据长度是越简单越好,数据类型是越小越好。
- 尽量避免使用TEXT/BLOB类型
data page 默认是16kb,每行数据长度超过8kb就会出现data page 分裂,这样就会有更多的离散IO。如果项目中必须有这样的字段存在,建议使用单独的表保存,不到用的时候不去查询。
- 每个表增加version create_time update_time create_by update_by is_del 通用字段
目的是好排查问题
- 创建高效索引
各个表尽量使用唯一索引或者主健进行关联;不要创建重复索引;字段没有离散度的不要创建索引;不要等到数据量巨大的时候在线上创建索引;
- 尽量写简单的查询
检查的查询会让mysql在查询优化阶段节省很多时间,对于执行引擎去检索的时候才会更好的使用索引查询。越复杂的查询越难控制索引的使用;除此之外,如果简单查询出来的数据是变更不频繁的数据,可以使用缓存来减少查询次数(这里的缓存不是mysql服务自带的缓存)
- 禁用mysql自带的缓冲
很鸡肋的技能。如果用了它的缓存并且设置的参数很大就占用了内存资源,如果参数设置的很小就会高频出现清理缓存、置换缓存等操作。得不偿失。
- 只查询有用的字段
对于执行引擎来说,无用的字段增加了内存消耗;对于server来说,增加了网络开销。对于应用来说,也是占用无效的内存。
- 主链路的sql上线前自己explain
看看是否使用了文件排序、临时表、有没有全表扫描
本文来自博客园,作者:Eular,转载请注明原文链接:https://www.cnblogs.com/euler-blog/p/18600453
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下