如何实现高效运维?来谈谈性能优化那些事(含直播回顾 Q&A)
数据库性能问题,常常是困扰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)的更多相关文章
- 优化系统资源ulimit《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化系统资源ulimit<高性能Linux服务器构建实战:运维监控.性能调优与集群应用> 假设有这样一种情况,一台Linux 主机上同时登录了10个用户,在没有限制系统资源的情况下,这10 ...
- 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》
优化Linux内核参数/etc/sysctl.conf sysctl <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...
- saltstack高效运维
saltstack高效运维 salt介绍 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. salt强大吗 系统管理员日常会 ...
- iOS_UITableView性能优化那些事
UITableView在实际开发中使用频率实在是很高, 因此, UITableView的性能优化是必不可少的, 本文下面就略微总结一下UITableView性能优化那些事. 本文着重介绍具体方法, 原 ...
- slatstack高效运维
一.简介 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. 二.诞生的背景 系统管理员日常会进行大量的重复性操作,例如安装软件, ...
- 17,saltstack高效运维
salt介绍 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. salt强大吗 系统管理员日常会进行大量的重复性操作,例如安 ...
- 突破10万高并发的nginx性能优化经验(含内核参数优化)
写的很好,推荐阅读. 转载:http://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并 ...
- Linux centos7日常运维——监控io性能、free内存命令、ps进程命令、查看网络状态、linux下抓包
一.监控io性能 Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.其中iostat可以给我们提供丰富的IO状态数据. iostat ...
- Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化
需要的联系我,QQ:1844912514
- Mysql性能优化那些事
对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库--林林总总,但是第一必备技能还应该是MySQL.从LAMP的 ...
随机推荐
- 关于VS2022无法打开源文件<stdio.h>报错
Q:本人今天下载VS2022,在billibilli观看到不靠谱教程以至于无法输出hello world A:经过网上查询发现 解决方案/侵删 web:https://www.cnblogs.com/ ...
- 计算机类的短周期的SCI期刊
<Human-centric Computing and Information Sciences> 韩国人办的,Open Access,周期短,费用高,SCI二区,水毕业可用. 以下引自 ...
- 外形最漂亮的人形机器人——通用机器人Apollo,设计为可以在任何任务和环境中与人类进行协作
视频地址: https://www.bilibili.com/video/BV11F4m1M7ph/
- 【转载】 Ubuntu 中开机自动执行脚本的两种方法
原文地址: https://www.jianshu.com/p/6366d7070642 作者:貘鸣来源:简书 ============================================ ...
- 【转载】 Mobaxterm 中文输入Backspace按键问题
版权声明:本文为CSDN博主「Flynnsin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/qq_45830 ...
- 从baselines库的common/vec_env/vec_normalize.py模块看方差的近似计算方法
在baselines库的common/vec_env/vec_normalize.py中计算方差的调用方法为: RunningMeanStd 同时该计算函数的解释也一并给出了: https://en. ...
- windows系统下最新版gym[atari]中的游戏环境(此时最新版的gym为0.24.0,gym==0.24.0)
关于gym[atari]的安装参看以前的博文: windows系统下安装最新版gym的安装方法(此时最新版的gym为0.24.0,gym==0.24.0) 上代码: import time impor ...
- Inno Setup 出现 the drive or unc share you selected does not exist or is not accessible 解决记录
背景 软件是使用Inno Setup的,且安装后,再次安装是默认安装到历史路径.一次用户电脑维修后,发现再次安装后报错 解决办法 取消自动安装到默认路径就好了~ UsePreviousAppDir=n ...
- 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)
2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛) RC-u1 热҈热҈热҈ #include<bits/stdc++.h> using namespace std; us ...
- Camera | 6.v4l2拓扑架构
一. 设备节点.模块.拓扑结构关系 拓扑结构是我们了解MIPI-CSI内部模块以及与摄像头连接关系的最直观最便捷的方法. 1. 如何表示拓扑结构? file视角 v4l2视角 来自: 参考文档< ...