Я использую приведенный ниже фрагмент кода, который занимает около 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 микросекунд?