Oracle、MySQL、PostGreSQL、SQL Server-查询每秒事务数

Oracle、MySQL、PostGreSQL、SQL Server-查询每秒事务数

在做 db benchmarks 时,qps、tps 是衡量数据库性能的关键指标,TPS : Transactions Per Second 是每秒事务数,即数据库服务器在单位时间内处理的事务数。 横向对比计划几类数据库计算tps的方法。

Oracle database

定期采样

select sysdate, name, value from v$sysstat where name in ( 'user commits','user rollbacks');

您可以看到发生了多少次提交和回滚——但这绝对不是任何有意义的“TPS”。用户提交将不会反映应用层的“事务”。

oracle自己的metriy视图

select sum(decode(metric_name,'User Transaction Per Sec',round(value,2),0)) as UTPS 
FROM v$sysmetric 
where group_id   = 2 AND metric_name IN ( 'User Transaction Per Sec') 
group by begin_time,end_time ;

也可以参考DBA_TAB_MODIFICATIONS的记录数。

WITH hist_snaps
AS (SELECT instance_number,
snap_id,
round(begin_interval_time,'MI') datetime,
(  begin_interval_time + 0 - LAG (begin_interval_time + 0)
OVER (PARTITION BY dbid, instance_number ORDER BY snap_id)) * 86400 diff_time
FROM dba_hist_snapshot), hist_stats
AS (SELECT dbid,
instance_number,
snap_id,
stat_name,
VALUE - LAG (VALUE) OVER (PARTITION BY dbid,instance_number,stat_name ORDER BY snap_id)
delta_value
FROM dba_hist_sysstat
WHERE stat_name IN ('user commits', 'user rollbacks'))
SELECT datetime,
ROUND (SUM (delta_value) / 3600, 2) "Transactions/s"
FROM hist_snaps sn, hist_stats st
WHERE     st.instance_number = sn.instance_number
AND st.snap_id = sn.snap_id
AND diff_time IS NOT NULL
GROUP BY datetime
ORDER BY 1 desc;

现成的工具可以使用AWR or STATSPACK,Number of Transactions = (DeltaCommits+DeltaRollbacks)/Time

MySQL

Com_commit和Com_rollback在information_schema.global_status. 您需要定期查询它们并计算读数之间的差异才能获得quantity per duration.

SELECT  SUM(IF(variable_name IN ('Com_commit', 'Com_rollback'),
                   variable_value, 0)) /
        SUM(IF(variable_name = 'Uptime',
                   variable_value, 0))
    FROM  information_schema.GLOBAL_STATUS

根据question和com_*的状态变量计算tps和qps

com_commit = show global status like 'com_commit';
com_rollback = show global status like 'com_rollback';
uptime = show global status like 'uptime';
tps=(com_commit + com_rollback)/uptime

show global status where variable_name in('com_select','com_insert','com_delete','com_update');
Get the value of com_* at an interval of 1s, and do the difference calculation
del_diff = (int(mystat2['com_delete'])   - int(mystat1['com_delete']) ) / diff
ins_diff = (int(mystat2['com_insert'])    - int(mystat1['com_insert']) ) / diff
sel_diff = (int(mystat2['com_select'])    - int(mystat1['com_select']) ) / diff
upd_diff = (int(mystat2['com_update'])   - int(mystat1['com_update']) ) / diff

tps= Com_insert/s + Com_update/s + Com_delete/s
qps=Com_select/s + Com_insert/s + Com_update/s + Com_delete/s

如果数据库中有更多的myisam表,问题更适合计算。
如果数据库中有更多的innodb表,com_*数据源更适合计算。

postgresql

使用此查询读取在所有数据库中执行的事务总数:

SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;

如果您只想为一个数据库使用相同的计数器,请使用:

SELECT xact_commit+xact_rollback FROM pg_stat_database WHERE datname = 'mydb';

要计算 TPS(每秒事务数),请多次运行查询并计算时间间隔内的差异。

有现成的工具,其中之一是http://bucardo.org/wiki/Check_postgres

SQL SERVER

