Cassandra le délai d'attente
Je suis en tirant une grande quantité de données de cassandra 2.0, mais malheureusement exception délai.
Ma table:
CREATE KEYSPACE StatisticsKeyspace
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
CREATE TABLE StatisticsKeyspace.HourlyStatistics(
KeywordId text,
Date timestamp,
HourOfDay int,
Impressions int,
Clicks int,
AveragePosition double,
ConversionRate double,
AOV double,
AverageCPC double,
Cost double,
Bid double,
PRIMARY KEY(KeywordId, Date, HourOfDay)
);
CREATE INDEX ON StatisticsKeyspace.HourlyStatistics(Date);
Ma requête:
SELECT KeywordId, Date, HourOfDay, Impressions, Clicks,AveragePosition,ConversionRate,AOV,AverageCPC,Bid
FROM StatisticsKeyspace.hourlystatistics
WHERE Date >= '2014-03-22' AND Date <= '2014-03-24'
J'ai changé les configurations dans mon cassandra.yaml
fichier.
read_request_timeout_in_ms: 60000
range_request_timeout_in_ms: 60000
write_request_timeout_in_ms: 40000
cas_contention_timeout_in_ms: 3000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 60000
Mais ça en jette toujours délai d'environ 10 secondes. Des idées comment puis-je résoudre ce problème?
Est-ce à l'aide de l'cassandra-cli ou une application java? À partir de vos mots-clés, cela reste incertain bien que les indicateurs de requête à la cli.
OriginalL'auteur Wild Goat | 2014-06-16
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez le client java de datastax, la pagination est activée par défaut avec un ensemble de lignes de 5000. Si vous obtenez toujours un délai d'attente, vous pouvez essayer de réduire cette aide
(lire plus)
Si vous êtes à l'aide de la cli, vous pouvez avoir besoin d'expérimenter avec une sorte de manuel pagination:
De détecter certains problèmes de cluster, vous pouvez essayer un select avec une limite de 1, peut-être il ya un problème sous-jacent.
Espère que ça aide.
Si vous rencontrez toujours des problèmes de performances avec votre requête, je regarde votre index secondaire, puisque la quantité de données transférées semble raisonnable (seuls les "petits" types de données sont retournées). Si je suis en droit, la modification de la taille de l'extraction ne changera pas beaucoup.
Au lieu de cela, avez-vous d'insérer les dates que dans votre "Date" (timestamp) de la colonne? Si vous êtes l'insertion réelle des horodateurs au lieu de cela, l'index secondaire sur cette colonne sera très lent en raison de la cardinalité. Si vous insérez un jour seulement, le timestamp par défaut date + "00:00:00" + TZ qui devrait réduire la cardinalité et donc d'améliorer la vitesse. (attention pour le fuseau horaire de questions!) Pour être absolument sûr, essayez un index secondaire sur une colonne avec un type de données différent, comme un int pour la Date (en comptant les jours depuis 1970-01-01 ou qqch).
SocketOptions
et vous définissez le délai à l'intérieur de mon datastax client java. Pour l'instant il n'a pas de délai d'attente, mais prend une éternité. Vous pensez que je peut améliorer les performances en optimisantFetchSize
?J'ai mis à jour ma réponse. Essayez si la réduction de la FetchSize aide à cerner le point de la question. C'est peut-être l'index secondaire (voir ma réponse).
merci pour votre réponse. Je n'ai toujours pas le point pourquoi timestamp réduction de la performance depuis que je suis arrondi à minuit, dans ma compréhension certain nombre d'indices ne devraient pas varier d'un nombre de jours depuis 1970, mais je vais certainement l'essayer dès maintenant! Aussi, pensez-vous que je devrais passer ma Date d'index primaire et keywordId comme secondaire, comment cela pourrait refléter sur mon INSERT/performances de LECTURE? Merci beaucoup!
Eh bien, le principal impact de la PK est de la répartition entre les nœuds. Pour optimiser les performances d'écriture que vous voulez une même distribution. En utilisant uniquement les attributs relatifs au temps entraînera toujours chaud s'arrête (par exemple, tous les écrire entre 10:00 et 11:00 peut aller vers le même nœud). Pourriez-vous donner quelques informations sur votre "keywordId"? Si il y a un nombre limité de mots clés Id, vous pouvez ajouter ce que un autre index secondaire à tout moment et voir si cela augmente de recherche de vitesse. Aussi, essayez de moniteur de débit de lecture/écriture par exemple à l'aide de la Datastax opsCenter ou similaire.
merci! J'ai essayé d'utiliser int jours depuis 1970 et ressemble à un meilleur rendement, mais de toute façon j'ai qu'un seul nœud, pouvez-vous expliquer ce comportement et pourquoi il est plus rapide d'envisager de fait que j'ai été arrondi tous les Date à minuit 00:00:00 et en cours d'exécution sur le nœud. Aussi, mon mot clé est une chaîne de caractères dans le format suivant:
53961673d446bd71503d8bde
OriginalL'auteur John