久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么提高cassandra讀存儲性能

134次閱讀
沒有評論

共計 2236 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

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

cassandra 作為一個分布式的存儲性能,其特點是寫快讀慢。最近看了 cassandra 1.0 的文檔,發現 1.0 在讀性能上做了一些提高。用戶可以根據系統的要求,合理配置,從而提高讀的性能。下面丸趣 TV 丸趣 TV 小編來講解下如何提高 cassandra 讀存儲性能?

如何提高 cassandra 讀存儲性能

1、禁用 read repair

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

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

在《cassandra 中的壓縮策略》(http://www.cnblogs.com/marysam/articles/2266061.html) 這個文章中,我介紹了 cassandra1.0 目前支持的兩種 compaction 策略 —Tiered Compaction 和 Leveled Compaction。

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

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

2、Compression

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

Compression 之所以能夠提高讀的性能,是因為經過 compression 之后,每個節點能夠存儲更多的數據。同時 Cassandra 能在 SStable index 中夠迅速地定位到記錄的位置,然后解壓這些記錄進行操作。也就是說 compression 從兩方面提高了讀的速度:

允許更多的數據在內存中對于不再內存中,但是經常訪問的數據,也能通過 SStable index 更快地訪問。

如何提高 cassandra 讀存儲性能

3、調整 key cache 和 row cache 的值

Key cache: 在內存中保存了記錄的位置。當一個 row 的 column 很大時,不適宜將 row 整個放在內存中,這個時候只要保存 key 的位置, 也就是 row 的位置就可以。這樣可以讓程序快速定位到 row 并進行操作。對于有大量對 row 進行操作的系統,有很大的提高。默認時 200,000。可以用 nodetool cfstats 或者時 jconsole 進行檢測,查看其命中率。

Row cache:row cache 把整個 row 的內容都放在內存中。適合的情況是,有一小部分 hot data 是經常反問的,或者要返回整個 columns. 在使用 row cache 時,用注意它對內存的影響。

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

4、設置 JVM heap 的大小

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

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

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2236字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 隆尧县| 南宫市| 邵阳市| 陇南市| 景泰县| 循化| 樟树市| 南投县| 茂名市| 宁明县| 新田县| 黔南| 平南县| 浦北县| 资中县| 乐平市| 平定县| 年辖:市辖区| 常宁市| 赣州市| 富阳市| 榆社县| 连山| 宜黄县| 武川县| 绥阳县| 达拉特旗| 阳朔县| 凭祥市| 寿光市| 阜南县| 大厂| 汝南县| 金乡县| 五原县| 沈阳市| 舟曲县| 富锦市| 油尖旺区| 梧州市| 南乐县|