【问题标题】:Why does it take so long to create a table?为什么创建表需要这么长时间?
【发布时间】:2016-05-29 02:44:05
【问题描述】:

我正在创建以下架构:

CREATE TABLE stats_by_site_tracking_hourly (
    d_tally text, -- 2016-02
    d_date timestamp, -- 2016-02-01 13
    site_id int,
    is_new_member int, -- 1/0
    device text, -- desktop/tablet/mobile/unknown
    tracking_medium text,
    tracking_source text,
    tracking_campaign text,
    tracking_term text,
    accepted counter,
    adjusted_accepted counter,
    rejected counter,
    adjusted_rejected counter,
    error counter,
    impressions_positive counter,
    adjusted_impressions_positive counter,
    impressions_negative counter,
    adjusted_impressions_negative counter,
    revenue counter,
    adjusted_revenue counter,
    reversals_rejected counter,
    reversals_revenue counter,
    PRIMARY KEY ((d_tally), site_id, d_date, is_new_member, device, tracking_medium, tracking_source, tracking_campaign, tracking_term)
);

当我运行该语句时,似乎前几列处理得很快,但是当它移动到计数器列时,每列的速度越来越慢。

我已将此语句运行 5 分钟,但仍未完成。

谁能提供一些关于这种行为的见解?


This 是 CQLSH 在创建表时的样子,截屏时它已经有 20 分钟左右没有进行。


我只是将创建表命令放在一行中,它立即生效。

CREATE TABLE stats_by_site_tracking_hourly ( d_tally text, d_date timestamp, site_id int, is_new_member int, device text, tracking_medium text, tracking_source text, tracking_campaign text, tracking_term text, accepted counter, adjusted_accepted counter, rejected counter, adjusted_rejected counter, error counter, impressions_positive counter, adjusted_impressions_positive counter, impressions_negative counter, adjusted_impressions_negative counter, revenue counter, adjusted_revenue counter, reversals_rejected counter, reversals_revenue counter, PRIMARY KEY ((d_tally), site_id, d_date, is_new_member, device, tracking_medium, tracking_source, tracking_campaign, tracking_term) );

【问题讨论】:

  • " 前几列似乎处理得很快,但是当它移动到计数器列时,每列的速度越来越慢" --> 你是如何衡量模式创建的进度的?
  • 当我将模式复制到 cqlsh 时,它一次粘贴一行,我假设每一列的暂停是因为它正在添加列。这在很大程度上是一个假设,但是我想不出任何其他延迟的原因。我在我的问题中添加了 cqlsh 的屏幕截图。
  • “当我将模式复制到 cqlsh 时,它一次粘贴一行,我假设每一列的暂停是因为它正在添加列”--> 这可能是因为您的SSH 连接很慢。 cqlsh 在完成语句之前,不会将 CREATE TABLE 查询发送到 Cassandra,不是逐行
  • SSH 连接很好,并且在通过 ssh 或 cqlsh 运行任何命令时性能良好。我唯一遇到速度变慢的情况是在创建大表时。
  • 它只是一个3节点集群。从调查看来,当运行命令时,CQLSH 占用了 70% 的 RAM,并且在服务器上使用了 107% 的 CPU,从而减慢了一切速度。

标签: cassandra cql cassandra-3.0


【解决方案1】:

我在这里提出了这个错误:here

这原来是由于架构中的选项卡。 CQLSH 尝试在每次进入选项卡时自动完成。

【讨论】:

  • 我不认为这还会存在!
【解决方案2】:

我在几台计算机上遇到了同样的问题,并且似乎是 cqlsh> 交互式 shell 中的一个错误。如果您从终端执行脚本,它将立即执行:

> cqlsh -f your_cql_script.cql <hostname>

无论大小的桌子,这都会立即运行,并会为您节省大量时间。

【讨论】:

  • 我将此作为错误发布到 Datastax,结果是 cqlsh 解释选项卡并尝试自动完成! +1 解决方法:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多