sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB:Sådan deaktiveres logning af advarslen:ClientCursor::staticYield kan ikke låse b/c af rekursiv lås op?

Jeg har for nylig selv undersøgt denne fejl, da jeg så 25 Gb om måneden genereret fra mongod.log med en lignende besked. Jeg bemærkede dog, at en forespørgsel var inkluderet i logmeddelelsen (jeg har formateret beskeden, så den passer til dette indlæg, det var faktisk alt på én linje):

warning: ClientCursor::yield can't unlock b/c of recursive lock ns: my-database.users top:
{
    opid: 1627436260,
    active: true,
    secs_running: 0,
    op: "query",
    ns: "my-database",
    query:
    {
        findAndModify: "users",
        query: { Registered: false, Completed: 0 },
        sort: { Created: 1 },
        update: { $set: { NextRefresh: "2014-12-07" } },
        new: true
    },
    client: "10.1.34.175:53582",
    desc: "conn10906412",
    threadId: "0x7f824f0f9700",
    connectionId: 10906412,
    locks: { ^: "w", ^my-database: "W" },
    waitingForLock: false,
    numYields: 0,
    lockStats: { timeLockedMicros: {}, timeAcquiringMicros: { r: 0, w: 3 } }
}

En smule google afslørede, at denne besked oftest rejses, når forespørgslen ikke kan bruge nogen indekser. Jeg prøvede at bruge .explain() med forespørgslen i loggen og ganske vist viste den, at en BasicCursor blev brugt uden indeks:

db.users.find( { Registered: false, Completed: 0 } ).sort( { Created: 1 } ).explain()
{
    "cursor" : "BasicCursor",
    "isMultiKey" : false,
    "n" : 0,
    "nscannedObjects" : 10453,
    "nscanned" : 10453,
    "nscannedObjectsAllPlans" : 10453,
    "nscannedAllPlans" : 10453,
    "scanAndOrder" : true,
    "indexOnly" : false,
    "nYields" : 1,
    "nChunkSkips" : 0,
    "millis" : 7,
    "indexBounds" : {

    },
    "server" : "mongodb-live.eu-west-1a.10_1_2_213:27017"
}

Tilføjelse af et indeks for elementerne i forespørgslen løste problemet. Loggen blev ikke længere genereret, og da jeg kørte .explain() igen viste det et indeks, der blev brugt:

{
    "cursor" : "BtreeCursor Registered_1_Completed_1",
    "isMultiKey" : false,
    "n" : 0,
    "nscannedObjects" : 0,
    "nscanned" : 0,
    "nscannedObjectsAllPlans" : 0,
    "nscannedAllPlans" : 1,
    "scanAndOrder" : true,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 0,
    "indexBounds" : {
        "Registered" : [
            [
                false,
                false
            ]
        ],
        "Completed" : [
            [
                0,
                0
            ]
        ]
    },
    "server" : "mongodb-live.eu-west-1a.10_1_2_213:27017"
}



  1. Sådan formateres tal i SQL

  2. Rescue Timeout::Fejl fra Redis Gem (Ruby)

  3. Indstil adgangskode til meteors mongo-database

  4. Sådan bruger du MongoDB Stitch i Android-apps