1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- SplitChunks = function (ns, shard_name, est) {
- var nextRound = false;
- do {
- nextRound = false;
- var chunks = db.getSiblingDB("config").chunks.find({"ns": ns, "shard": shard_name}).sort({min: 1});
- var totalChunks = 0;
- var totalSize = 0;
- var totalEmpty = 0;
- print("ChunkID,Shard,ChunkSize,ObjectsInChunk");
- chunks.forEach(
- function printChunkInfo(chunk) {
- var db1 = db.getSiblingDB(chunk.ns.split(".")[0]);
- var key = db.getSiblingDB("config").collections.findOne({_id: chunk.ns}).key;
- var dataSizeResult = db1.runCommand({
- datasize: chunk.ns,
- keyPattern: key,
- min: chunk.min,
- max: chunk.max,
- estimate: est
- })
- print(chunk._id + "," + chunk.shard + "," + dataSizeResult.size + "," + dataSizeResult.numObjects);
- totalSize += dataSizeResult.size;
- totalChunks++;
- if (dataSizeResult.size == 0) {
- totalEmpty++;
- }
- if (dataSizeResult.size >= 83886080) {
- print(chunk.ns + " is too big to split.");
- sh.splitFind(chunk.ns, chunk.min);
- nextRound = true;
- }
- }
- )
- print("***********Summary Chunk Information***********");
- print("Total Chunks: " + totalChunks);
- print("Average Chunk Size (bytes): " + (totalSize / totalChunks));
- print("Empty Chunks: " + totalEmpty);
- print("Average Chunk Size (non-empty): " + (totalSize / (totalChunks - totalEmpty)));
- } while (nextRound)
- }
- SplitChunks("report_his.ConsumeRecord", "shard2", true)
|