datastax cppドライバを使用して作成した単純なテーブルがあります。テーブルはcassandraデータベースに格納されています。表は次のように作成されます。datastax cppドライバを使用したcassandraデータベースの挿入時間を改善
create table data (
dt_id int PRIMARY KEY,
dt_numbers list<int>,
insertion_time timestamp,
)
ので、行ごとに、私は、問題は、私は100万rowσを挿入しようとしましたが、時間は35分であったということです
VALUES (1, [1,2,3,4], now())
を挿入しています。その時間は、プロダクション環境では高いとみなされます。
いくつかの擬似コードは:
std::map<int, vector<int>> myData;
for(all entries in myData) {
const char* query = "INSERT INTO...";
future = cass_session_execute(session, statement);
cass_future_wait(future);
}
データは、STD ::マップに格納されており、私が最初に書かされるマップインデックス気にしませんが、すべてのマップエントリは、1つの挿入されなければなりません。このプログラムのパフォーマンスを向上させる方法はありますか?例はありますか?
私がこれまで使っていたコードは、他の後に1行を記述することであり、あなたが1行を書いているので、あなたはパフォーマンスの低下を取得しているdatastax例の1つ
CassError insert_into_basic(CassSession* session, const char* key, const Basic* basic) {
CassError rc = CASS_OK;
CassStatement* statement = NULL;
CassFuture* future = NULL;
const char* query = "INSERT INTO examples.basic (key, bln, flt, dbl, i32, i64) VALUES (?, ?, ?, ?, ?, ?);";
statement = cass_statement_new(query, 6);
cass_statement_bind_string(statement, 0, key);
cass_statement_bind_bool(statement, 1, basic->bln);
cass_statement_bind_float(statement, 2, basic->flt);
cass_statement_bind_double(statement, 3, basic->dbl);
cass_statement_bind_int32(statement, 4, basic->i32);
cass_statement_bind_int64(statement, 5, basic->i64);
future = cass_session_execute(session, statement);
cass_future_wait(future);
rc = cass_future_error_code(future);
if (rc != CASS_OK) {
print_error(future);
}
cass_future_free(future);
cass_statement_free(statement);
return rc;
}