Tôi đang sử dụng FindAndModify trong MongoDB trong nhiều tiến trình đồng thời. Kích thước bộ sưu tập là khoảng 3 triệu mục và mọi thứ hoạt động như một vụ nổ miễn là tôi không vượt qua tùy chọn sắp xếp (bởi một trường được lập chỉ mục). Khi tôi cố gắng làm như vậy, các cảnh báo sau đây được sinh ra để các bản ghi:MongoDB FindAndModify Sorting
warning: ClientCursor::yield can't unlock b/c of recursive lock ns: test_db.wengine_queue top:
{
opid: 424210,
active: true,
lockType: "write",
waitingForLock: false,
secs_running: 0,
op: "query",
ns: "test_db",
query: {
findAndModify: "wengine_queue",
query: {
locked: { $ne: 1 },
rule_completed: { $in: [ "", "0", null ] },
execute_at: { $lt: 1324381363 },
company_id: 23,
debug: 0,
system_id: "AK/AK1201"
},
update: {
$set: { locked: 1 }
},
sort: {
execute_at: -1
}
},
client: "127.0.0.1:60873",
desc: "conn",
threadId: "0x1541bb000",
connectionId: 1147,
numYields: 0
}
tôi có tất cả các phím từ truy vấn lập chỉ mục, ở đây đó là:
PRIMARY> db.wengine_queue.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"system_id" : 1,
"company_id" : 1,
"locked" : 1,
"rule_completed" : 1,
"execute_at" : -1,
"debug" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "system_id_1_company_id_1_locked_1_rule_completed_1_execute_at_-1_debug_1"
},
{
"v" : 1,
"key" : {
"debug" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "debug_1"
},
{
"v" : 1,
"key" : {
"system_id" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "system_id_1"
},
{
"v" : 1,
"key" : {
"company_id" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "company_id_1"
},
{
"v" : 1,
"key" : {
"locked" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "locked_1"
},
{
"v" : 1,
"key" : {
"rule_completed" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "rule_completed_1"
},
{
"v" : 1,
"key" : {
"execute_at" : -1
},
"ns" : "test_db.wengine_queue",
"name" : "execute_at_-1"
},
{
"v" : 1,
"key" : {
"thread_id" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "thread_id_1"
},
{
"v" : 1,
"key" : {
"rule_id" : 1
},
"ns" : "test_db.wengine_queue",
"name" : "rule_id_1"
}
]
Có cách nào để khắc phục điều này?
Nó chỉ là một cảnh báo nói rằng bản cập nhật không thể mang lại. Có điều gì thực sự ngừng hoạt động hay bạn chỉ lo lắng về cảnh báo? MongoDB/10gen có một ý kiến hơi khác nhau về những gì nên và không nên là một cảnh báo đăng nhập, do đó bạn kết thúc với một vài điều đang được đăng nhập như một cảnh báo có lẽ không nên –
Không, mọi thứ hoạt động tốt. Tôi lo lắng về những cảnh báo mặc dù và hàm ý nó mights có khi thiết lập của tôi được đưa đến sản xuất (khoảng 50 triệu tài liệu) – clops
Nó tương đối vô tội. Tôi sẽ đăng một câu trả lời –