【发布时间】:2019-10-17 05:22:36
【问题描述】:
在我的业务案例中,我需要插入一行并且不能使用批量插入。所以我想知道Oracle的吞吐量是多少。我尝试了这些方法:
有效方式
- 我使用多线程,每个线程拥有一个连接插入数据
- 我用ssd存储oracle数据文件
无效的方式
- 我使用多表将数据存储在一个架构中
- 我用的是表分区
- 我使用多模式来存储数据
- 调高数据文件块大小
- 在插入 SQL 中使用附加提示
最终最好的TPS是1w/s+
其他:
- Oracle 11g
- 单次插入数据大小1k
- CPU i7,64GB 内存
【问题讨论】:
-
插入大小为 1k 时,您不需要任何特别的东西,除非您的问题中没有解释特殊情况。我可以肯定地说(1)不要增加块大小,(2)如果您希望查询数据,请不要使用多个模式,(3)如果您认为 Oracle 是瓶颈,请不要线程化您的客户端代码, 和 (4)
append提示不适用于此处。作为经理,我建议:专注于您的应用,而不是单个插入。做一个香草INSERT并继续前进。如果插入速度稍快但应用程序延迟交付并且INSERT逻辑一团糟,那么没人会感谢您。 -
非常感谢您的顾问。但就我而言,我在我的框架中使用 oracle 作为事件存储(与 CQRS 相关)。所以只有插入和选择会发生,我需要尽力提高插入性能。
-
什么是“单次插入”?使用
insert ... values插入1行?
标签: oracle performance oracle11g sql-insert