Cassandra 批量插入语句在特定机器上不起作用
Cassandra bulk insert statement does not work on specific machine
我正在测试 Cassandra,我用 C# 编写了一个程序来将数据插入我的数据库。我在一台有 16 GB 内存和 8 核的机器上测试了它。这工作得很好,它插入 1.000.000 行没有任何问题,大约需要 80-90 秒。
现在我正在另一台具有 4gb 内存和 1 个内核的(虚拟)机器上测试完全相同的程序。当我在这里测试它时,在大约 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();
}
我没有收到任何反馈,所以我无法 post 收到错误消息。我认为它与 C# 无关。我认为这是 Cassandra 造成的,如果它认为执行任务需要很长时间。
session.Execute 是一个同步动作。执行完成后,您会收到协调员的回复,因此代码正常。我不会在每次调用时使用连接和断开连接来破坏集群,而是保持连接打开(它实际上是一个性能杀手)。
关于硬件和测试,我们过去做了同样的事情。我们尝试在像您这样的瘦硬件上执行疯狂的负载测试。不要指望那个盒子会出现奇迹,因为 Cassandra 至少需要 2 个核心,因为所有工作都在幕后完成。您应该能够使用那个盒子进行开发,但不要指望有 100 万次写入。
我正在测试 Cassandra,我用 C# 编写了一个程序来将数据插入我的数据库。我在一台有 16 GB 内存和 8 核的机器上测试了它。这工作得很好,它插入 1.000.000 行没有任何问题,大约需要 80-90 秒。
现在我正在另一台具有 4gb 内存和 1 个内核的(虚拟)机器上测试完全相同的程序。当我在这里测试它时,在大约 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();
}
我没有收到任何反馈,所以我无法 post 收到错误消息。我认为它与 C# 无关。我认为这是 Cassandra 造成的,如果它认为执行任务需要很长时间。
session.Execute 是一个同步动作。执行完成后,您会收到协调员的回复,因此代码正常。我不会在每次调用时使用连接和断开连接来破坏集群,而是保持连接打开(它实际上是一个性能杀手)。 关于硬件和测试,我们过去做了同样的事情。我们尝试在像您这样的瘦硬件上执行疯狂的负载测试。不要指望那个盒子会出现奇迹,因为 Cassandra 至少需要 2 个核心,因为所有工作都在幕后完成。您应该能够使用那个盒子进行开发,但不要指望有 100 万次写入。