数据库管理-第七十一期 五一,休息?(20230503)

news2024/10/1 21:24:46

数据库管理 2023-05-03

  • 第七十一期 五一,休息?
    • 1 备份
    • 2 两个DDL
    • 3 问题处理
    • 4 问题排查
    • 总结

第七十一期 五一,休息?

好不容易,熬过万恶的6天班来到了五一假期,想着好好休息,顺便把绝地幸存者给通关(优化稀烂,更新后好了一点)
结果X8那套库连着两条出问题(虽然覆盖这台维护的新合同还没签下来,但是影响生产了就要处理吧),搞得假期充满了烦躁。

1 备份

先说后面发生的那个问题,是NBU存储满了,定期的归档日志备份没有执行,也就没有删除已备份的归档日志,造成了FRA满了,归档卡住引起数据库不可用。好的一点是8点不到发生而且是五一当天,影响不是太大,连到服务器执行:

rman target /
RMAN> delete archivelog all completed before 'sysdate-0.5';

归档日志删除过程中数据库就恢复正常了,这个就没啥好分析的了。

2 两个DDL

这是五一假期第一天出现的问题(游戏打的正嗨时!),当时是数据库出现性能问题了,大概发生时间是14:00-14:30,通知到我这登陆到服务器已经14:50之后了,正在查看问题发现故障时段出现了大量的library cache lock、cursor: pin S wait on X和row cache lock:
在这里插入图片描述
同时通过问题时段AWR报表中Top Blocking Sessions段落进行排查:
在这里插入图片描述
发现顶级锁会话是一条create table as select的DDL语句。
在这里插入图片描述
在这里插入图片描述
这条语句在EM的SQL记录中也在问题时段同时执行了两条,只不过另一条是从2点开始的,接近2点半就失败了。
根据前一张图,排查到3点的时候数据库再次出现性能问题,和2点到2点半的情况一致,是两条相同的create table as select DDL语句在同时执行引起的,随即在3点08分的样子干掉实例1运行的,session_id为4131,session_serial#为48217的会话,数据库随即恢复正常。
后续排查发现出现问题的语句执行了4小时以上,3点新发起的语句后面也执行了超过1小时没有完成,而根据业务方反馈,这条语句已执行1年以上,第一次出现问题。

3 问题处理

  • 业务场景
    业务需求每一个小时会对全量的基站数据进行刷新,出现问题的语句为其中一步,前面还CTAS了几张临时表用于数据刷新。由于该任务是通过SQL脚本与crontab实现,所以没有异常处置,当任务异常时,后面的任务仍然会继续执行,从而导致两条相同CTAS DDL语句冲突引起大面积数据库等待,出现性能问题。
    只不过这里发现第一个异常任务执行开始后,后面前2小时几乎没啥影响,分析应该为后续语句快速失败了,第三个小时和第四个小时就出现了问题。业务方在出现问题后就暂停了这个任务,由非即时数据支撑生产。
  • 语句排查
    首先先看看这条语句的情况:
-- sql_id: 3na6qqz08x159
create table temp_ponptp_sp as
select 
	e.city_id,e.county_name,
	b.g1000_flag,
	e.zh_label cell_name,
	d.zh_label cover_area,
	c.related_olt olt_name,
	c.olt_neport_pon_m olt_port,
	d.all_port_num,d.zyfg_sbkydks
from
	rms_trans_neport a,
	temp_ponptp_cardtype b, --临时表
	rms_splitter c,
	rms_area_cell d,
	rms_wcell e
where
	a.related_ne=b.olt_id
	and a.related_card=b.card_int
	and a.card_type=b.card_type
	and a.stateflag=0
	and b.olt_name=c.related_olt
	and a.old_name=c.olt_neport_pon_m
	and c.city_id=b.city_id
	and c.stateflag=0
	and c.cover_area=d.zh_label
	and c.city_id=d.city_id
	and d.stateflag=0
	and e.zh_label=d.zyfg_ssxq
	and e.city_id=d.city_id
	and e.stateflag=0

