Cassandra的插入性能

0 投票
4 回答
1726 浏览
提问于 2025-04-16 17:21

抱歉我的英语不太好。

我刚开始学习Cassandra和它的数据模型。我正在尝试在本地的一个节点上插入一百万行数据。每一行有10列,我只在一个列族中插入这些数据。

用一个线程插入这些数据大约花了3分钟。但我想插入两百万行数据,并且希望时间也能保持在一个合理的范围内。于是我尝试用两个线程来插入两百万行,期待能得到类似3到4分钟的结果。但是我得到的结果是7分钟……是第一次结果的两倍。根据我在不同论坛上看到的信息,多线程通常被推荐用来提高性能。

这就是我想问的问题:在本地节点(客户端和服务器在同一台电脑上),在只有一个列族的情况下,使用多线程插入数据有用吗?

一些信息:

  • 我使用的是pycassa
  • 我把提交日志和数据存储在不同的硬盘上
  • 我为每个线程使用批量插入
  • 一致性级别:ONE
  • 复制因子:1

4 个回答

0

你可以考虑使用Redis。它在单个节点上的处理速度应该更快。不过,Redis和Cassandra是不同的,所以它是否适合你,得看你的具体需求。

0

试着在多个进程中运行多个客户端,而不是使用线程。

然后可以尝试不同的插入数据大小。

在3分钟内插入100万条数据,速度大约是每秒5500条,这对于一个单独的本地客户端来说已经很不错了。如果你使用的是多核机器,应该可以达到这个速度的好几倍,只要你使用多个客户端,可能是插入小批量的数据,或者是单条数据。

0

你可能遇到了Python的全局解释器锁(GIL)的问题,但更有可能的是你做错了什么。

比如,把200万行数据放在一个批次里,这就是在犯错。

撰写回答