当前位置: 首页 > news >正文

数据库性能优化实战

系列导读:本篇将深入讲解数据库性能优化的核心方法与实战技巧。


文章目录

    • 一、SQL 优化
      • 1.1 慢查询分析
      • 1.2 EXPLAIN 解读
      • 1.3 优化原则
    • 二、索引优化
      • 2.1 索引类型
      • 2.2 索引设计原则
      • 2.3 组合索引示例
    • 三、架构优化
      • 3.1 读写分离
      • 3.2 分库分表
      • 3.3 缓存策略
    • 四、连接池优化
      • 4.1 HikariCP 配置
      • 4.2 连接池监控
    • 总结

一、SQL 优化

1.1 慢查询分析

-- 开启慢查询日志SETGLOBALslow_query_log=ON;SETGLOBALlong_query_time=1;-- 分析慢查询EXPLAINSELECT*FROMordersWHEREuser_id=100;

1.2 EXPLAIN 解读

字段说明
type访问类型(ALL/index/range/ref/const)
key使用的索引
rows扫描行数
Extra额外信息

1.3 优化原则

-- 避免 SELECT *SELECTid,nameFROMusersWHEREid=1;-- 避免函数操作-- 差SELECT*FROMordersWHEREDATE(create_time)='2024-01-01';-- 好SELECT*FROMordersWHEREcreate_time>='2024-01-01'ANDcreate_time<'2024-01-02';-- 避免 OR-- 差SELECT*FROMusersWHEREname='张三'ORage=20;-- 好SELECT*FROMusersWHEREname='张三'UNIONSELECT*FROMusersWHEREage=20;-- 分页优化-- 差SELECT*FROMordersLIMIT1000000,10;-- 好SELECT*FROMordersWHEREid>1000000LIMIT10;

二、索引优化

2.1 索引类型

类型说明
主键索引唯一、非空
唯一索引唯一
普通索引加速查询
组合索引多列索引
全文索引文本搜索

2.2 索引设计原则

1. 选择区分度高的列 2. 遵循最左前缀原则 3. 覆盖索引减少回表 4. 控制索引数量 5. 避免冗余索引

2.3 组合索引示例

-- 组合索引CREATEINDEXidx_user_status_timeONorders(user_id,status,create_time);-- 命中索引SELECT*FROMordersWHEREuser_id=1;SELECT*FROMordersWHEREuser_id=1ANDstatus=1;SELECT*FROMordersWHEREuser_id=1ANDstatus=1ANDcreate_time>'2024-01-01';-- 不命中索引SELECT*FROMordersWHEREstatus=1;SELECT*FROMordersWHEREcreate_time>'2024-01-01';

三、架构优化

3.1 读写分离

# ShardingSphere 配置spring:shardingsphere:datasource:names:master,slavemaster:type:com.zaxxer.hikari.HikariDataSourcejdbc-url:jdbc:mysql://master:3306/mydbslave:type:com.zaxxer.hikari.HikariDataSourcejdbc-url:jdbc:mysql://slave:3306/mydbrules:readwrite-splitting:data-sources:myds:write-data-source-name:masterread-data-source-names:slave

3.2 分库分表

# 分片配置spring:shardingsphere:rules:sharding:tables:t_order:actual-data-nodes:ds${0..1}.t_order_${0..1}table-strategy:standard:sharding-column:order_idsharding-algorithm-name:order-inline

3.3 缓存策略

// 缓存穿透防护publicUsergetUser(Longid){Stringkey="user:"+id;Useruser=redisTemplate.opsForValue().get(key);if(user!=null){returnuser;}// 防止缓存穿透if(redisTemplate.hasKey("null:"+id)){returnnull;}user=userMapper.selectById(id);if(user!=null){redisTemplate.opsForValue().set(key,user,1,TimeUnit.HOURS);}else{// 空值缓存redisTemplate.opsForValue().set("null:"+id,"",5,TimeUnit.MINUTES);}returnuser;}

