2011-11-02 5 views
4

J'ai testé le cache de ligne, et j'ai découvert qu'il nécessite une grande quantité de tas. Je voudrais vérifier cette théorie.Exigences de segment de mémoire cache de ligne (Cassandra 1.0)

Ceci est mon test espace clé: { TestCF: {

row_key_1: { 
     { clientKey: "MyTestCluientKey" }, 
     { tokenSecret: "kd94hf93k423kf44" }, 
     { verifier: "hfdp7dh39dks9884" }, 
     { callbackUrl: "http%3A%2F%2Fprinter.test.com%2Fready" }, 
     { accountId: "234567876545"}, 
     { mytestResourceId: "ADB112"}, 
     { dataTimestamp: "1308903420400" }, 
     { dataType: "ACCESS_PERMANENT"} 
    }, 
    row_key_2: { 
     { clientKey: "MyTestCluientKey" }, 
     { tokenSecret: "qdqergvhetyhvetyh" }, 
     { verifier: "wtrgvebyjnrnuiucewrqxcc" }, 
     { callbackUrl: "http%3A%2F%2Fprinter.test.com%2Fready" }, 
     { accountId: "23456789746534"}, 
     { mytestResourceId: "DQERGCWRTHB"}, 
     { dataTimestamp: "130890342333200" }, 
     { dataType: "ACCESS_LIMITED"} 
    }, 

... row_key_x: { .... },

} 

}

Chaque ligne de CF: TestCF contient 8 colonnes. Le cache de ligne est activé, le cache de clé est désactivé. Taux de succès de ligne 0,99 - c'est un test en lecture seule.

Mes charges d'essai 1.500.000 de lignes dans le cache - et cela alloue environ tas 3.5GB - c'est d'environ 2 Ko seule ligne pro - c'est beaucoup ....

Est-il possible, cette ligne unique (8 colonnes) peut allouer environ 2KB tas?

Merci, Maciej

Répondre

5

Oui, la règle de base est qu'une ligne dans un cache memtable ou une ligne prendra environ 8x à 12x sa taille sérialisé. C'est l'une des raisons pour lesquelles le cache hors-champ est la valeur par défaut dans la version 1.0 si vous avez installé JNA: off-heap stocke les lignes sous forme sérialisée.

+0

Merci pour la réponse. J'utiliserai des noms de colonnes plus courts - cela devrait économiser de la RAM. 2KB est vraiment hardcore. Le cache hors-pile est beaucoup plus lent, mais de toute façon mieux que l'accès direct au disque dur. –

+0

J'ai testé des noms de colonnes plus courts - dans mon cas, je peux économiser 300 Mo de RAM pour un cache de lignes de 4 Go. 4 Go -> 3,7 Go. La meilleure solution consiste à basculer vers le cache de ligne de tas. –