我每秒收到几条1000条消息,我希望尽快按时间顺序存储在Cassandra中。
目前,对于每条消息,我创建一个字符串,然后调用execute:
string cmd = @"INSERT INTO tick_store.""MY_Data""
(""SeqNum"", ""AskPrice"", ""AskSize"", ""MY_Complete_Code"", ""BidPrice"", ""BidSize"", ""LastPrice"", ""LastSize"", ""RecordType"", ""Volume"", ""utcDT"")
VALUES(" + ++CqlSeqNum + @", " + AskPrice + @", " + AskSize + @", '" + MY_Complete_Code + @"', " + BidPrice + @", " + BidSize + @", "
// + LastPrice + @", " + LastSize + @", '" + RecordType + @"', " + Volume + @", " + ToUnixTimestamp(utcDT) + @") ";
+LastPrice + @", " + LastSize + @", '" + RecordType + @"', " + Volume + @", '" + utcDT.ToString("yyyy-MM-ddTHH:mm:ss.fff") + @"') ";
CqlSession.Execute(cmd);
阻塞在“.Execute”行上。当我发表评论时表现很好。
作为参考,我可以将“cmd”写入磁盘而不会出现任何性能问题。
我可以尝试加速插入?
答案 0 :(得分:1)
我并不是特别了解C#驱动程序,但是您的性能受到了影响,因为您似乎正在使用同步执行语句。如果要最大化插入性能,则应使用 ExecuteAsync 进行异步路由。此外,请考虑使用准备好的声明,它们可以提高性能。