暂无图片
v$sesstat和v$mystat 为什么获取的值不一致。
我来答
分享
陈年酒诗
2024-07-19
v$sesstat和v$mystat 为什么获取的值不一致。
暂无图片 5M

如下示例可以看出两个视图的查询结果并不一致,为何有差异?要观察某项指标时以哪项为准呢?

select n.name,value from v$sesstat s,v$statname n where s.STATISTIC#=n.STATISTIC# and s.sid=userenv('sid') and n.name='session pga memory'; select n.name,value from v$mystat s,v$statname n where s.STATISTIC#=n.STATISTIC# and s.sid=userenv('sid') and n.name='session pga memory';
复制
我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
伟鹏

vsesstat 是会话级的统计信息 vmystat 是整个数据库实例在某一个时间点的统计信息

它们在统计粒度和更新机制上都是有差异的

暂无图片 评论
暂无图片 有用 0
打赏 0
陈年酒诗
题主
2024-07-19
整个数据库实例在某一个时间点的统计信息 应该是v$sysstat
龙镇君

这两个查询示例用于获取当前会话(session)的PGA(Program Global Area)内存使用情况,但使用了不同的视图:v$sesstat 和 v$mystat。尽管它们的目的相似,但它们在数据提供和用途上有所不同,这导致了查询结果可能存在的差异。

差异原因

  1. 数据来源
    • v$sesstat 视图提供了所有会话的统计信息,这意味着它包含了数据库中所有会话的当前统计值。通过指定 s.sid = userenv('sid'),你只是在过滤出当前会话的统计信息。
    • v$mystat 视图则专门为当前会话提供了统计信息,无需进行 sid 的过滤,因为它默认就是针对当前会话的。这个视图通常被认为比 v$sesstat 访问当前会话的统计信息时更高效,因为它避免了过滤操作。
  2. 统计信息的实时性
    • 这两个视图都可能因为数据库的内部机制(如统计信息的收集频率)而显示出略有不同的值。虽然这种差异通常很小,但在高负载或统计信息更新频繁的情况下可能会更加明显。
  3. 数据库内部实现
    • Oracle 数据库的内部实现可能会影响到这些视图的性能和准确性。例如,v$mystat 可能被优化以更快地提供当前会话的统计信息,而 v$sesstat 则可能需要更复杂的查询来处理所有会话的数据。
    • 当你执行以下两个查询时:

      select n.name, value from v$sesstat s, v$statname n where s.STATISTIC#=n.STATISTIC# and s.sid=userenv('sid') and n.name='session pga memory';
      select n.name, value from v$mystat s, v$statname n where s.STATISTIC#=n.STATISTIC# and s.sid=userenv('sid') and n.name='session pga memory';
      第一个查询从v$sesstat中检索数据,可能会显示其他会话的统计信息,而第二个查询仅从v$mystat中检索当前用户的统计信息。因此,如果其他会话正在使用PGA内存,第一个查询可能会显示更高的数值。

以哪项为准

  • 一般情况下:如果你只对当前会话的统计信息感兴趣,并且希望查询尽可能高效,那么使用 v$mystat 是更好的选择。它直接提供了当前会话的统计信息,无需额外的过滤操作。

  • 特殊情况:如果你需要比较或分析多个会话的统计信息,那么 v$sesstat 将是更好的选择,因为它提供了所有会话的统计信息。但请注意,在这种情况下,你需要确保正确地过滤出你感兴趣的会话。

  • 验证和准确性:如果你对结果的准确性有特别高的要求,建议同时查询这两个视图,并比较结果。如果差异很小(通常是几个字节或几毫秒的差异),则可能是由于统计信息收集的时机不同所致,可以认为两者都是准确的。如果差异很大,可能需要进一步检查数据库的配置和性能问题。

暂无图片 评论
暂无图片 有用 0
打赏 0
陈年酒诗
题主
2024-07-19
太GPT了,没说清楚为什么不一致。
伟鹏

简单来说vsesstat 是动态收集的实时会话级统计信息,会一直变化; vmystat 是基于某个时间点的整个实例的统计信息

所以会不一样

暂无图片 评论
暂无图片 有用 0
打赏 0
陈年酒诗

没找到更好的资料,根据GPT的答复。认为v$mystat 具有更高的实时性。

万知

在比较 V$SESSTATV$MYSTAT 哪个更能反映实时信息时,我们需要考虑它们的数据更新方式和内容。

  1. V$MYSTAT:

    • 这是当前会话的统计信息视图,显示的是 V$SESSTAT 的子集[3][5]。
    • V$MYSTAT 只会有当前用户的会话信息,而 V$SESSTAT 会有整个实例内所有会话信息[13][14]。
    • V$MYSTAT 中的统计信息是当前会话的实时统计,而 V$SESSTAT 显示的是所有会话的累积统计[4][5]。
  2. V$SESSTAT:

    • 这是实例所有会话的统计信息视图,包括所有会话的统计项[1][6]。
    • V$SESSTAT 显示的是所有会话的累积统计,这意味着它包括了历史上所有会话的影响[4][5]。
    • 虽然 V$SESSTAT 提供了一个更全面的视角,但它不是实时的,因为它包括了历史数据的累积[5][14]。

