這篇文章給大家分享的是有關(guān)怎么提高cassandra讀存儲性能的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
cassandra作為一個分布式的存儲性能,其特點是寫快讀慢。最近看了cassandra 1.0的文檔,發(fā)現(xiàn)1.0在讀性能上做了一些提高。用戶可以根據(jù)系統(tǒng)的要求,合理配置,從而提高讀的性能。下面創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,小編來講解下如何提高cassandra讀存儲性能?
如何提高cassandra讀存儲性能
1、禁用read repair
每一次讀操作,cassandra都會在后臺進行read repair操作。如果只要求讀一個節(jié)點數(shù)據(jù),cassandra在讀到一個節(jié)點后,就將結(jié)果返回客戶端,然后用read repair對其他的replicas進行同步(根據(jù)timestamp)。如果要求讀多個節(jié)點,那么cassandra就讀多個節(jié)點,然后根據(jù)timestamp進行比較,返回客戶端新的數(shù)據(jù),然后再調(diào)用read repair對其他節(jié)點進行同步。Read repair在后臺的操作,會占用一定的CPU和I/O,所以影響讀性能。要提高讀的性能,可以將read repair禁用掉,當然這會影響到一致性,但是對于節(jié)點比較穩(wěn)定的系統(tǒng),是可以考慮的。一種方法時用hinted off和nodel tool的node reapair定期對其進行同步,提高一致性。在cassandra1.0之前,禁用read repair需要修改代碼,新的cassandra1.0可以通過對每個讀操作調(diào)參(0到1),來設(shè)定read repair的機率。
Compaction:使用Leveled compaction,并設(shè)定multithreaded_compaction,提高compaction的速度。
在《cassandra中的壓縮策略》(/tupian/20230522/2266061.html Compaction和Leveled Compaction。
對于leveled compaction,可以對讀寫性能帶來提升。在cassandra1.0的文檔中說明,使用了leveled compaction,讀性能提高了400%。
Leveled compaction能夠給讀性能帶來提高的原因是,leveled comapction中每一層都沒有重復(fù)的記錄,這樣保證了可以保證90%的讀都可以在一個sstable中完成。最壞的情況是一個記錄存在在每一層,但是這個時候10TB的數(shù)據(jù)也就7層,查7個SStable就可以了。
2、Compression
在http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-compression中對cassandra 的compression做了介紹。這里說道,用compression,其讀的性能提高了25%-35%。
Compression 之所以能夠提高讀的性能,是因為經(jīng)過compression之后,每個節(jié)點能夠存儲更多的數(shù)據(jù)。同時Cassandra能在SStable index中夠迅速地定位到記錄的位置,然后解壓這些記錄進行操作。也就是說compression從兩方面提高了讀的速度:
允許更多的數(shù)據(jù)在內(nèi)存中對于不再內(nèi)存中,但是經(jīng)常訪問的數(shù)據(jù),也能通過SStable index更快地訪問。
如何提高cassandra讀存儲性能
3、調(diào)整key cache和row cache的值
Key cache:在內(nèi)存中保存了記錄的位置。當一個row的column很大時,不適宜將row整個放在內(nèi)存中,這個時候只要保存key的位置,也就是row的位置就可以。這樣可以讓程序快速定位到row并進行操作。對于有大量對row進行操作的系統(tǒng),有很大的提高。默認時200,000。可以用nodetool cfstats或者時jconsole進行檢測,查看其命中率。
Row cache:row cache 把整個row 的內(nèi)容都放在內(nèi)存中。適合的情況是,有一小部分hot data是經(jīng)常反問的,或者要返回整個columns.在使用row cache時,用注意它對內(nèi)存的影響。
key cache 如果命中的話,會減少一次的查詢。Row cache如果命中的話,減少兩次的查詢,對于column的類型是圖片的系統(tǒng),當然每個row是很大的,不能寄希望于row cache提高性能。但是我們可以把key cache提高,甚至設(shè)置成全部row的keys。這樣保證所有的讀操作,都能在key cache中命中。
4、設(shè)置JVM heap的大小
在cassandra 1.0中的,key cache時保存在JVM heap中,而Row cache是保存在電腦的內(nèi)存中。如果想要提高row cache 的命中率,就要注意JVM heap大小的設(shè)置。既要保證JVM heap可以容納menber table, key cache以及其他大概1GB的使用,又要防止JVM heap過大,影響電腦中row cache的命中。
感謝各位的閱讀!關(guān)于“怎么提高cassandra讀存儲性能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
網(wǎng)站題目:怎么提高cassandra讀存儲性能-創(chuàng)新互聯(lián)
分享URL:http://vcdvsql.cn/article12/ceosgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、動態(tài)網(wǎng)站、小程序開發(fā)、軟件開發(fā)、外貿(mào)建站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)