Scylla DB:SELECT (*) 在空表上超时

sim*_*djo 1 cassandra scylla

我有一个曾经有很多数据的表,但由于 ttl 很久以前,这些数据已经死亡。

但是,当我运行诸如SELECT * FROM my_table LIMIT 10SELECT count(*) FROM my_table几秒钟超时之类的查询时。

当我使用 spark-cassandra-connector(它在内部通过令牌范围查询表)读取数据时,实际上需要几分钟才能获得 0 个条目。

我怀疑压缩有问题,墓碑没有被删除,但表数据目录看起来并不大:

/var/lib/scylla$ sudo ls -la

/data/scylla/data/my_space/my_table-75f8388035c211e9bc85000000000011

总计 2604 drwx------ 4 scylla scylla 8192 十一月 27 日 15:55。

drwx------ 215 scylla scylla 16384 Nov 15 19:00 ..

-rw-r--r-- 1 scylla scylla 538 Nov 25 22:58 mc-1552402-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 162869 Nov 25 22:58 mc-1552402-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 10 日 22:58 mc-1552402-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 656 Nov 25 22:58 mc-1552402-big-Filter.db

-rw-r--r-- 1 scylla scylla 72244 Nov 25 22:58 mc-1552402-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 22:58 mc-1552402-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 22:58 mc-1552402-big-Statistics.db

-rw-r--r-- 1 scylla scylla 176 Nov 25 22:58 mc-1552402-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 22:58 mc-1552402-big-TOC.txt

-rw-r--r-- 1 scylla scylla 474 Nov 25 22:38 mc-1578193-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 135730 Nov 25 22:38 mc-1578193-big-Data.db

-rw-r--r-- 1 scylla scylla 10 Nov 25 22:38 mc-1578193-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 496 Nov 25 22:38 mc-1578193-big-Filter.db

-rw-r--r-- 1 scylla scylla 67215 Nov 25 22:38 mc-1578193-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 22:38 mc-1578193-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 22:38 mc-1578193-big-Statistics.db

-rw-r--r-- 1 scylla scylla 148 Nov 25 22:38 mc-1578193-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 22:38 mc-1578193-big-TOC.txt

-rw-r--r-- 1 scylla scylla 202 Nov 25 23:12 mc-1582107-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 49607 Nov 25 23:12 mc-1582107-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 10 日 23:12 mc-1582107-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 176 Nov 25 23:12 mc-1582107-big-Filter.db

-rw-r--r-- 1 scylla scylla 24733 Nov 25 23:12 mc-1582107-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 23:12 mc-1582107-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 23:12 mc-1582107-big-Statistics.db

-rw-r--r-- 1 scylla scylla 92 Nov 25 23:12 mc-1582107-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 23:12 mc-1582107-big-TOC.txt

-rw-r--r-- 1 scylla scylla 1826 年 11 月 25 日 22:39 mc-1601869-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 639833 Nov 25 22:39 mc-1601869-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 10 日 22:39 mc-1601869-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 2096 年 11 月 25 日 22:39 mc-1601869-big-Filter.db

-rw-r--r-- 1 scylla scylla 251799 Nov 25 22:39 mc-1601869-big-Index.db

-rw-r--r-- 1 scylla scylla 98 Nov 25 22:39 mc-1601869-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 22:39 mc-1601869-big-Statistics.db

-rw-r--r-- 1 scylla scylla 428 Nov 25 22:39 mc-1601869-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 22:39 mc-1601869-big-TOC.txt

-rw-r--r-- 1 scylla scylla 514 Nov 25 23:40 mc-1664251-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 146270 Nov 25 23:40 mc-1664251-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 10 日 23:40 mc-1664251-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 496 Nov 25 23:40 mc-1664251-big-Filter.db

-rw-r--r-- 1 scylla scylla 69800 Nov 25 23:40 mc-1664251-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 23:40 mc-1664251-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 23:40 mc-1664251-big-Statistics.db

-rw-r--r-- 1 scylla scylla 148 Nov 25 23:40 mc-1664251-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 23:40 mc-1664251-big-TOC.txt