综上所述,V$MYSTAT 更能反映实时信息,因为它只关注当前会话的统计信息,而 V$SESSTAT 提供的是一个更广泛的视角,包括了所有会话的累积统计。

通义千问

v$sesstatv$mystat 是 Oracle 数据库中的两个动态性能视图,它们分别提供了关于会话统计信息和当前会话统计信息的详细数据。它们之间的主要区别在于数据的收集方式、更新频率以及所覆盖的范围。

v$sesstat

  • 范围v$sesstat 视图提供了所有会话的统计信息,不仅限于当前会话。这意味着你可以查看整个数据库中所有活动会话的统计信息。
  • 更新机制v$sesstat 中的数据更新通常依赖于会话事件和 SQL 执行等操作。每当一个会话执行一个操作时,如执行 SQL 语句、进行 I/O 操作等,相关的统计信息就会被更新。因此,v$sesstat 可以看作是累积的统计数据,它包含了历史数据,可能不是实时的。
  • 刷新频率:由于它包含历史数据,v$sesstat 的刷新频率相对较低。更新通常发生在有新的会话活动时,而不是按固定的时间间隔刷新。

v$mystat

  • 范围v$mystat 视图仅关注当前会话的统计信息,即执行查询的那个会话。它不提供其他会话的统计信息。
  • 更新机制v$mystat 中的数据通常被认为更接近实时,因为它反映了调用它的会话的当前状态。当会话执行任何操作时,相关统计信息立即更新。
  • 刷新频率v$mystat 的数据更新频率通常更高,因为它是针对当前会话的,所以它的数据更新几乎是即时的,反映了会话在查询时刻的状态。

总结

v$mystat 提供了对当前会话的快速访问,可以认为是实时的,而 v$sesstat 则提供了更全面的历史和全局视角,但更新可能不如 v$mystat 那么及时。在监控和诊断问题时,选择正确的视图取决于你需要的信息类型——是否需要实时数据还是历史趋势分析。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
ORACLE RAC 的ASM如何添加磁盘
回答 4
@章芋文检查步骤很重要,尤其是备份。我是刚接手这套库,之前不是我实施的,我也是看了之前的60raw.rules配置文件才想着这些步骤的。我只用过asmlib、udev的方式,这种裸设备没用过,所以不太
如何写一个定时任务监控用户会话连接数select username,count(username) from v$session where username is not null group by username order by 2;
回答 1
把sql写成shell然后crontab或者直接使用shell循环就可以。Linux的话有个watch命令也可以!
oracle存储过程中如何接收clob的类型?
回答 1
已采纳
以下步骤供参考:1步:搭建测试环境SQL>createtablet1(idint,locclob);Tablecreated.SQL>insertintot1values(1,toclob
电信行业国产数据库哪些可以满足?
回答 3
AISWareDatabase(曾用名:AISWareMDB)应该能满足你的要求,深耕电信行业数十年。由亚信科技控股有限公司(股票代码:01675.HK)自主研发,始创于2005年。具有金融级数据强一
哪本书里面有对10053事件有详细的描述和案例呢
回答 1
已采纳
10053目前oracle官方不对外开放文档,只能在网上搜搜看了,这里我推荐几篇:Oracle的10053事件详解Oracle性能优化之10053事件DBA手记:DBA诊断利器Event10046和1
RAC、ADG、OGG、DSG优缺点对比
回答 1
最佳实践是RACADG,RAC提供高可用和负载均衡,ADG提供容灾。OGG多用于异构数据库和平台少量表的实时同步,以及部分场景下的迁移。DSG多用于数据迁移。
Windows平台oracle12.1.0.2.0单实例打补丁opatch工具下哪个版本?
回答 1
使用opatch12.2.0.1.0版本试试https://updates.oracle.com/download/6880880.html
Oracle报错:ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接,怎么解决?
回答 1
1、检查alert日志是否达到最大连接数;2、检查监听是否正常;3、检查连接程序是否写错服务名。
oracle数据泵impdp报错ORA-01427
回答 1
《OracleDataPumpImport(IMPDP)FailswithErrorORA1427DuringImportingStatistics(DocID1501580.1).pdf》:http
Oracle RAC一个节点上新建了用户,另外一个节点没有把用户自动建好,是什么原因?
回答 4
这什么问题。用户是oracle数据库里面的用户,还是linux用户