位置: 编程技术 - 正文
前几天,在所有数据库服务器部署了监控磁盘空间的存储过程和作业后(MS SQL 监控磁盘空间告警),今天突然收到了两封告警邮件,好吧,存储规划是一方面,但是,是不是要分析一下是什么原因造成磁盘空间不足的呢?会不会是因为突然暴增的日志文件,抑或是系统业务猛增导致数据量暴增,还是历史数据累计原因....分析总得有数据来支撑吧,但是现在只有那些数据文件的当前大小信息,没有数据文件的历史增长变化信息,所以,今天就想实现这么一个功能,每天(频率可以调整)去收集一下数据文件的信息,放到一个表里面,这样方便我们分析数据文件的增长演变例程,甚至你可以将数据文件的增长幅度和业务变化关联起来分析....那么接下来就是我的设计思路和实现代码,目前只是简单实现,以后将继续优化,丰富一些功能。首先我们创建一个表DiskCapacityHistory,用来保存数据库文件的历史增长变化信息:
接下来,我们创建存储过程,负责来收集、统计这些数据库的文件的相关信息。关于环比/同比,正常情况一般是:环比: (指标当前值 - 指标值(上个月同一天))/ 指标值(上个月同一天) 。同比: (指标当前值 - 指标值(去年月同一天))/ 指标值(去年月同一天) 。其实如果关注每天的数据文件变化情况,这个代码里面的环比、同比其实意义不大,其实我们可以这样定义环比、同比:环比: (指标当前值 - 指标值(昨天))/指标值(昨天)。同比: (指标当前值 - 指标值 (上个月))/指标值(上个月)当然,你也可以把这四个指标都加上,对比参考,侧重点不同而已。
顺便吐槽一下:由于前两年一直使用ORACLE数据库,很少接触SQL SERVER,在实现上面功能的时候,我深深的体会到了ORACLE和SQL SERVER的巨大差距,如果用PL/SQL实现,那非常方便快捷,但是用T-SQL让我遇到了几个相当痛苦地方,下面顺便记录对比一下吧:
一:由于我采用INT来保存日期数据,那么需要在DATE类型和INT类型之间转换,我们来对比一下两者的差别吧: 1.1 DATE类型转换为整型:T-SQL:SELECT CAST(REPLACE(CONVERT(varchar(),GETDATE(),),'-','') AS INT);PL/SQL:SELECT TO_CHAR(Date_CD, 'YYYYMMDD') FROM DUAL; 1.2 整型转换为DATE类型(字段DATE_CD)T-SQL: SELECT CAST(CAST(DATE_CD AS CHAR(8)) AS DATE) FROM TEST;PL/SQL: SELECT TO_DATE(DATE_CD, 'YYYY-MM-DD') FROM TEST;结论: 纯属个人感受,从上面的脚本的简单性,方便性上,感觉ORACLE完胜SQL SERVER 二:计算数据文件增长同比、环比值 1:SQL SERVER 没有MERGE语句功能,上面的脚本得改写成
或
2: 幸好SQL 还把ORACLE的MERGE的功能给模仿了过来,但是T-SQL缺少ORACLE数据库强大的分析函数LAG,如果有这个,我计算环比,同比就非常方便了,一个SQL就搞定了,下面是个例子,本想把ORACLE的SQL也做个例子展现,但是又要建表、造数,折腾起来比较麻烦。
作者:潇湘隐者出处:
推荐整理分享MSSQL 监控数据/日志文件增长实现方法(监控mysql数据变化),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:sqlserver 监控,sql监控工具,监控mysql数据变化,sql监控表数据变化,监控mysql数据变化,监控mysql,监控mysql,监控mysql数据变化,内容如对您有帮助,希望把文章链接给更多的朋友!
如何控制SQLServer中的跟踪标记 跟踪标记是什么?对于DBA来说,掌握TraceFlag是一个成为SQLServer高手的必要条件之一,在大多数情况下,TraceFlag只是一个剑走偏锋的奇招,不必要,但在
SQL Server存储过程入门学习 存储过程的定义,存储过程(StoredProcedure),是一组为了完成特定功能的SQL语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数,如
清除SQL SERVER错误日志出现操作系统错误的解决方法 之前在UAT环境搭建的SQLSERVERR2数据库一直用得比较正常,但最近发现在Sharepoint中不能进行任何操作了,开始以为是什么配置出了问题(因为一直在研
标签: 监控mysql数据变化
本文链接地址:https://www.jiuchutong.com/biancheng/347174.html 转载请保留说明!友情链接: 武汉网站建设