SINGLE_SHARD сценарий высокого дочернего выполненияTime - PullRequest
0 голосов
/ 02 апреля 2020

Я исследую некоторые запаздывающие запросы в нашем понедельнике go, и я обнаружил кое-что, что не могу точно объяснить.

Ниже приведено значение executeStats запроса в изолированной коллекции. Ключ шарда - {A:1, B:1}, а запрос - {A:<value>,B:{$lt:<value>},C:<value>}. Общее время выполнения, как вы можете видеть, составляет 1591 мс при 727 мс, занятых индексом scan + fetch.

Я могу понять 727 мс, вероятно, из-за медленных IOs на дисках сервера. Однако, где находятся потерянные 864 мс между извлечением и стадией single_shard? Это только задержка сети? Если осколок должен был загрузить индексы в ОЗУ, должен ли он быть включен в это потерянное время или это будет на этапах IDX_SCAN / FETCH?

Ну, в принципе, у вас есть какое-либо объяснение относительно того, что может замедлить этот запрос вниз?

"executionStats" : {
    "nReturned" : 100,
    "executionTimeMillis" : 1591,
    "totalKeysExamined" : 100,
    "totalDocsExamined" : 100,
    "executionStages" : {
        "stage" : "SINGLE_SHARD",
        "nReturned" : 100,
        "executionTimeMillis" : 1591,
        "totalKeysExamined" : 100,
        "totalDocsExamined" : 100,
        "totalChildMillis" : NumberLong(1559),
        "shards" : [
            {
                "shardName" : "redacted",
                "executionSuccess" : true,
                "executionStages" : {
                    "stage" : "LIMIT",
                    "nReturned" : 100,
                    "executionTimeMillisEstimate" : 727,
                    "works" : 101,
                    "advanced" : 100,
                    "needTime" : 0,
                    "needYield" : 0,
                    "saveState" : 50,
                    "restoreState" : 50,
                    "isEOF" : 1,
                    "invalidates" : 0,
                    "limitAmount" : 100,
                    "inputStage" : {
                        "stage" : "FETCH",
                        "nReturned" : 100,
                        "executionTimeMillisEstimate" : 727,
                        "works" : 100,
                        "advanced" : 100,
                        "needTime" : 0,
                        "needYield" : 0,
                        "saveState" : 50,
                        "restoreState" : 50,
                        "isEOF" : 0,
                        "invalidates" : 0,
                        "docsExamined" : 100,
                        "alreadyHasObj" : 0,
                        "inputStage" : {
                            "stage" : "SHARDING_FILTER",
                            "nReturned" : 100,
                            "executionTimeMillisEstimate" : 22,
                            "works" : 100,
                            "advanced" : 100,
                            "needTime" : 0,
                            "needYield" : 0,
                            "saveState" : 50,
                            "restoreState" : 50,
                            "isEOF" : 0,
                            "invalidates" : 0,
                            "chunkSkips" : 0,
                            "inputStage" : {
                                "stage" : "IXSCAN",
                                "nReturned" : 100,
                                "executionTimeMillisEstimate" : 22,
                                "works" : 100,
                                "advanced" : 100,
                                "needTime" : 0,
                                "needYield" : 0,
                                "saveState" : 50,
                                "restoreState" : 50,
                                "isEOF" : 0,
                                "invalidates" : 0,
                                "keyPattern" : {
                                    "A" : 1,
                                    "C" : 1,
                                    "B" : -1
                                },
                                "indexName" : "A_1_C_1_B_-1",
                                "isMultiKey" : false,
                                "multiKeyPaths" : {
                                    "A" : [ ],
                                    "C" : [ ],
                                    "B" : [ ]
                                },
                                "isUnique" : false,
                                "isSparse" : false,
                                "isPartial" : false,
                                "indexVersion" : 2,
                                "direction" : "forward",
                                "indexBounds" : {
                                    "A" : [
                                        "[517615.0, 517615.0]"
                                    ],
                                    "C" : [
                                        "[false, false]"
                                    ],
                                    "B" : [
                                        "(1579092003000.0, -inf.0]"
                                    ]
                                },
                                "keysExamined" : 100,
                                "seeks" : 1,
                                "dupsTested" : 0,
                                "dupsDropped" : 0,
                                "seenInvalidated" : 0
                            }
                        }
                    }
                }
            }
        ]
    }

Спасибо.

...