2026-03-28 星期六
数据库
加索引:KEY "索引名字" ("字段名字")
科普知识点
为什么说 IO 非常耗时?
- 数量级碾压式差距:CPU 指令 / 内存访问为纳秒 (ns) 级,磁盘 IO 为毫秒 (ms) 级(1ms=100 万 ns),一次磁盘 IO ≈ 数百万次 CPU 运算,网络 IO 延迟更高
- 阻塞造成 CPU 浪费:IO 等待会阻塞线程,导致 CPU 空转,系统吞吐量暴跌
- 等等等等(还有两条,感觉没必要记)
高频降 IO 优化手段:
- 批量操作:批量查询 / 插入,减少 IO 往返 多级缓存:Redis / 本地缓存,避免重复 IO
- 异步非阻塞:协程 / 异步框架,规避线程阻塞 ?零拷贝技术:减少内核与用户态间的数据拷贝
- 索引优化:降低数据库 IO 开销 连接复用:连接池,规避频繁建连 / 断连损耗
- 请求合并:减少网络 IO 往返次数
减少 IO 一定能提升系统性能吗?
绝大多数场景下,减少 IO 可显著提升系统性能。避免:(不理解,目前知道有这种情况就行了)
- 内存占用暴涨 锁竞争急剧加剧 业务逻辑复杂度飙升
- 单次 IO 体量过大,长尾延迟严重 缓存一致性维护成本过高
高频踩坑反例:
全量加载替代分批查询:一次性拉取全表 / 全量数据到内存
接口强行合并:为减少前端网络请求,把多个独立接口合并成超级接口
重计算替代 IO:把数据库过滤、聚合逻辑搬到本地代码执行,全量拉取数据后循环处理,CPU 开销远超节省的 IO 时间
过度批量攒写:为降低写库次数强行攒数据,批量更新
过度多层缓存 微服务不合理数据冗余
正确优化思路:
- 优先砍掉无效、重复 IO
- 严控单次 IO 的体量,拒绝为了少一次 IO,搞超大查询 / 超大包传输
- 优先用异步化、合理批量的方式优化 IO,而非粗暴减少 IO 次数
- 缓存只针对热点数据,严控缓存粒度,拒绝大而全的全量缓存
- 优先优化慢 IO(如慢 SQL),而非盲目减少本就很快的 IO 次数
经验总结
Navicat 可以给数据表建文件夹分组!!!
- <img src="https://gitee.com/kualk/pic-go/raw/master/imgs/image-20260328150110784.png" alt="image-20260328150110784" style="zoom: 67%;" />
软件开发:开发的时候按功能分模块。设计的时候按抽象分模块。
xxx 功能/模块(权限模块,用户模块,头衔模块等。针对某个类别操作的集合,通常有一个核心的操作对象)
xxx 系统(标签系统,权限系统,配置系统,不算一个功能,但是需要单独设计,算是地基)
提示词:
先写框架,再补充必要内容。更方便迁移,调试。
重要内容放 ”开头“ 跟 ”结尾“,权重更大,更不容易忘。
【项目背景】 【任务背景】 【设计第一版】 【设计第二版】 【任务】 以第二版为主,整理为一份。规范语言描述。保证输出内容能够直接提交。
项目思路:开发时,先做顶层设计。不管细节。先捋清楚要做哪些方面的事情。把大事情拆成小事情一件一件做。
- 例如:设计标签系统 —> 1. 标签场景、数据特征 2. 设计数据表结构 3. 填充标签内容 4. 整理设计文档 5. 提取 SQL 代码
git bash 小技巧:将自定义指令目录添加到环境变量,即可快速打开。
- 可以在当前目录下执行自定义的快捷指令启动 git bash 并进入来到的目录。文件名就是对应的指令
# 快速启动 git-bash 的指令,并且 cd 到当前的目录
@echo off
start "" "C:\Program Files\Git\git-bash.exe" --cd=%cd%<div style="display: flex"> <img src="https://gitee.com/kualk/pic-go/raw/master/imgs/image-20260328130240847.png" style="width:50%;" /> <img src="https://gitee.com/kualk/pic-go/raw/master/imgs/image-20260328130313289.png" style="width:50%;" /> </div>
- 向 AI 问问题的时候,可以角色扮演地问问题。让 ai 即当老师,又当学生。讨论问题。反问,深究。苏格拉底示讨论。提前写好提示词,只需要更换讨论的问题主题就行了。