2017-07-20 6 views
0

J'ai une table où j'insère des données avec un TTL de 1 minute et j'ai un avertissement dans DSE OpsCenter sur le nombre élevé de pierres tombales dans cette table. Ce qui est logique car en moyenne 80 enregistrements par minute sont insérés dans ce tableau. Ainsi par exemple pour une journée complète 80 * 60 * 24 = 115200 enregistrements insérés et TTL en une journée.Cassandra: comment réduire le nombre de pierres tombales dans une table? (tombstone_compaction_interval, gc_grace_seconds et LevelledCompactionStrategy)

Ma question est que dois-je faire pour diminuer le nombre de pierres tombales dans cette table?

J'ai cherché dans tombstone_compaction_interval et gc_grace_seconds et c'est là que ça devient un peu confus que je vais avoir des problèmes pour comprendre l'impact exact de ces propriétés sur les pierres tombales (même après avoir lu la documentation fourni par DataStax - http://docs.datastax.com/en/cql/3.1/cql/cql_reference/compactSubprop.html et http://docs.datastax.com/en/cql/3.1/cql/cql_reference/tabProp.html).

J'ai également examiné LevelledCompactionStrategy (https://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra) car il semble également avoir un impact sur le compactage des pierres tombales bien que je ne comprenne pas complètement pourquoi. Donc, j'espère que quelqu'un pourra m'aider à mieux comprendre comment tout cela fonctionne, ou même simplement me faire savoir si je vais dans la bonne direction.

Répondre

1

Veuillez lire ceci http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html. Très bon lire.

Général: Le paramètre gc_grace_seconds correspond au temps minimal pendant lequel les pierres tombales seront conservées sur le disque après la suppression des données. Nous devons nous assurer que toutes les répliques ont reçu la suppression et que toutes les pierres tombales ont été stockées pour éviter les problèmes de données zombies. Par défaut ses 10 jours. Tombeau_compaction_interval: Dans le cadre de cette JIRA (https://issues.apache.org/jira/browse/CASSANDRA-4781), cette propriété a été introduite. Lorsque le taux de compactage était suffisamment élevé pour déclencher un compactage SSTable unique, mais que les pierres tombales n'étaient pas expulsées en raison du chevauchement des SSTables.

Je ne suis pas sûr de votre datamodel actuel mais voici mes suggestions.

  1. Vous devez probablement changer de DM. Veuillez lire https://academy.datastax.com/resources/getting-started-time-series-data-modeling et Time series modelling(with start & end date) in cassandra
  2. Modifiez le motif d'écriture.
  3. Modifier le motif de lecture. Essayez de lire uniquement les données actives. (Selon votre DM actuel, lorsque vous le lisez, il passe dans les cellules tombales afin d'atteindre les cellules actives)
  4. Essayez d'utiliser TimeWindowCompactionStrategy et réglez-le en fonction de votre charge de travail. (http://thelastpickle.com/blog/2017/01/10/twcs-part2.html)
  5. Si vous utilisez TTL lors de l'insertion (comme avec INSERT ou UPDATE stmnt), vérifiez si vous pouvez le remplacer par le niveau Table.

Si vous utilisez STCS et que vous voulez changer de compactage sous-propriétés, vous pourriez probablement changer unchecked_tombstone_compaction = true et min_threshold = 3 (peu agressif)

+0

Merci pour la réponse rapide, je vais Lisez tous les liens que vous avez fournis et je vous écrirai à nouveau si j'ai d'autres questions. Sinon, je vais marquer cela comme accepté :) –