结合SQL Monitor:
在这里插入图片描述

排查出该语句在RMS_WCELL表的索引RMS_WCELL_III索引上花费最多。随即排查该索引:
在这里插入图片描述
回头看看语句,涉及RMS_WCELL列的筛选顺序为zh_label、city_id、stateflag,而复合索引第一列为CITY_ID,初步排查为zh_label列并未走索引。随即反馈业务方,开发直接在zh_label列建立了索引,再次执行,2分半即完成,对应的SQL Monitor如下:
在这里插入图片描述
从执行计划各项细节来看,各表的活动花费比例正常,同时IO执行也正常。
完成SQL优化后,业务方也对任务进行了调整,添加了异常检测与告警,避免任务同时执行。

4 问题排查

其实library cache lock、cursor: pin S wait on X和row cache lock等待的分析相对比较简单,数据库在某些操作过程中会产生一系列锁,即是用于确保SQL执行顺序,也是数据一致性的保证。两条相同的CTAS,保持了相同的建表对象,同时执行过程中会维护一系列redo和undo信息(同时也会冲突),一系列复合的原因造成了性能问题。
而语句本身的性能问题,才是我客户最关心的问题,其实在我看来,相较于一年前上线时,数据库的数据量和压力都提升了不少。也许在原来的数据量情况下,原有的索引是可以跑出结果的,量变引发质变,现有的数据量却无法用原有索引高效执行。
回到三十二期说过的,数据库管理是一个持续的过程,其实这系列语句还有很多地方需要优化,还有不少全表扫,同时也希望能不走nest loop。
插播一下:阿三的英语啊,真是不得行,听不懂,而且处理问题的态度主要也是“卡BUG”(就是看个大概,然后去匹配BUG,懒得去就事论事),SR中的反馈分析基本都是我的分析过程,明天上班了,转回国内。

总结

最终绝地幸存者主线也打完了,后面等优化好点了再玩。
老规矩,知道写了些啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 基础进阶篇(九)—— 常用 API

文章目录 一、Object 类二、Objects 工具类三、Math 类四、System 类五、BigDecimal 类 一、Object 类 一个类要么默认继承了 Object 类,要么间接继承了 Object 类,Object 类是 java 中的祖宗类。Object 类的方法是一切子类都可以直接使用的。 因此&…

Obsidian +Obsidian Git插件 + Gitee 自动同步笔记

在Obsidian 关闭安全模式 然后再插件市场里面搜索并下载Obsidian Git 这个插件 注意:这里需要科学上网才能搜索并下载,我看很多博主都没说这件事情 然后再你的Gitee中,新建一个仓库 把这两个勾选上,然后随便选个语言&#xff0…

【JavaEE】应用层UDP协议

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 本篇文章将为大家介绍应用层中UDP协议~~ 在应用层这里,虽然存在一些现有的协议(HTTP),但是也有很多情况,需要程序猿自定制协议&a…

Windeployqt 打包,缺少DLL 的原因分析,解决方法

很多同学使用工具windeployqt进行打包发布后,运行exe文件时,还是会出现下图所示的系统错误提示,这种情况就表示相关的DLL 库文件没有被正确打包。可是windeployqt明确显示运行正常啊,难道是QT自家的windeployqt这个工具有bug&…

2024年浙大MBA创客班项目提面如何申请?

2024年浙大MBA创客班提面如何申请?在目前的提前批面试申请过程中不少考生都不太清楚,专注浙大的杭州达立易考教育本期将项目的提前批面试和常规批复试申请基本流程和关键信息整理出来,帮助考生更精准的进行面试准备。 一、浙大MBA创客班项目…

基于比较排序算法总结

1.数据无法全部放入内存 2.数据以数据流形式

操作系统2(多处理器编程)

一、并发 1.操作系统是最早的并发程序之一 2.并发的基本单位:线程 共享内存的多个执行流 执行流拥有独立的堆栈/寄存器共享全部的内存(指针可以互相引用) 3.实现原子性 lock(&lk)unlock(&lk) 实现临界区(critical section)之间…

