轻松做到数据库优化的方法

一、数据库优化思路:

1、减少磁盘扫描数据范围

2、减少从磁盘返回的数据量

3、减少交互次数

4、减少资源开销

5、增加资源

二、详细介绍

1、减少磁盘扫描数据范围;数据存储在磁盘上或者SSD上,扫描范围越大,耗时也会越多;所以这时如果查询SQL里面条件上有索引,索引作用就是减少数据扫描范围;所以正确的创建索引对数据库优化常用方法。

2、减少返回数据量;在查询SQL中明确写出必要的字段,避免用*号代替;select 字段1,字段2 from T1;

3、减少交互次数;提交时尽量使用批量提交方法,如10000笔提交一次,比1笔提交一次快10倍以上;

4、减少资源开销;尽量减少使用函数,函数也可能导致scan不下推,导致性能很慢;

5、增加资源;这点好理解,增加内存大小,增加cpu,把传统磁盘换成SSD固态硬盘;

以上是数据库优化思路,有了这个思路,优化的时候就有方向,不会丈二和尚摸不着头脑了。

三、具体的方法

1、查询慢SQL;每个数据库都有提供查询耗时最大的SQL的方法,Oracle举例:可以同步视图v$sqlarea查询出耗时最大的SQL;

2、找到慢SQL后,分析SQL的执行计划是否按照你想的路径去执行,一般使用explain SQL得到SQL的执行计划;可以看出SQL是否按索引、jion、scan是否下推、统计信息是否有效等信息,一般能判断出慢的原因;

3、收集表或者表列的统计信息analyze,目前大多数数据库都是基于成本来生成最优的路径,统计信息至关重要。表和表列的统计信息会顺着数据的平凡增删改后,信息不准确,导致最优路径失效,这时就需要定期进行统计信息更新;

4、数据库的一些参数也会影响SQL的快慢,如并发数,设置100,实际200,这时就有100在阻塞导致阻塞耗时过长;

5、资源是否被锁,也会影响SQL执行效率,所以需要查看当时的锁资源是否处于等待状态;

6、分析底层;目前市面上分布式数据库有行存储和列存储,就是所谓的行表和列表,行方适合增删改,列表适合大量的查询;

7、优化必须是系统整体的优化,结合应用系统一起进行优化,应用系统开发人员一般情况只会考虑SQL是否满足他业务需求,很少考虑这个SQL是否有其他的优化写法;这时就需要数据库DBA和给应用开发人员一起对业务逻辑的SQL进行优化;本人经验一个交易原本有500条SQL,最后优化到200条SQL。

四、哪些SQL不走索引

1、不等于、not in、字段加函数、like ‘%*’、is null、字段隐式转换(字符转换为数值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值