Cassandra批量插入语句不适用于特定的机器

时间:2016-05-09 12:21:32

标签: c# cassandra cql

我正在测试Cassandra,我在C#中创建了一个程序,用于将数据插入到我的数据库中。我在一台16 gb ram和8个内核的机器上进行了测试。这完全没问题,插入1.000.000行没有任何问题,大约需要80-90秒。

现在,我正在使用4gb ram和1 core的不同(虚拟)机器上测试完全相同的程序。当我在这里测试它时,在大约50.000次插入之后它不再插入(一次是48.000,另一次是53.000)。

我的期望只会花费更长的时间,但它仍会完成插入1.000.000行。

基本上这是我的代码

private void bt_insert_Click(object sender, EventArgs e)
    {
        Connect();   //
        List<Meter> userList = fillList();
        DateTime timeStamp = System.DateTime.Now;
        session.Execute("insert into meters (ID, ConnectionMeterID, ConnectionMeterRevision, PeriodStart, PeriodEnd, Volume1, Volume2, Volume3, Volume4, Volume5, Volume6, Volume7, Volume8, DataTypeID, FileID, Remarks, QualityScore, LocationID, Removed) VALUES(1,2,3,'2013-04-03 07:01:00', '2013-04-03 07:01:00', 1,2,3,4,5,6,7,8,9,10,'testest',3.2,11,12)");
        CloseConnection();
    }

我没有得到任何反馈,因此我无法发布错误消息。我不认为它与C#有关。我认为这是卡桑德拉所做的事情,如果它认为要完成这项任务需要很长时间。

1 个答案:

答案 0 :(得分:2)

session.Execute是同步操作。执行完成后,您收到协调员的响应,因此代码正常。我不会在每次通话时通过连接和断开来删除群集,但保持连接打开(它实际上是性能杀手)。 关于硬件和测试,我们在当天做了同样的事情。我们尝试在像你这样的瘦硬件上执行疯狂的负载测试。因为Cassandra需要至少2个核心因为所有的工作都是在引擎盖下完成的,所以不要期待这个盒子里的奇迹。您应该可以使用该框进行开发,但不要期望1mil写入。