【发布时间】:2015-06-03 07:39:27
【问题描述】:
我对数据库还很陌生,并且已经被这个问题困扰了一段时间。我想我只需要关于从哪里开始解决这类问题的指导。
我有一个网络服务器设置为非常频繁地接收数据并将其写入 oracle 数据库。
服务器需要能够为每个用户接收多行数据(大约每 10 秒 30 到 100 行,当有积压时偶尔会卡盘 1000 行)。
从测试应用程序来看,在尝试扩展用户数量时似乎存在瓶颈。我怀疑我只是在编写查询/表结构时采用了错误的方法。
使用 100 - 150 名用户进行测试后,我的响应时间呈线性增长(20 分钟后最长可达 800 秒!)。
我的印象是,每个带有数据块的请求都必须排队,oracle 会处理每个写入,对吗?这是因为表被锁定了吗?
数据都被写入一个表,并且每一“行”都通过一个查询输入。所以如果我有 30 行数据它需要运行 30 次插入。
在尝试提高性能时,最好的尝试是什么?
- 拥有多个表格会有帮助吗?
- 有没有办法一次写多行,这可能会有所帮助吗?
可能是一个长镜头,但希望有人可以提供帮助/遇到了类似的问题。
谢谢。
【问题讨论】:
-
"它需要运行 30 次插入" - 我希望您在单个事务中执行这 30 次插入(例如,通过禁用自动提交并仅提交 一次 在 30 次插入之后)
-
你的 Oracle 版本是什么?
-
你的网络框架是什么。
-
感谢您的快速回复!我会考虑禁用自动提交,这不是我做过/不知道的事情。 Oracle 11g Express 是我正在使用的,是的,都是同一张表。
-
要插入的行来自文件或如何获取要插入的数据?
标签: database oracle database-design locking