我有一個CQL表,看起來像(CQL 3,卡桑德拉2.0。*):同步SELECT + INSERT與INSERT ...之間的性能差異...如果CQL中不存在?
CREATE TABLE IF NOT EXISTS user_things (
user_id bigint,
thing_id bigint,
created_at timeuuid,
PRIMARY KEY (user_id, thing_id)
);
我想要做的插入像
INSERT INTO user_things (user_id, thing_id, created_at) VALUES (?, ?, now())
,但只有當行不存在。
我可以在兩個同步語句做到這一點(第一個SELECT,後跟一個INSERT如果SELECT沒有返回行)或我可以使用INSERT ... IF NOT EXISTS。
CQL docs狀態「但請注意,使用IF NOT EXISTS將產生不可忽略的性能成本(內部使用Paxos),因此應謹慎使用。」
我想知道是否有人已經做基準測試,看看有什麼更好的性能,如果我們有很多這些操作發生的? (說數百第二)
由 「複合分區鍵」 你的意思是像'PRIMARY KEY((USER_ID,thing_id))'VS'PRIMARY KEY(USER_ID,thing_id)'(聚類列)? –
是的,這就是我的意思。 –