2014-12-10 46 views
0

我必须在服务器上多次运行带有不同参数(10 000+)的存储过程。我想从脚本中并行启动查询。在开始新查询之前,我想确定Sybase服务器的负载,以自动并动态地决定可以并行启动多少个查询。如何从脚本中确定Sybase服务器的负载

现在我计算查询的平均响应时间,如果它增长太高,那么我停止开始新的查询,如果它低于预定义的值,那么我可以开始更多的查询。但它非常依赖于存储过程,有时甚至依赖于传递给它的参数,所以我想获得一些更为客观的度量,类似于由cat /proc/loadavguptime,top)返回的Linux负载平均值。 Gmake具有类似的功能可以并行运行,并且只有当加载平均值小于指定值时才会启动新过程(请参阅-j-l选项)。

有没有办法获得一些与服务器实际负载相关的指标?

我不是管理员,我正在远程启动查询。

回答

0

经过一番搜索,我找到了一个存储过程,它可以提供有关特定服务器的系统负载的大量详细信息。它被称为sp_sysmon

它提供了很多信息。其中一些可能是有用的。唯一的问题是我可以发现用户需要SA角色来运行此存储过程。

一个例子(在此打印几乎所有的统计):

sp_sysmon "00:01:00", noclear, @applmon = appl_and_login 

它提供了有关所有的“引擎”的信息属于Sybase服务器,网络流量,磁盘I/O(甚至每个设备),工作进程,并行查询,任务上下文切换,任务,缓冲区,事务,索引,锁,数据缓存,内存等。

输出可以减少,并向其中添加不同的参数。我必须玩一点,但它似乎是一个非常酷的工具。

看来'sa_role'问题也可以解决(说明Granting SA rights to non-SA users,来源:grant_sa.sql)。

但当然有一个缺点。 Documentation状态:

的sp_sysmon有助于5至7%的开销,同时它运行一个 单CPU的服务器上,并且更多处理器服务器上。 开销的数量随着CPU数量的增加而增加。