java - 基于数据库负载的条件执行(Oracle数据库)

标签 java database oracle

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

问题是,我们知道这将导致服务器 Activity 激增几秒钟,并且由于立即或每次输入更改时得到答案并不重要,这意味着我们可以承担执行或不执行查询的费用.

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

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

最佳答案

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

关于java - 基于数据库负载的条件执行(Oracle数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894710/

相关文章:

java - getter 和 setter findbugs 可能会暴露内部表示

database - Cypher size() 很慢 - 使用巨大的数据库

Android 版本 4.4+ Phonegap 中的 sqlite 错误

sql - 通过SQL语句手动插入到表中,但键是自动递增的

oracle - 十进制的 NLS_NUMERIC_CHARACTERS 设置

oracle - perl中如何处理模块抛出的错误

java - 资源管理器 : unable to find resource 'emailTemplate.vm' in any resource loader

java - maven 是否有等效的 sbt-start-script?

java - 数据库与数据表日期显示值不同

java - jboss 7.1 xalan 问题?