如果您的服务器上有多个实例,您可以运行以下脚本来了解所有实例在过去 10 秒内发生了多少事务。

-- First PASS
DECLARE @First INT
DECLARE @Second INT
SELECT @First = cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Transactions/sec'
-- Following is the delay
WAITFOR DELAY '00:00:10'
-- Second PASS
SELECT @Second = cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Transactions/sec';
SELECT (@Second - @First) 'TotalTransactions'
GO

实例特定事务

如果您的服务器上有多个实例,并且想要获取有关任何特定实例的详细信息,则可以运行以下脚本以了解该特定实例在过去 10 秒内发生了多少事务。

-- First PASS
DECLARE @First INT
DECLARE @Second INT
SELECT @First = cntr_value
FROM sys.dm_os_performance_counters
WHERE
OBJECT_NAME = 'MSSQL$SQL19:Databases' AND -- Change name of your server ' AND -- Change name of your server
counter_name = 'Transactions/sec' AND
instance_name = '_Total';
-- Following is the delay
WAITFOR DELAY '00:00:10'
-- Second PASS
SELECT @Second = cntr_value
FROM sys.dm_os_performance_counters
WHERE
OBJECT_NAME = 'MSSQL$SQL19:Databases' AND -- Change name of your server
counter_name = 'Transactions/sec' AND
instance_name = '_Total';
SELECT (@Second - @First) 'TotalTransactions'
GO

数据库特定事务
如果您的服务器上有多个实例,并且想要获取有关任何特定实例和特定数据库的详细信息,则可以运行以下脚本以了解过去 10 秒内针对该特定实例发生了多少事务数据库。

-- First PASS
DECLARE @First INT
DECLARE @Second INT
SELECT @First = cntr_value
FROM sys.dm_os_performance_counters
WHERE
OBJECT_NAME = 'MSSQL$SQL19:Databases' AND -- Change name of your server ' AND -- Change name of your server
counter_name = 'Transactions/sec' AND
instance_name = 'tempdb'; -- Change name of your database
-- Following is the delay
WAITFOR DELAY '00:00:10'
-- Second PASS
SELECT @Second = cntr_value
FROM sys.dm_os_performance_counters
WHERE
OBJECT_NAME = 'MSSQL$SQL19:Databases' AND -- Change name of your server
counter_name = 'Transactions/sec' AND
instance_name = 'tempdb'; -- Change name of your database
SELECT (@Second - @First) 'TotalTransactions'
GO

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习引领教育革命:智能教育的新时代

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习在教育中的应用🌞个性化学习🌙评估与反馈的智能化⭐教学资源的优…

Lua: 轻量级多用途脚本语言

Lua 是一种高效而轻量级的脚本语言,具备强大的扩展性和灵活性,广泛应用于游戏开发、嵌入式系统、Web 应用等多个领域。本文将深入探讨 Lua 的特性、应用场景以及如何使用 Lua 进行开发。 1. Lua 的起源与发展 Lua 的发展始于上世纪90年代初,…

Java单体架构项目_云霄外卖-特殊点

项目介绍: 定位: 专门为餐饮企业(餐厅、饭店)定制的一款软件商品 分为: 管理端:外卖商家使用 用户端(微信小程序):点餐用户使用。 功能架构: &#xff08…

哎呀呀 又迟到了,还被抓住了,面面相觑 害怕

网络编程 我应该迟点来,唠嗑到35嘿嘿 心疼自己早起呜呜呜,幸运的是35开讲 计算机网络 分4层 应用层(Application Layer): 应用层是用户接口和网络应用程序的接口。它允许用户访问网络服务,并支持各种应用程…

Windows系统下文件夹权限详解

文章目录 问题描述文件夹属性 问题描述 今天在Win10系统下,实现文件夹设置权限,具体的方案的涉及到我们公司内部的一款加密软件,不太方便透漏,借此机会,我也重新的回顾下windows系统下的文件夹权限 文件夹属性 打开…

[C++][设计模式][中介者模式]详细讲解

