【发布时间】:2019-09-30 07:08:45
【问题描述】:
我创建了一组 100k 插入查询来在多个 oracle 表中生成数据以进行性能测试。执行此操作的最佳方法是什么?
过去,我尝试过 Oracle SQL developer 和 Toad 等工具。但是不确定它是否可以处理这么大的容量。
简单的插入语句,例如 -
INSERT INTO SELLING_CODE (SELC_ID, VALC_ID, PROD_ID, SELC_CODE, SELC_MASK, VALC_ID_STATUS)
VALUES (5000001, 63, 1, '91111111', 'N/A', 107);
【问题讨论】:
-
“过去,我尝试过 Oracle SQL developer 和 Toad 等工具。但不确定它是否可以处理这么大的容量。” - 你有没有尝试过?发生了什么?
-
请read this SO question。尝试直接运行这么多插入语句可能不是一个好主意。
-
执行 100,000 条单独的插入语句不是明智的做法。它很慢,而且维护或调试也很笨拙。哪种方法可能更好取决于您的具体情况:如果目标表为空,则 SQL*Loader 或外部表,INSERT INTO .. SELECT ... 否则 MERGE ..
-
最好的方法一般是多插入(INSERT ALL)或运行事务
-
在每 100 条左右的语句后添加一个提交,在插入数据之前删除表上除主键索引之外的所有索引,并在所有插入完成后手头有 DDL 重新创建索引,并且承诺,你应该没事。
标签: sql oracle performance bulk-operations