-rw-r--r-- 1 scylla scylla 522 Nov 25 23:39 mc-1679659-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 147350 Nov 25 23:39 mc-1679659-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 9 日 23:39 mc-1679659-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 496 Nov 25 23:39 mc-1679659-big-Filter.db

-rw-r--r-- 1 scylla scylla 70504 Nov 25 23:39 mc-1679659-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 23:39 mc-1679659-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 23:39 mc-1679659-big-Statistics.db

-rw-r--r-- 1 scylla scylla 148 Nov 25 23:39 mc-1679659-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 23:39 mc-1679659-big-TOC.txt

-rw-r--r-- 1 scylla scylla 562 Nov 25 23:05 mc-1742082-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 181106 Nov 25 23:05 mc-1742082-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 8 日 23:05 mc-1742082-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 656 Nov 25 23:05 mc-1742082-big-Filter.db

-rw-r--r-- 1 scylla scylla 69320 Nov 25 23:05 mc-1742082-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 23:05 mc-1742082-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 23:05 mc-1742082-big-Statistics.db

-rw-r--r-- 1 scylla scylla 176 Nov 25 23:05 mc-1742082-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 23:05 mc-1742082-big-TOC.txt

-rw-r--r-- 1 scylla scylla 554 Nov 25 23:24 mc-1774537-big-CompressionInfo.db

-rw-r--r-- 1 scylla scylla 176335 Nov 25 23:24 mc-1774537-big-Data.db

-rw-r--r-- 1 scylla scylla 11 月 25 日 9 日 23:24 mc-1774537-big-Digest.crc32

-rw-r--r-- 1 scylla scylla 656 Nov 25 23:24 mc-1774537-big-Filter.db

-rw-r--r-- 1 scylla scylla 67974 Nov 25 23:24 mc-1774537-big-Index.db

-rw-r--r-- 1 scylla scylla 54 Nov 25 23:24 mc-1774537-big-Scylla.db

-rw-r--r-- 1 scylla scylla 6234 Nov 25 23:24 mc-1774537-big-Statistics.db

-rw-r--r-- 1 scylla scylla 176 Nov 25 23:24 mc-1774537-big-Summary.db

-rw-r--r-- 1 scylla scylla 102 Nov 25 23:24 mc-1774537-big-TOC.txt drwx------ 2 scylla scylla 6 Feb 21 2019 staging drwx------ 2 scylla scylla 2019 年 2 月 21 日 6 日 上传

修改时间很新鲜,所以可能确实发生了一些压缩。

我的表配置:

CREATE TABLE my_table (
    f1 uuid,
    f2 tinyint,
    c boolean,
    PRIMARY KEY (f1, f2)
) WITH CLUSTERING ORDER BY (f1 ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'ALL'}
    AND comment = ''
    AND compaction = {'class': 'SizeTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

Iva*_*nyy 5

  1. 在执行这些长 CQL 时,您是否看到 CPU、IO、网络有任何负载?请参阅https://docs.scylladb.com/troubleshooting/report_scylla_problem/#report-a-performance-problem
  2. 您可以将nodetool cfstats https://docs.scylladb.com/operating-scylla/nodetool-commands/cfstats/ 中的统计信息进行比较,以检查已知的表大小和墓碑平均值与您在磁盘上看到的内容。
  3. 您可以尝试为查询启用跟踪并查看您的查询是如何执行的。有正常的执行计划吗?哪些步骤比较慢?它接触了多少个分区/节点?
  4. 主要是如何获取 cql 查询的墓碑计数?说通过跟踪运行查询后,您可以看到查询执行的总读取次数以及那里有多少墓碑。

考虑到结果,您将能够从那里搬家。


Bot*_*nes 5

gc_grace_period默认情况下,墓碑保持活动状态为10 天。这是为了防止数据复活,即确保每个有数据落入墓碑的节点都收到该墓碑(通过修复)。

您的查询可能正在阅读数以千计的墓碑,但找不到任何要返回的内容。