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

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

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

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

如何提高cassandra讀存儲(chǔ)性能

1、禁用read repair

每一次讀操作,cassandra都會(huì)在后臺(tái)進(jìn)行read repair操作。如果只要求讀一個(gè)節(jié)點(diǎn)數(shù)據(jù),cassandra在讀到一個(gè)節(jié)點(diǎn)后,就將結(jié)果返回客戶端,然后用read repair對(duì)其他的replicas進(jìn)行同步(根據(jù)timestamp)。如果要求讀多個(gè)節(jié)點(diǎn),那么cassandra就讀多個(gè)節(jié)點(diǎn),然后根據(jù)timestamp進(jìn)行比較,返回客戶端新的數(shù)據(jù),然后再調(diào)用read repair對(duì)其他節(jié)點(diǎn)進(jìn)行同步。Read repair在后臺(tái)的操作,會(huì)占用一定的CPU和I/O,所以影響讀性能。要提高讀的性能,可以將read repair禁用掉,當(dāng)然這會(huì)影響到一致性,但是對(duì)于節(jié)點(diǎn)比較穩(wěn)定的系統(tǒng),是可以考慮的。一種方法時(shí)用hinted off和nodel tool的node reapair定期對(duì)其進(jìn)行同步,提高一致性。在cassandra1.0之前,禁用read repair需要修改代碼,新的cassandra1.0可以通過對(duì)每個(gè)讀操作調(diào)參(0到1),來設(shè)定read repair的機(jī)率。

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

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

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

Leveled compaction能夠給讀性能帶來提高的原因是,leveled comapction中每一層都沒有重復(fù)的記錄,這樣保證了可以保證90%的讀都可以在一個(gè)sstable中完成。最壞的情況是一個(gè)記錄存在在每一層,但是這個(gè)時(shí)候10TB的數(shù)據(jù)也就7層,查7個(gè)SStable就可以了。

2、Compression

在http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-0-compression中對(duì)cassandra 的compression做了介紹。這里說道,用compression,其讀的性能提高了25%-35%。

Compression 之所以能夠提高讀的性能,是因?yàn)榻?jīng)過compression之后,每個(gè)節(jié)點(diǎn)能夠存儲(chǔ)更多的數(shù)據(jù)。同時(shí)Cassandra能在SStable index中夠迅速地定位到記錄的位置,然后解壓這些記錄進(jìn)行操作。也就是說compression從兩方面提高了讀的速度:

允許更多的數(shù)據(jù)在內(nèi)存中對(duì)于不再內(nèi)存中,但是經(jīng)常訪問的數(shù)據(jù),也能通過SStable index更快地訪問。

如何提高cassandra讀存儲(chǔ)性能

3、調(diào)整key cache和row cache的值

Key cache:在內(nèi)存中保存了記錄的位置。當(dāng)一個(gè)row的column很大時(shí),不適宜將row整個(gè)放在內(nèi)存中,這個(gè)時(shí)候只要保存key的位置,也就是row的位置就可以。這樣可以讓程序快速定位到row并進(jìn)行操作。對(duì)于有大量對(duì)row進(jìn)行操作的系統(tǒng),有很大的提高。默認(rèn)時(shí)200,000??梢杂胣odetool cfstats或者時(shí)jconsole進(jìn)行檢測,查看其命中率。

Row cache:row cache 把整個(gè)row 的內(nèi)容都放在內(nèi)存中。適合的情況是,有一小部分hot data是經(jīng)常反問的,或者要返回整個(gè)columns.在使用row cache時(shí),用注意它對(duì)內(nèi)存的影響。

key cache 如果命中的話,會(huì)減少一次的查詢。Row cache如果命中的話,減少兩次的查詢,對(duì)于column的類型是圖片的系統(tǒng),當(dāng)然每個(gè)row是很大的,不能寄希望于row cache提高性能。但是我們可以把key cache提高,甚至設(shè)置成全部row的keys。這樣保證所有的讀操作,都能在key cache中命中。

4、設(shè)置JVM heap的大小

在cassandra 1.0中的,key cache時(shí)保存在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讀存儲(chǔ)性能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

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

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

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司