目录 1.动机2.模式定义3.要点总结 1.动机 在软件构建过程中,经常会出现多个对象相互关联的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化在这种情况下,可以…

【小沐学AI】Python实现语音识别(whisper+HuggingFace)

文章目录 1、简介1.1 whisper 2、HuggingFace2.1 安装transformers2.2 Pipeline 简介2.3 Tasks 简介2.3.1 sentiment-analysis2.3.2 zero-shot-classification2.3.3 text-generation2.3.4 fill-mask2.3.5 ner2.3.6 question-answering2.3.7 summarization2.3.8 translation 3、…

PyTorch Tensor进阶操作指南(二):深度学习中的关键技巧

本文主要讲tensor的裁剪、索引、降维和增维 Tensor与numpy互转、Tensor运算等,请看这篇文章 目录 9.1、首先看torch.squeeze()函数: 示例9.1:(基本的使用) 小技巧1:如何看维数 示例9.2:&a…

ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文)

ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文) 文章目录 ISO15765-2 道路车辆——通过控制器局域网(CAN)进行诊断通信 (翻译版)(万字长文)第二部分:传输协议和网络层服务前言Foreword…

在navicat对mysql声明无符号字段

1.无符号设置 在 MySQL 中,我们可以使用 UNSIGNED 属性来设置列的无符号属性,这意味着该列只能存储非负整数值。对于一些需要存储正整数的列,比如年龄、数量等,使用 UNSIGNED 属性可以提高数据存储和查询的效率,并且能…

浅谈一下VScode如何配置C环境

1.这几天突然发现在VScode写C程序比在DevC效果更好,因为在VScode中写代码有代码补全功能。所以我突然对在VScode中配置C环境变量产生了兴趣。 2.不过在VScode中配置C环境要是按照官方的来配置有点麻烦。 3.我这里有一个直接配置VScode中C环境变量的应用。 前提是…

原来“山水博客“的分类也是可以拖动排序的

这二天一直用“山水博客”写文章,发现一个问题,好象它的分类不能调整位置,这可是个大bug。首先,界面上没发现拖动相关按钮;如果按住分类拖动,会成这样: 后来仔细看了它的文档,发现它…

智能社区服务小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,房屋信息管理,住户信息管理,家政服务管理,家政预约管理,报修信息管理 微信端账号功能包括:系统首页,房屋信…

水果品牌网站开展如何拓宽渠道

对大多数人来说,零售买水果只在乎是买什么水果、哪个产地、价格等因此,对品牌的依赖度相对较低。但对于水果品牌公司来说,货好仅是基本,还需要将品牌发展出去、能获取准属性客户和转化路径。 与零售不同,批发生意或是…

在vs上远程连接Linux写服务器项目并启动后,可以看到服务启动了,但是通过浏览器访问该服务提示找不到页面

应该是被防火墙挡住了,查看这个如何检查linux服务器被防火墙挡住 • Worktile社区 和这个关于Linux下Nginx服务启动,通过浏览器无法访问的问题_linux无法访问nginx-CSDN博客 的提示之后,知道防火墙开了,想着可能是我写的服务器的…

大数据面试题之Spark(1)

目录 Spark的任务执行流程 Spark的运行流程 Spark的作业运行流程是怎么样的? Spark的特点 Spark源码中的任务调度 Spark作业调度 Spark的架构 Spark的使用场景 Spark on standalone模型、YARN架构模型(画架构图) Spark的yarn-cluster涉及的参数有哪些? Spark提交jo…

c++类成员指针用法

1)C入门级小知识,分享给将要学习或者正在学习C开发的同学。 2)内容属于原创,若转载,请说明出处。 3)提供相关问题有偿答疑和支持。 c中新增类成员指针操作,为了访问方便,他是指…

Spring Boot项目如何配置跨域

1、通过SpringSecurity进行配置 2、前端跨域配置:proxy配置项用于设置代理规则,用于前端开发中与后端API交互时使用。

《HelloGitHub》第 99 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

JS乌龟吃鸡游戏

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>乌龟游戏</title><script type"text/javascript">function move(obj){//乌龟图片高度var wuGui_height 67;…