二级域名分发网站开发经历
更新: 2025/9/22 字数: 0 字 时长: 0 分钟
★ GitHub:970thunder/DomainDNS ★
求个star吧( ̄︶ ̄)↗
数据库优化
索引优化
核心在于使用最左前缀匹配,查询条件命中索引的从左到右前缀越长,利用度越高,顺序很重要,WHERE、JOIN、ORDER BY 中最常用、选择性最高的列放左边,尽量让一个复合索引同时覆盖过滤、连接、排序
设计示例: 用于“某用户指定类型流水按时间倒序分页”
sql
CREATE INDEX idx_points_user_type_time ON points_transactions(user_id, type, created_at);user_id 选择性高,常作过滤维度
type 次要过滤
created_at 负责排序/范围,放最后
覆盖索引
主要是将查询需要的列全部在索引里,避免“回表”,一般用于读多写少、热点小表、列表页轻载字段
- 示例:用户列表只显示 id、username、points,就可加轻量覆盖索引
sql
CREATE INDEX idx_users_list ON users(role, created_at, id, username, points);查询优化
只取必要列:杜绝无脑 SELECT *
分页优化:大偏移量分页用“游标/锚点”
sql
-- 传统分页(偏移大时慢)
SELECT id, full_domain FROM user_domains ORDER BY id DESC LIMIT 20 OFFSET 100000;
-- 游标分页
SELECT id, full_domain FROM user_domains WHERE id < ? ORDER BY id DESC LIMIT 20;- 统计缓存:Dashboard 统计(总数/趋势)可定期预计算进 Redis,前端一次性拿
多级缓存
内存(Caffeine)→ Redis → DB
热点小数据(系统设置、枚举、配置)可用本地缓存提高极致读性能
本地缓存要有短 TTL 或基于版本号的主动失效
典型读取流程s 先查本地 Caffeine;miss 再查 Redis;再 miss 读 DB 并回填两级缓存