有没有办法估计从java到Oracle的写入带宽

有没有办法估计从java到Oracle的写入带宽,java,oracle,Java,Oracle,我们有大量的数据,想知道它能以多快的速度写入Oracle。 有没有办法估计从java到Oracle DB的写入带宽?如果速度更快,我们可以使用任何方法(不一定是JDBC)。例如,了解X磁盘速度,Y处理器,然后您可以每秒写入Z字节,这将非常有用。有没有办法估计这样的数据速率 谢谢 我认为没有任何标准配方。除此之外,它还取决于您的架构(例如,表上是否有索引)、文件系统、您有多少磁盘、您正在使用的RAID级别、表、索引、日志等如何分布在这些磁盘上 试试看也许是唯一的办法 如果有一种方法可以估计它,那么

我们有大量的数据,想知道它能以多快的速度写入Oracle。 有没有办法估计从java到Oracle DB的写入带宽?如果速度更快,我们可以使用任何方法(不一定是JDBC)。例如,了解X磁盘速度,Y处理器,然后您可以每秒写入Z字节,这将非常有用。有没有办法估计这样的数据速率


谢谢

我认为没有任何标准配方。除此之外,它还取决于您的架构(例如,表上是否有索引)、文件系统、您有多少磁盘、您正在使用的RAID级别、表、索引、日志等如何分布在这些磁盘上

试试看也许是唯一的办法


如果有一种方法可以估计它,那么我也想知道

如果您拥有网络带宽、处理器速度和磁盘写入带宽,那么您需要知道Oracle在将数据包写入磁盘时会膨胀多少数据包的大小。(即,开销是多少)这完全取决于您的数据结构,但对于给定的dtata结构,它将是相同的。如果没有更多的信息,我猜它是一个2-3的因子

我认为总时间是综合延误的总和。(除非您有不同的认识,否则并发是可能的,但不太可能的;)您可以估算流程的每个部分所需的时间,并且可以精确到三分之一以内。这不会以任何方式取代测试,但如果您的测试时间明显不同,那么值得检查原因

假设您有大型事务(不尝试单独提交每条记录),则公式可能如下所示

网络延迟-通过1 Gb链路传输100 MB,100%开销需要2秒

处理器延迟-100 MB,处理器上200%的开销,可移动300 MB/s,需要1秒

磁盘延迟—100 MB,可维持60 MB/s的磁盘开销为200%,需要5秒钟

注意:根据您缓存数据的方式,写入/回写磁盘的数据几乎可以全部缓存并在以后写入

这导致猜测时间为3-8秒


但是,您仍然需要测试您的特定系统,以确定这需要多长时间。

+1您正在寻找的神奇公式并不存在。得到一个好主意的唯一方法就是做一些适当的测试。我必须同意保罗和克沃基的观点。但是,您可以将任务分解(如果可能)。您是否可以先将结果写入磁盘(这给了生成w/io的时间),然后将结果加载到db(oracle时间)中。现在,一旦你有了一个一致的数据集,你就可以在不同的配置上查看oracle的东西并对其进行测量。当然可以像这样拆分—所以写入磁盘文件然后将其导入oracle比直接写入要快?谢谢我认为@Jim并没有说它更快——只是说从磁盘文件开始意味着你可以测试各种加载选项,而不会因为生成时间而混淆事情。不过,这不是问题所在。OP询问,在这些情况下,是否存在写入带宽公式。不要问如何计算网络带宽等。我们能知道你在做什么吗?例如,如果要加载表,SQL*LOADER将更快,因为它可以直接在DB上运行。你能更好地定义这个问题吗?是的-我们有100 MB的数值数据,由java进程计算;试图找出大概需要多长时间才能写入Oracle,比如在一台普通的现代服务器上(可能是windows)。如果没有公式是可能的,那么任何经验法则都会很有趣-谢谢!这在很大程度上取决于表/索引的结构。您是将这些数据加载到新表中还是更新现有数据?它只是一组行,还是需要加载到几个相互关联的表中。等等。我们的目标结构(尚未明确定义,因为还不确定是否尝试将所有这些写入Oracle!)类似于OLAP,因此很可能是一个数据表和多个链接维度表。对于每个数据结果,我希望向数据表插入一个数据,并为新项目向维度表插入可能的数据[抱歉,这有点抽象:-)]。您可以重叠生成和加载,还是必须等到生成所有数据后再加载?