Являются ли надгробия инсументом в массиве кассандры? - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь выяснить, как влияет производительность на использование массивов кассандры.Согласно моим экспериментам, Кассандра генерирует надгробия при вставке или не инкрементном обновлении массивов (не замороженных).Однако, согласно выводу трассировки cqlsh, надгробия не читаются, поэтому они не должны влиять на производительность ...?

CREATE TABLE tomb_test (id text PRIMARY KEY, events list<text>);
insert into tomb_test (id, events) values ('1', ['A', 'B']);

bin$ nodetool flush

-- you can see there is "marked_deleted" tombstone for events array
sstabledump node1/data0/spark/test-ef990510057b11e98254712032ed3bea/mc-1-big-Data.db
[
  {
    "partition" : {
      "key" : [ "1" ],
      "position" : 0
    },
    "rows" : [
      {
        "type" : "row",
        "position" : 62,
        "liveness_info" : { "tstamp" : "2018-12-24T14:04:07.188625Z" },
        "cells" : [
          { "name" : "events", "deletion_info" : { "marked_deleted" : "2018-12-24T14:04:07.188624Z", "local_delete_time" : "2018-12-24T14:04:07Z" } },
          { "name" : "events", "path" : [ "c7481be0-0784-11e9-8254-712032ed3bea" ], "value" : "A" },
          { "name" : "events", "path" : [ "c7481be1-0784-11e9-8254-712032ed3bea" ], "value" : "B" }
        ]
      }
    ]
  }
]

cqlsh:spark> tracing on
cqlsh:spark> select * from tomb_test ;
-- however when reading from tomb_test, no tombstones are scanned
Read 1 live rows and 0 tombstone cells [ReadStage-3] | 2018-12-24 15:07:02.445000 | 127.0.0.1 |           8357 | 127.0.0.1

PS: Когда таблица создается с замороженным типом списка, надгробие не создается

CREATE TABLE tomb_test (id text PRIMARY KEY, events frozen<list<text>>);

Кассандра версия: 3.11.3

1 Ответ

0 голосов
/ 27 декабря 2018

Поскольку вы устанавливаете значение списка (не добавляете к нему), вставка должна удалить все предыдущие ячейки для этого списка, поскольку каждая запись является ячейкой, и записи не выполняют никаких операций чтения.Это удаление является надгробной плитой диапазона, удаляющей весь ряд ячеек, а не одну надгробную клетку.Это будет затенять любые предыдущие данные в списке событий.

Примечание. В случае замороженных коллекций вся коллекция сериализуется в пределах одной ячейки, поэтому она будет переопределена и удалять ее не нужно.

Read 1 live rows and 0 tombstone cells немного вводит в заблуждение, на самом деле он читает надгробие, но там нет надгробий.Я думаю, что надгробные плиты диапазона были добавлены в этом количестве в CASSANDRA-8527 , но на многих текущих версиях кассандры они не будут.

...