数据库性能问题,常常是困扰DBA高效运维的难题之一。如何多角度地帮助DBA,找到“数据库慢”的原因,保证系统高效、稳定、安全地运行?

2021年10月14日,云和恩墨技术顾问,拥有八年Oracle DBA工作经验的段徐斌老师,在墨天轮社区带来了一场《性能优化那些事》的精彩直播分享。

本场直播吸引了800余人观看,朋友们的提问互动也十分积极热情。小编整理了其中的代表性问题,请段老师为大家作答。同时还在文中附上了本次直播课的视频回放、PPT课件下载供大家查看下载。

@

直播资源

回答汇总

Q1.数据库文件增长到100G,前端业务系统运行慢,从数据库角度如何优化?

答:数据库慢主要看等待事件,Bad SQL由于初期数据量少,不凸显。随着海量数据灌注逐步显现甚至拖垮系统。

Q2.如何确定在哪些列创建索引,使得sql语句能高效执行?

答where条件使用频繁切离散性高的列,对于两表连接的字段,应该建立索引,如果经常在某表的一个字段进行Order By 则也可考虑建立索引,where条件后跟多个联合条件离散高的可以建立联合索引。

Q3.您好段老师,请问html版执行计划怎么取?

set long 888888
set longchunk 8888
set pages 0
set lines 8888
set trimout on
spo XXX.html
select dbms_sqltune.report_sql_monitor('SQL_ID',type=>'HTML') from dual;
spo off

Q4.有一个大表,数据量大概有1亿行,已经做过表分区,会定期收集统计表信息,感觉过一段时间之后,相关联该表的查询就会逐渐变慢,像这种问题有什么好的分析和优化方法吗?

答:主要结合这个表关联的SQL的执行计划去优化,要合理设计索引,多表关联看下关联条件及列。

Q5.同一个sql并相同的sql_id有多个执行计划,这个怎么判断走哪个好?

答:这个涉及SQL的绑定执行计划,要结合执行计划来看,首先查看到最优执行计划之后绑定。

Q6. ORACLE 大表到另外一个库,大约1亿数据,用什么方法比较好呀?

答:单表的处理可使用数据泵的方式在非生产期间导入,可以data_only单独处理数据之后再并行建立索引这样更快,之后记得关闭并行就可,也可以整表数据泵导入导出。

Q7. 数据库命令行执行挺快,应用挺慢,是怎么回事?

答:这种比较常见是要结合其他SQL,有存储过程不能单独看一个SQL,应用是多个SQL组成的要结合上下文来看。

Q8.统计信息多久收集一次比较合适?尤其是针对大表,该表属于日常业务表,每日业务期间都会有大量的数据更新(insert和update)。

答:建议可调用窗口,设置非生产或低生产期间进行自动统计,窗口期系统就会自动找数据量变换大的表进行统计信息。也可以找系统维护窗口期手动统计。

Q9. 如何避免回表?

答:如果有可能的话,尽量只在索引上查询,不用回表或者只少量回表,有效的利用索引,减少回表次数,例如count也不要count(*),依据需求count列或者(1)。

Q10. 一台服务器上跑多套数据库时,如何避免一套数据库出现性能问题时影响其他数据库?

答:CPU_COUNT指定了Oracle实例可以同时使用的CPU的数量,数据库本身按需求调优SGA和PGA,对于data盘来说要按实例区分数据文件更为安全。

Q11. initrans等值怎么根据业务进行调整,建议原则是什么。

答:对于跑批update多并行多的表,要调整pct_free和ini_trans,也不是越大越好,这个主要要看等待事件是否有:enq: TX - allocate ITL entry

Q12. 分区表空间的分区索引如何实现和表所在的表空间进行分离?

答:表空间和索引空间要设置分开。建表的时候表的TABLESPACE 参数和索引的TABLESPACE参数可以手动设置。表空间使用权限要赋给相应owner

Q13. 老师,刚才讲的是sqlplus中使用绑定变量,实际使用中比如在PL/SQL中该如何使用绑定变量?

答:Variable 列名 列参数

Exec :列 :=需要的赋值 ,对于使用频率高的SQL,查询列一样的SQL就要绑定变量减少系统压力。

Q14. filesystemio_options值为none 有何影响,在RAC下需要设置为setall吗?

答:RAC也需要设置,none是默认的,要启用异步IO,SETALL就是在文件系统文件上启用异步和直接I/O

Q15. 请问统计信息自动收集不开的话有影响吗?

建议依据生产时间开启自动统计信息窗口,手动统计有大表数据变更大的,不好实时更新统计信息,确保统计信息的准确性将直接影响CBO优化器对于SQL最佳执行计划的判断,影响SQL的执行效率。

Q16. ora-600异常如何分析?

答:这个错误是oracle数据库的内部错误代码,他会因不同的问题触发,有些是致命的例如坏块引发的宕机,有些是需要打新的升级包升级的问题不致命例如[15214],分析的话通过结合600的异常参数日志mos制定处理方法。

Q17. 两张表关联,如何确定驱动表?

答:确定驱动表要结合多个环境,比如大表和小表的连接。比如一张表长度远远大于另一张表,建议从较大的表上驱动。一个表有索引,另一表无索引,无索引的表通常作为驱动表。对于NESTED LOOPS、HASH JOIN、SORT MERGE JOIN方式,驱动表选择较小的表放置右端 ,速度会更快

