数据库性能优化方法

本文转载自:https://my.oschina.net/u/3145136/blog/856248
由于对oracle不是很熟悉,所以只是大概摘录了方法,具体可以参考上面链接中的博文。

数据库访问优化法则

为了快速找到SQL的性能瓶颈点,我们也需要了解我们计算机系统的硬件基本性能指标,下图展示的当前主流计算机性能指标:
在这里插入图片描述
从图上可以看到基本上每种设备都有两个指标:

  • 延时(响应时间):表示硬件的突发处理能力;

  • 带宽(吞吐量):代表硬件持续处理能力。

从上图可以看出,计算机系统硬件性能从高到代依次为:

CPU——Cache(L1-L2-L3)——内存——SSD硬盘——网络——硬盘

根据数据库知识,我们可以列出每种硬件主要的工作内容:

  • CPU及内存:缓存数据访问、比较、排序、事务检测、SQL解析、函数或逻辑运算;
  • 网络:结果数据传输、SQL请求、远程数据库访问(dblink);
  • 硬盘:数据访问、数据写入、日志记录、大数据量排序、大表连接。

根据当前计算机硬件的基本性能指标及其在数据库中主要操作内容,可以整理出如下图所示的性能基本优化法则:
在这里插入图片描述
这个优化法则归纳为5个层次:

1、减少数据访问(减少磁盘访问)

2、返回更少数据(减少网络传输或磁盘访问)

3、减少交互次数(减少网络传输)

4、减少服务器CPU开销(减少CPU及内存开销)

5、利用更多资源(增加资源)

由于每一层优化法则都是解决其对应硬件的性能问题,所以带来的性能提升比例也不一样。传统数据库系统设计是也是尽可能对低速设备提供优化方法,因此针对低速设备问题的可优化手段也更多,优化成本也更低。我们任何一个SQL的性能优化都应该按这个规则由上到下来诊断问题并提出解决方案,而不应该首先想到的是增加资源解决问题。

以下是每个优化法则层级对应优化效果及成本经验参考:

优化法则性能提升效果优化成本
减少数据访问1~1000
返回更少数据1~100
减少交互次数1~20
减少服务器CPU开销1~5
利用更多资源1~10
减少数据访问

方法有:

  • 建立索引
    索引是个双刃剑,需要合理的使用索引。
  • 只通过索引访问数据
  • 优化SQL执行计划
返回更少的数据

方法有:

  • 数据分页处理
  • 只返回需要的字段
减少交互次数

方法有:

  • 批量DML
  • In List
  • 设置Fetch Size
  • 使用存储过程
  • 优化业务逻辑
  • 使用ResultSet游标处理记录
减少数据库服务器CPU运算

方法有:

  • 使用绑定变量
    绑定变量是指SQL中对变化的值采用变量参数的形式提交,而不是在SQL中直接拼写对应的值。
  • 合理使用排序
  • 减少比较操作
利用更多的资源

方法有:

  • 客户端多进程并行访问
  • 数据库并行处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值