Я использую фрагмент кода ниже, который занимает около 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 микросекунд?
Задача ещё не решена.
Других решений пока нет …