【发布时间】:2015-12-20 23:35:05
【问题描述】:
我正在尝试使用 .NET 提供程序通过一个连接和一个事务(BEGIN WORK/COMMIT WORK)将 10,000 行插入四个 Informix 表(每个表 2,500 个)。每个表大约有 20 列、一个 char(20) 主键和一个在另一个 char 列上的索引。
前几行以大约 500/秒的速度插入。插入速度减慢,直到最后大约为 10/秒。
我尝试一次将任务分解为 1000 行的事务,每个事务都有一个新连接,但速度下降是相同的。连接和命令在每个块完成后被释放。我什至尝试在每次交易后设置睡眠(10000 毫秒)。
最后,我将程序更改为一次插入 1,000 行,从给定的行号开始。程序第一次运行时,它插入了 1-1,000 行。第二次运行时,它插入了 1,001-2,000 行,以此类推。程序的每次连续运行都在前一次运行结束后 3 或 4 秒开始。
减速消失了。第 9,000-10,000 行以与第 1-1,000 行大致相同的 500 行/秒的速度插入。
我做错了什么?如何以或多或少恒定的速率插入包含 10,000 行的单个事务?
【问题讨论】: