0

我正在寻找有关测量现有 Oracle DB 连接(perl DBI)带宽而不对数据库服务器端进行任何更改的想法。现在我正在运行

select * from table;

针对具有大约已知数据量的表和响应时间。我正在从 shell 手动运行它,我正在考虑在应用程序的管理/调试部分实现类似的功能,以供管理员查看。具体来说,我正在查看首先运行准备,然后运行执行,同时使用 Time::HiRes 计时性能。

问题:

  1. 是否有更好的 SQL 语句用于基准测试?也许某些查询可以动态生成特定数量的无意义数据,就像dd if=/dev/zero bs=1k count=1k
  2. 有人能想出另一种可以集成到 Web UI 的带宽测量方法吗?非交互式 shell 命令可以正常工作。

一点背景。我的应用程序正在通过内部网络访问 Oracle DB。网络存在带宽问题。在糟糕的一天,它就像拨号一样糟糕。实现环境是 RHEL / Oracle Instantclient / Perl DBI。

4

1 回答 1

1

您可以尝试在位于循环中的 Oracle 服务器上运行一个小脚本,从指定的端口(使用 netcat)读取数据并将数据丢弃到 /dev/null。然后在您的客户端上有一个脚本,该脚本不时发送已知量的数据(使用 netcat)并计算需要多长时间。这几乎可以衡量网络性能,并且独立于 Oracle 或磁盘。

像这样的东西:

在 Oracle 服务器上

while /bin/true
do
    nc -l 20000 > /dev/null
done

在客户端

time dd if=/dev/zero bs=1024k count=10 | nc <oracle_ip> 20000
于 2013-10-15T08:59:19.977 回答