Q18. 一个数据量在20t左右的数据库,查询表空间使用率时执行非常慢,需要1个小时才能执行出结果,请问老师有没有什么优化的思路?

答:一般是回收站对象太多导致的,清理下回收站purge dba_recyclebin,或者查看dba_extents看慢么?如果查询这个视图慢则和统计信息有关

Q19. 遇到过一个问题,分区表已经分区交换转储过数据,之后表索引和主键也都重建并收集统计信息了,为啥数据量少了反而查询性能上没有太大的提升?

答:查询的性能主要结合执行计划看,数据量不是主要参考条件,设置合适的索引,条件选择,通过执行计划参考回表等参数来看。

Q20. sql监控工具有推荐的嘛?

可以试用恩墨白求恩,专业的数据库监控监控工具,监控数据库各项指标,对于SQL的监控各项都很细致专业。

直播福利

当晚直播间为积极参与互动和问答的朋友送出了精美奖品。恭喜:张怀亮、博、张海 三名用户获得墨天轮周边套装(笔记本+鼠标垫),Billy获得《Oracle性能优化和诊断案例》实体书籍。


墨天轮,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。

关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

如何实现高效运维?来谈谈性能优化那些事(含直播回顾 Q&A)的更多相关文章

  1. 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...

  2. 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》

    优化Linux内核参数/etc/sysctl.conf  sysctl  <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...

  3. saltstack高效运维

    saltstack高效运维   salt介绍 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. salt强大吗 系统管理员日常会 ...

  4. iOS_UITableView性能优化那些事

    UITableView在实际开发中使用频率实在是很高, 因此, UITableView的性能优化是必不可少的, 本文下面就略微总结一下UITableView性能优化那些事. 本文着重介绍具体方法, 原 ...

  5. slatstack高效运维

    一.简介 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. 二.诞生的背景 系统管理员日常会进行大量的重复性操作,例如安装软件, ...

  6. 17,saltstack高效运维

      salt介绍 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. salt强大吗 系统管理员日常会进行大量的重复性操作,例如安 ...

  7. 突破10万高并发的nginx性能优化经验(含内核参数优化)

    写的很好,推荐阅读. 转载:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并 ...

  8. Linux centos7日常运维——监控io性能、free内存命令、ps进程命令、查看网络状态、linux下抓包

    一.监控io性能 Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.其中iostat可以给我们提供丰富的IO状态数据. iostat ...

  9. Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化

    需要的联系我,QQ:1844912514

  10. Mysql性能优化那些事

    ​    ​对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库--林林总总,但是第一必备技能还应该是MySQL.从LAMP的 ...

随机推荐

  1. 全球2023年自然科学指数(Nature Index),各单位排名表

    地址: https://www.nature.com/nature-index/annual-tables/2023/institution/all/all/global 自然科学指数(Nature ...

  2. docker容器挂载host宿主机的本地目录,docker容器与宿主机之间互相拷贝文件

    docker容器挂载host宿主机的本地目录,docker容器与宿主机之间互相拷贝文件 参考于: https://blog.csdn.net/weixin_37773766/article/detai ...

  3. 【转载】failed to open /dev/dri/renderd128 permission denied

    原文地址: https://juejin.cn/s/failed%20to%20open%20%2Fdev%2Fdri%2Frenderd128%20permission%20denied ===== ...

  4. 词云图大师(WordCloudMaster)上线Web端!

    我们非常激动地宣布,词云图大师(WordCloudMaster)现已正式上线Web端!这一全新版本为用户带来了更多的便捷和功能,让创建和分享词云变得更加轻松.无论是企业.教育机构还是个人用户,都可以通 ...

  5. 【导师招募】Apache DolphinScheduler 社区又又又入选开源之夏啦!

    很高兴和大家宣布,Apache DolphinScheduler 社区今年再次成功入选入选由中国科学院软件研究所开源软件供应链点亮计划发起的"开源之夏"活动. 入选公示链接:htt ...

  6. 20-canvas之形变

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  7. Linux嵌入式所有知识点-思维导图-【一口君吐血奉献】

    一.前言 很多粉丝问我,我的Linux和嵌入式当初是如何学习的? 其实彭老师在最初学习的过程中,走了相当多的弯路: 有些可以不学的花了太多的时间去啃 有些作为基础必须优先学习的,却忽略了, 结果工作中 ...

  8. 3. 从0开始学ARM-ARM模式、寄存器、流水线

    关于ARM的一些基本概念,大家可以参考我之前的文章: <到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 关于ARM指令用到的IDE开发 ...

  9. 使用CyFES对配体运动轨迹进行数据透视

    技术背景 如果我们有一个蛋白质X和一个配体Y,那么可以对这个X+Y的体系跑一段长时间的分子动力学模拟,以观测这个体系在不同结合位点下的稳定性.类似于前面一篇博客中计算等高面的方法,我们可以计算轨迹的K ...

  10. 逆向WeChat (五)

    本篇逆向mmmojo.dll,介绍如何使用mmmojo,wmpf_host_export的mojo. 本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18216717 ...