我们有一个C#应用程序,可以打开到各种数据库(主要是Oracle和SQL Server)的多个ODBC连接。
有没有办法以编程方式告诉DB哪个连接具有最高优先级?
例如,如果我将Con1,Con2和Con3全部连接到ODBC数据库,我希望能够告诉数据库将Con2视为优先于任何其他连接的优先级,因此它将首先优先考虑该工作负载
虽然我可以设置C#线程优先级,但这不起作用,因为虽然C#线程可能运行在最高位置,但它仍然只能运行与底层数据库连接一样快(除非我错了并且C#线程优先级通过?)。
答案 0 :(得分:1)
我没有使用它,但听起来你可以使用Oracle的Database Resource Manager为不同的会话分配不同的优先级。
在具有多个并发用户会话的环境中,这些会话运行具有不同优先级的作业,因此不应平等对待所有会话。资源管理器使您能够根据会话属性将会话分组,然后以优化应用程序环境的硬件利用率的方式将资源分配给这些组。
此related question提及SQL Server的Resource Governor。
如果要在两个不同的数据库系统(如Oracle和SQL服务器)之间设置优先级,我认为它的灵活性会降低。我能想到的最好的方法是将其中一个数据库系统的进程优先级设置为低于另一个。资源管理器和调控器听起来像是允许您限制任何一个查询可以使用的资源数量,但这可能导致没有其他任务的情况,并且低优先级任务最终会导致某些处理器速度未使用。