keepalived脑裂现象

Keepealived最常见的问题是会出现脑裂现象: Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占mas…

Snmputil和Snmputilg工具的下载和基本使用 SNMP协议 Windows系统SNMP服务的安装教程

⬜⬜⬜ ---🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪---⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→…

现代CMake高级教程 - 第 7 章:变量与缓存

双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 7 章:变量与缓存 重复执行 cmake -B build 会有什么区别? ❯ cmake -B build -- The C compiler identification is GNU 11.3.0 -- The CXX compiler identification is GNU 11.3.0 -- Detec…

C++:分治算法之输油管道问题

目录 描述 输入 输出 输入样例 输出样例 分析 代码 运行结果 描述 ¢ 某石油公司计划建造一条 由东向西 的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。 ¢ 如果给定…

如何区分GPT3.5和4?

切换模型 前两天申请的GPT 4的API调用权限终于申请下来了。 这两天我也是抓紧开发,让自己搭建的国内网站(aichatroom.cn)可以快速支持上使用GPT 4。 GPT 3.5和GPT4的区别 GPT-3.5 和 GPT-4 分别代表了 OpenAI 发布的两个不同版本的自然语言处…

现代CMake高级教程 - 第 4 章:对象的属性

双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 第 4 章:对象的属性 除了 POSITION_INDEPENDENT_CODE 还有哪些这样的属性? add_executable(main main.cpp)set_property(TARGET main PROPERTY CXX_STANDARD 17) # 采用 C17 标准进行编译&am…

STC15W104 8脚单片机串口下载程序

单片机串口下载是一种常见的单片机程序下载方式,它通过串口线连接单片机的串口引脚和电脑的串口接口实现。下面是单片机串口下载的基本原理和操作方法: 原理 确定下载模式:大多数单片机芯片都支持串口下载模式,需要在程序中设置…

常识性概念图谱建设与应用

目录 一、知识图谱背景介绍 (一)基本背景 (二)与NLP的关系 (三)常识性概念图谱的引入对比 二、常识性概念图谱介绍 (一)常识性概念图谱关系图示例 (二&#xff09…

深度学习-tensorflow 使用keras进行深度神经网络训练

概要 深度学习网络的训练可能会很慢、也可能无法收敛,本文介绍使用keras进行深度神经网络训练的加速技巧,包括解决梯度消失和爆炸问题的策略(参数初始化策略、激活函数策略、批量归一化、梯度裁剪)、重用预训练层方法、更快的优化…

linux进程描述指令:ps与top

这里写自定义目录标题 一 ps指令1 ps -aux2. ps -a3. ps -u4.ps -x 二 top指令1 top2 top -d 时间3. top -i4 top -p ID 一 ps指令 1 ps -aux 显示系统中的所有进程 PID就是进程的唯一编号,操作系统书里有一个PCD的概念,就是一个标识性的控制单元 [ro…

学系统集成项目管理工程师(中项)系列16b_风险管理(下)

1. 规划风险应对 1.1. 针对项目目标,制订提高机会、降低威胁的方案和措施的过程 1.2. 制订风险应对措施 1.3. 制订风险应对计划 1.4. 次生风险是实施风险应对措施的直接结果 1.5. 应对措施必须与风险的重要性相匹配,能经济有效地应对挑战 1.5.1. 【…

项目管理-计算专题(三点估算、PERT估算)

基本概念 通过考虑估算中的不确定性和风险,可以提高活动持续时间估算的准确性。这个概念源自计划评审技术(PERT)。PERT使用三种估算值来界定活动持续时间的近似区间: 最可能时间(tM):基于最可能获得的资源、最可能取得的资源生产率、对资源可用时间的现…

C语言CRC-16 MODBUS格式校验函数

C语言CRC-16 MODBUS格式校验函数 CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。基本的CRC-16校验算法实现,参考: C语言标准CRC-16校验函数。 不同应用规范通过对…