2016-09-07 8 views
0

Я получаю несколько 1000 сообщений в секунду, которые я хотел бы хранить в Кассандре в режиме ASAP.Есть ли более быстрый способ вставки в Cassandra?

В настоящее время для каждого сообщения я создаю строку, а затем вызвать выполнение:

 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» на диск без каких-либо проблем с производительностью.

Что я могу попытаться ускорить вставку?

ответ

1

Я не особо знаю драйвер C#, но вы получаете удар производительности, потому что кажется, что вы используете синхронный инструкции выполнения. Если вы хотите максимизировать производительность вставки, вы должны пойти по адресу асинхронный маршрут с ExecuteAsync. Кроме того, пожалуйста, рассмотрите подготовленные заявления, они могут дать небольшой прирост производительности.

Смежные вопросы