Decide how many buckets to assign to your partitioned region and set the configuration accordingly.
The total number of buckets for the partitioned region determines the granularity of data storage and thus how evenly the data can be distributed. Tanzu GemFire distributes the buckets as evenly as possible across the data stores. The number of buckets is fixed after region creation.
The partition attribute total-num-buckets
sets the number for the entire partitioned region across all participating members. Set it using one of the following:
XML:
<region name="PR1">
<region-attributes refid="PARTITION">
<partition-attributes total-num-buckets="7"/>
</region-attributes>
</region>
Java:
RegionFactory rf =
cache.createRegionFactory(RegionShortcut.PARTITION);
rf.setPartitionAttributes(new PartitionAttributesFactory().setTotalNumBuckets(7).create());
custRegion = rf.create("customer");
gfsh:
Use the ‑‑total-num-buckets parameter of the create region
command. For example:
gfsh>create region --name="PR1" --type=PARTITION --total-num-buckets=7
Follow these guidelines to calculate the total number of buckets for the partitioned region:
You are trying to avoid the situation where some members have significantly more data entries than others. For example, compare the next two figures. This figure shows a region with three data stores and seven buckets. If all the entries are accessed at about the same rate, this configuration creates a hot spot in member M3, which has about fifty percent more data than the other data stores. M3 is likely to be a slow receiver and potential point of failure.
Configuring more buckets gives you fewer entries in a bucket and a more balanced data distribution. This figure uses the same data as before but increases the number of buckets to 13. Now the data entries are distributed more evenly.