oracle - 如何提高oracle中的单次插入性能
问题描述
在我的业务案例中,我需要插入一行并且不能使用批量插入。所以我想知道Oracle的吞吐量是多少。我尝试这些方法:
有效的方法
- 我使用多线程,每个线程拥有一个连接来插入数据
- 我使用 ssd 存储 oracle 数据文件
无效的方式
- 我使用多表将数据存储在一个模式中
- 我使用表分区
- 我使用多模式来存储数据
- 调高数据文件块大小
- 在插入 SQL 中使用附加提示
最后最好的TPS是1w/s+
其他:
- 甲骨文 11g
- 单次插入数据大小 1k
- CPU i7, 64GB 内存
解决方案
Oracle 针对从单行插入到成批数百行的任何内容进行了高度优化。您没有提到这一行插入是否存在性能问题,也没有提到插入需要多长时间。对于这样一个简单的操作,您无需担心任何这些细节。如果您有成千上万的基于 Web 的用户每分钟在表中插入一行,那没问题。如果您在适当的时间提交工作,并且您没有大量索引,则单行插入不应超过几毫秒。
在 SQL*Plus 中尝试命令
set autotrace on explain statistics
set timing on
并运行您的插入语句。
编辑您的问题以包括解释计划的结果。并确保将结果缩进 4 个空格。
推荐阅读
- sharepoint - 如何更新没有 ID 列的 SharePoint 列表项
- go - golang 使用 sort.Search 查找小于或等于给定元素的第一个元素
- javascript - 为 Vue.js 保存到本地存储时出错
- perl - 这两个数组声明有什么区别?
- javascript - 没有 else 的三元 if 语句不能与 && 一起使用
- html - 属性选择器没有对 css 进行任何更改
- regex - 如何将过滤器公式创建为数组公式
- angular - Composer-rest-server 在客户端应用程序中自动执行身份验证
- python-3.x - 包含与不包含的区别 [:]
- python - 如何在 Visual Studio Code 中隐藏/灰显日志代码(例如:Python)