小编adr*_*ift的帖子

Oracle 11g:插入的性能改进

我有一个包含 5 亿行(并且还在增长)的表

我做了以下工作来提高插入的性能:

在数据库端:

  • 删除所有索引和约束
  • 禁用日志记录

在应用方面:

  • 从 JPA 托管实体切换到本机插入查询,向查询添加了 APPEND Oracle 提示
  • 尝试每 1k/2k/3k 行批量提交
  • 尝试并行写入(多线程,线程数=服务器上的核心数)到一张表

这给了我大约每秒 300 行

另外试过:

  • 批量并行写入多个表(使用 UNION 分组然后返回结果)

这给了我每秒大约 1k 行,但在空表上。但是当我用虚拟数据(每个表 200 万)填充表时,插入速度下降到每秒 250 - 300 次。

谁能建议我还能做些什么来加速插入?基本上我想首先了解什么是(可能是什么)瓶颈。

UPD: 表按插入日期分区,表有大约 60 列 - 大多数列是 VARCHAR2(2000 BYTE)

oracle java

8
推荐指数
1
解决办法
1万
查看次数

如何获得序列的下一个值?

有人可以告诉下面明显的查询有什么问题:

db2 => select next value for schema_name.sequence_name;
Run Code Online (Sandbox Code Playgroud)

结果我得到:

SQL0104N  An unexpected token "END-OF-STATEMENT" was found following
"schema_name.sequence_name".  Expected tokens may include:  "<table_expr>".
SQLSTATE=42601
Run Code Online (Sandbox Code Playgroud)

db2 sequence

8
推荐指数
2
解决办法
5万
查看次数

标签 统计

db2 ×1

java ×1

oracle ×1

sequence ×1