前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[打造自己的监控系统]使用pandas处理数据获取TOP SQL语句

[打造自己的监控系统]使用pandas处理数据获取TOP SQL语句

作者头像
bsbforever
发布2020-08-19 10:30:25
1.7K0
发布2020-08-19 10:30:25
举报
文章被收录于专栏:时悦的学习笔记

这节讲如何使用pandas处理数据获取TOP SQL语句

开发环境

操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms 数据处理:pandas 前端展示:highcharts

上节我们介绍了如何将Oracle TOP SQL数据存入数据库

接下来是如何将这些数据提取出来然后进行处理最后在前端展示

这节讲如何利用pandas处理数据来获取TOPSQL语句

TOP SQL获取原理

通过前面的章节我们获取了每个小时v$sqlare视图里面的数据,这里我以monitor_oracle_diskreads 为例,具体数据如下图

上面的排序是没有规律的,我们首先通过SQL语句查询出指定的数据库在15:00至16:00中所有SQL语句,并按照sql_id和sql_time降序排列(时间采用时间戳的形式)

select * from monitor_oracle_diskreads where sql_time <= 1512633600 and sql_time >= 1512630000 and tnsname='DCPROD' and ipaddress='10.65.1.119' order by sql_id ,sql_time desc

由于我选择时间段间隔一个小时,所以上面查询结果每个sql_id对应两行数据,其中16:00的数据在上面一行

接下来我们要pandas做的事情就是计算每个sql_id对应的disk_reads等栏位的差值,具体步骤如下:

  1. 首先以SQL_ID进行分组
  2. 然后遍历各个分组,将各个组的第一个值减去最后一个值,将结果放入列表中供后续使用,这里注意一点,由于后面我们要计算平均每次的值,会有分母为零的状况,所以这里先做判断如果执行次数为0则将分母变为1
  3. 接下来将整理后的结果格式化成pandas的DataFrame格式
  4. 最后利用pandas排序函数以disk_reads的值来降序排列,得到TOP语句

运行结果 如下为运行后的结果,这里以topevent为例,可以看到为一个列表,里面在嵌套一些列表,这种结果就是我们需要的格式

下面为程序的截图:

完整代码会在专题的最后放出,大家可根据代码进行调试来熟悉pandas的功能

下节为如何讲如何在前端显示

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TOP SQL获取原理
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档