怎么提高cassandra讀存儲性能-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)怎么提高cassandra讀存儲性能的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為關(guān)嶺企業(yè)提供專業(yè)的網(wǎng)站設計、做網(wǎng)站,關(guān)嶺網(wǎng)站改版等技術(shù)服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

cassandra作為一個分布式的存儲性能,其特點是寫快讀慢。最近看了cassandra 1.0的文檔,發(fā)現(xiàn)1.0在讀性能上做了一些提高。用戶可以根據(jù)系統(tǒng)的要求,合理配置,從而提高讀的性能。下面創(chuàng)新互聯(lián)網(wǎng)站建設公司,小編來講解下如何提高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),來設定read repair的機率。

Compaction:使用Leveled compaction,并設定multithreaded_compaction,提高compaction的速度。

在《cassandra中的壓縮策略》(/tupian/20230522/2266061.html Compaction和Leveled Compaction。

對于leveled compaction,可以對讀寫性能帶來提升。在cassandra1.0的文檔中說明,使用了leveled compaction,讀性能提高了400%。

Leveled compaction能夠給讀性能帶來提高的原因是,leveled comapction中每一層都沒有重復的記錄,這樣保證了可以保證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??梢杂胣odetool 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提高,甚至設置成全部row的keys。這樣保證所有的讀操作,都能在key cache中命中。

4、設置JVM heap的大小

在cassandra 1.0中的,key cache時保存在JVM heap中,而Row cache是保存在電腦的內(nèi)存中。如果想要提高row cache 的命中率,就要注意JVM heap大小的設置。既要保證JVM heap可以容納menber table, key cache以及其他大概1GB的使用,又要防止JVM heap過大,影響電腦中row cache的命中。

感謝各位的閱讀!關(guān)于“怎么提高cassandra讀存儲性能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

網(wǎng)站題目:怎么提高cassandra讀存儲性能-創(chuàng)新互聯(lián)
分享URL:http://bm7419.com/article12/ceosgc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、動態(tài)網(wǎng)站、小程序開發(fā)、軟件開發(fā)、外貿(mào)建站移動網(wǎng)站建設

廣告

聲明:本網(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)

成都app開發(fā)公司