我希望Laurion Burchall读到这个:-)
我需要尽快插入一百万条小记录.
现在我处在一个非常紧凑的循环中,对于每一个记录,我
a) start a transaction (JetBeginTransaction)
b) prepare an update (JetPrepareUpdate)
c) add the row (JetSetColumns)
d) commit the transaction (JetCommitTransaction)
Run Code Online (Sandbox Code Playgroud)
现在,在这个过程中,我在一个处理器上紧紧地循环.目标机器有多个CPU,大磁盘和大量可用RAM.
我想知道如何获得更好的表现.
就交易而言,我做了一些实验,如果我在一次交易中放入太多数据,就会出现错误.我想更好地了解那里发生了什么 - 我是否有错误,或者交易上限的大小,如果上限可以扩大上限?我只是在调查这个,因为我猜测一个事务让ESE能够在RAM中进行更多的缓存,最大限度地减少磁盘刷新? - 这只是一个猜测?
一般来说,如何使用多个处理器/大量RAM /和漂亮的磁盘?打开数据库两次并从那里开始?我不太确定在线程安全和事务方面会发生什么.如果我有一个DB的两个句柄,每个句柄都在一个事务中,一个句柄上的写入是否会在提交之前立即可用于第二个句柄,或者我是否需要先提交?
任何提示都表示赞赏
here are the constraints
a) I've got a million records that need to be written into the DB as fast as possible
b) to fully generate the record for insertion there are two searches that need to occur within the same table (seeking keys)
c) This …Run Code Online (Sandbox Code Playgroud)