Ba kiểu hỏng thường gặp, mỗi kiểu có triệu chứng riêng:
1. Shard key tăng đơn điệu (_id mặc định, createdAt, auto-increment): mọi write mới rơi vào cùng một chunk ở cuối dải → một shard nhận toàn bộ tải ghi, các shard còn lại rảnh. Cluster mở rộng nhưng throughput ghi không tăng.
2. Shard key độ chọn lọc thấp (country, status): một giá trị chiếm phần lớn dữ liệu, chunk chứa nó không tách được nữa → jumbo chunk, balancer không di chuyển được, dữ liệu lệch vĩnh viễn.
3. Shard key không xuất hiện trong query thường dùng: mọi truy vấn thành scatter-gather — mongos hỏi tất cả shard rồi gộp, độ trễ bằng shard chậm nhất và không giảm khi thêm shard.
Sửa được không: trước 4.4 thì không — phải dump và tạo lại collection. Từ 4.4 có thể refineCollectionShardKey để thêm hậu tố vào key hiện tại (tăng độ chọn lọc), và từ 5.0 có reshardCollection để đổi hẳn shard key.
db.adminCommand({ reshardCollection: 'shop.orders', key: { userId: 'hashed' } })reshardCollection là thao tác nặng: nó copy lại toàn bộ collection sang layout mới, cần dư dung lượng và có cửa sổ block ghi ngắn ở giai đoạn cuối — nên lên lịch giờ thấp điểm chứ không chạy tùy tiện.
Cách phòng: chọn key vừa phân tán đều vừa có mặt trong query nóng — thường là compound kiểu { tenantId: 1, createdAt: 1 } hoặc hashed trên field định danh.