我正在使用下面的代码,每笔交易大约需要8微秒。
voltdb::Procedure procedure("test.Insert", parameterTypes);
voltdb::InvocationResponse response;
voltdb::ParameterSet* params = procedure.params();
int trans = 100000;
for(i=0;i<trans;i++) {
params->addInt64(i).addString("Hello");
client.invoke(procedure, new FunctionCallback);
}
client.run();
我的问题是,如果事务数为1000,则在不执行client.run();
的情况下不会将它们推入数据库。
负载可以是可变的,有时是每秒100000个事务,有时是每秒10个事务。如果我在每次事务处理后致电"client.run()"
,根据我的理解,它不是异步的,则需要280微秒,这在我的情况下是不可接受的。
我将始终有大约5个线程对voltdb
进行读写,并且每个线程始终需要准确的数据。如果直到特定数量的记录(在我的情况下为1940条记录)中才写入数据,则其他线程可能找不到它。
如何将每次操作的交易时间保持在10微秒以下?