【问题标题】:Conditional execution based on database load (Oracle database)基于数据库负载的条件执行(Oracle数据库)
【发布时间】:2015-03-06 16:38:54
【问题描述】:

我们有一种情况,我们必须根据人工输入对数据库执行冗长的查询。随着输入的变化,查询必须一遍又一遍地进行,输入可能每秒改变一次。

问题是,我们知道这会导致服务器活动在几秒钟内出现峰值,并且由于立即或在每次输入更改时获得答案并不重要,这意味着我们可以负担执行或不执行查询.

我们希望使用的标准是数据库服务器的当前状态,并且仅在处于低负载或中等负载状态时才允许完成查询,当数据库服务器处于压力下时跳过查询。

我们为此使用 Oracle 数据库,到目前为止,我们还没有从 Java 中找到任何方法来执行此操作,除非将已知查询实际加载到服务器中并对其进行基准测试,但这实际上是给服务器增加了一些负载.所以我的问题是:有没有其他方法,特别是在 Oracle 数据库中,我们可以从应用程序的 Java 端发现数据库的负载?

【问题讨论】:

    标签: java database oracle


    【解决方案1】:

    根据您如何定义“低负载或中等负载状态”,我猜点击v$osstat 会为您提供您想要的信息当然,不断点击v$osstat 也会增加负载服务器。您可能想要编写一个作业,将v$osstat 数据复制到您定期控制的表中(因此可以适当地索引),以便您的应用程序可以访问该表,而不是不断地访问动态性能视图。根据目标(即您是要确保其他用户拥有足够的资源还是要确保您的应用程序保持响应),您可能希望使用资源管理器来控制用户之间的资源利用率,您可能希望运行从应用程序异步查询,和/或您可能希望在中间层使用某种缓存以避免每次都访问数据库。

    【讨论】:

    • 这是我一直在寻找的类型。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2019-03-08
    • 2019-09-29
    • 2012-11-19
    • 2019-12-30
    • 2014-05-20
    相关资源
    最近更新 更多