日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

設(shè)置數(shù)據(jù)分片以充分利用Shard性能

更新時(shí)間:

您可以對(duì)分片集群實(shí)例中的集合設(shè)置數(shù)據(jù)分片,以充分利用Shard節(jié)點(diǎn)的存儲(chǔ)空間和計(jì)算性能。

背景信息

如果沒有對(duì)集合設(shè)置數(shù)據(jù)分片,數(shù)據(jù)將被集中存放在一個(gè)Shard節(jié)點(diǎn)中,這將導(dǎo)致其他Shard節(jié)點(diǎn)的存儲(chǔ)空間和計(jì)算性能無法被充分利用。

前提條件

實(shí)例類型為分片集群實(shí)例。

注意事項(xiàng)

  • 片鍵一經(jīng)設(shè)置,不可修改,不可刪除。

  • 執(zhí)行了數(shù)據(jù)分片操作后,均衡器會(huì)對(duì)滿足條件的數(shù)據(jù)進(jìn)行拆分,這將占用實(shí)例的資源,請(qǐng)?jiān)跇I(yè)務(wù)低峰期操作。

    說明

    您可以在設(shè)置數(shù)據(jù)分片之前,調(diào)整均衡器的活動(dòng)窗口,指定它在業(yè)務(wù)低峰期執(zhí)行均衡操作。詳情請(qǐng)參見設(shè)置Balancer的活動(dòng)窗口

  • 片鍵的選取將影響分片集群實(shí)例的性能,關(guān)于片鍵選取的案例介紹,請(qǐng)參見如何選擇Shard KeyShard Keys

分片策略介紹

分片策略

說明

適用場(chǎng)景

基于范圍的分片

MongoDB按照片鍵的值的范圍將數(shù)據(jù)拆分為不同的塊(chunk),每個(gè)塊包含了一段范圍內(nèi)的數(shù)據(jù)。

  • 優(yōu)點(diǎn): mongos可以快速定位請(qǐng)求需要的數(shù)據(jù),并將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的Shard節(jié)點(diǎn)中。

  • 缺點(diǎn): 可能導(dǎo)致數(shù)據(jù)在Shard節(jié)點(diǎn)上分布不均衡,容易造成讀寫熱點(diǎn),且不具備寫分散性。

片鍵的值不是單調(diào)遞增或單調(diào)遞減、片鍵的值基數(shù)大且重復(fù)的頻率低、需要范圍查詢等業(yè)務(wù)場(chǎng)景。

基于Hash值的分片

MongoDB計(jì)算單個(gè)字段的哈希值作為索引值,并以哈希值的范圍將數(shù)據(jù)拆分為不同的塊。

  • 優(yōu)點(diǎn):可以將數(shù)據(jù)更加均衡地分布在各Shard節(jié)點(diǎn)中,具備寫分散性。

  • 缺點(diǎn):不適合進(jìn)行范圍查詢,進(jìn)行范圍查詢時(shí),需要將讀請(qǐng)求分發(fā)到所有的Shard節(jié)點(diǎn)。

片鍵的值存在單調(diào)遞增或遞減、片鍵的值基數(shù)大且重復(fù)的頻率低、需要寫入的數(shù)據(jù)隨機(jī)分發(fā)、數(shù)據(jù)讀取隨機(jī)性較大等業(yè)務(wù)場(chǎng)景。

除了上述兩種分片策略,您還可以配置復(fù)合片鍵,例如由一個(gè)低基數(shù)的鍵和一個(gè)單調(diào)遞增的鍵組成,詳情請(qǐng)參見如何選擇Shard Key

操作步驟

本文以mongodbtest數(shù)據(jù)庫(kù),customer集合為例介紹操作流程。

  1. 通過Mongo Shell登錄分片集群實(shí)例

  2. 對(duì)集合所在的數(shù)據(jù)庫(kù)啟用分片功能。

    重要

    如果您的實(shí)例是MongoDB 6.0及以上版本,可跳過此步驟,更多信息,請(qǐng)參見sh.enableSharding()

    sh.enableSharding("<database>")

    參數(shù)說明:<database>為數(shù)據(jù)庫(kù)名。

    示例:

    sh.enableSharding("mongodbtest")
    說明

    您可以通過sh.status()查看分片狀態(tài)。

  3. 對(duì)片鍵的字段建立索引。

    db.<collection>.createIndex(<keyPatterns>,<options>)

    參數(shù)說明:

    • <collection>:集合名。

    • <keyPatterns>:包含用于建立索引的字段和索引類型。

      常見的索引類型如下:

      • 1:創(chuàng)建升序索引

      • -1:創(chuàng)建降序索引

      • "hashed":創(chuàng)建哈希索引

    • <options>:表示接收可選參數(shù),詳情請(qǐng)參見db.collection.createIndex(),本操作示例中暫未使用到該字段。

    創(chuàng)建升序索引示例:

    db.customer.createIndex({name:1})

    創(chuàng)建哈希索引示例:

    db.customer.createIndex({name:"hashed"})
  4. 對(duì)集合設(shè)置數(shù)據(jù)分片。

    sh.shardCollection("<database>.<collection>",{ "<key>":<value> } ) 

    參數(shù)說明:

    • <database>:數(shù)據(jù)庫(kù)名。

    • <collection>:集合名。

    • <key>:分片的鍵,MongoDB將根據(jù)片鍵的值進(jìn)行數(shù)據(jù)分片。

    • <value>

      • 1:表示基于范圍分片,通常能很好地支持基于片鍵的范圍查詢。

      • “hashed”:表示基于哈希分片,通常能將寫入均衡分布到各Shard節(jié)點(diǎn)中。

    基于范圍分片的配置示例:

    sh.shardCollection("mongodbtest.customer",{"name":1})

    基于哈希分片的配置示例:

    sh.shardCollection("mongodbtest.customer",{"name":"hashed"})

后續(xù)操作

經(jīng)過一段時(shí)間的運(yùn)行或數(shù)據(jù)寫入后,您可以在Mongo Shell中執(zhí)行sh.status(),查看數(shù)據(jù)在各Shard節(jié)點(diǎn)中的分布信息。

您也可以通過執(zhí)行db.stats()查看該數(shù)據(jù)庫(kù)在各Shard節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)情況。