四、连接池优化

4.1 HikariCP 配置

spring:datasource:hikari:minimum-idle:10maximum-pool-size:50idle-timeout:600000max-lifetime:1800000connection-timeout:30000pool-name:OrderHikariPool

4.2 连接池监控

// 获取连接池状态HikariDataSourcedataSource=(HikariDataSource)applicationContext.getBean(DataSource.class);HikariPoolMXBeanpool=dataSource.getHikariPoolMXBean();log.info("活跃连接: {}",pool.getActiveConnections());log.info("空闲连接: {}",pool.getIdleConnections());log.info("等待线程: {}",pool.getThreadsAwaitingConnection());

总结

SQL 优化:慢查询、EXPLAIN、优化原则
索引优化:类型、设计原则、组合索引
架构优化:读写分离、分库分表、缓存
连接池优化:HikariCP 配置、监控


作者:刘~浪地球
更新时间:2026-04-17

http://www.jsqmd.com/news/658200/

相关文章:

  • 大语言模型会在“教学”中夹带“私货”
  • Claude API 怎么用?2026 实测 3 种接入方案,手把手配到能跑
  • 学术AI写作的“灰犀牛”来了:2026奇点大会预警的3类隐形学术不端陷阱,及配套的CrossCheck+LLM双验签工作流
  • 从‘心跳’到‘急停’:图解CANopen CIA 402状态机,让你的电机控制逻辑不再混乱
  • Gerber文件防泄密?手把手教你用Altium Designer 20规则实现过孔全自动盖油
  • 如何在按需导入类时动态执行其内部代码
  • Claude Opus 4.7 正式发布:Anthropic 在推理模型上的又一次突破
  • 从自动驾驶到AI医生:拆解5个真实案例,看多模态融合如何解决行业难题
  • Cloudflare 电子邮件服务开启公开测试版,为智能体打造全功能双向通信平台
  • 从HTB CozyHosting靶机渗透实战看SpringBoot应用安全与权限提升
  • 如何完全掌控你的微信聊天记录?WeChatMsg终极解决方案指南
  • 适合Bootstrap初学者的五个开源实战项目
  • PEG-Chit-NH₂-Fe₃O₄ NPs,Chitosan-PEG-NH₂修饰四氧化三铁纳米颗粒,反应特点
  • Vant UI 实战:Tab标签页、List列表和PullRefresh下拉刷新在移动端H5项目中的避坑指南
  • 浙大PTA C语言实验题保姆级通关攻略:从Hello World到链表逆置的避坑心得
  • 不同于杨立昆、李飞飞空间智能的人机环境系统智能空间
  • 告别万用表!用INA260和RT-Thread Sensor框架,5分钟搞定嵌入式系统功耗精准监测
  • PEG-HA-COOH-Fe₃O₄ NPs,聚乙二醇-透明质酸-羧基修饰四氧化三铁纳米颗粒,化学结构特点
  • ConvLSTM核心代码逐行解读:从PyTorch实现到自定义数据集加载的避坑指南
  • 从零封装一个高复用Avue-Echarts组件:以折线图为例的完整开发流程
  • C语言:字符数组和字符串指针
  • Centos 7安装python3
  • 别再死记硬背SPI时序了!用Arduino+逻辑分析仪5分钟搞懂CPOL/CPOL四种模式
  • 汇川PLC H5U与 Easy523进行MODBUS-RTU(485)通信
  • centos 配置国内yum源2026新
  • 2026年4月重庆GCS开关柜市场深度解析与重庆宇轩机电设备有限公司价值评估 - 2026年企业推荐榜
  • 3个元数据管理难题,如何用可视化工具优雅解决?
  • AntiDupl.NET:开源图片去重工具,智能清理你的数字存储空间
  • Vue3.0 流程编辑器实战:从零构建一个轻量级、可插拔的流程图设计器
  • Pixel Aurora Engine惊艳效果:宽标题布局+醒目文字的大气感呈现