Latest web development tutorials
×

MongoDB курс

MongoDB курс NoSQL Краткое введение MongoDB Краткое введение Window устанавливать MongoDB Linux устанавливать MongoDB MongoDB Интерпретация Концепции MongoDB подключение MongoDB Создание базы данных MongoDB Удалить базу данных MongoDB Вставить документ MongoDB Обновление документации MongoDB Удаление документов MongoDB документ Запрос MongoDB Условный оператор MongoDB $type операторы MongoDB Limit & Skip MongoDB последовательность MongoDB индекс MongoDB агрегирование MongoDB копия MongoDB Ломтики MongoDB Резервное копирование и восстановление MongoDB монитор MongoDB Java MongoDB PHP распространение MongoDB PHP MongoDB PHP7

MongoDB Расширенный учебник

MongoDB отношения MongoDB ссылки на базы данных MongoDB Индекс покрытия запроса MongoDB анализ запросов MongoDB атомарные операции MongoDB Расширенный индексации MongoDB ограничения индекса MongoDB ObjectId MongoDB Map Reduce MongoDB Полнотекстовый поиск MongoDB Регулярные выражения MongoDB Инструменты управления MongoDB GridFS MongoDB Фиксированный набор MongoDB Автоматический рост

Анализ запросов MongoDB

MongoDB запросов и анализа, чтобы обеспечить эффективность предлагаемого индекса является важным инструментом для запроса анализа производительности.

MongoDB анализа запросов, обычно используемые функции: объяснить () и подсказка ().


Используйте объяснения ()

операцию объяснения предоставляет информацию о запросах, использование индекса и запроса статистики. Помогите нам оптимизировать индекс.

Далее мы создаем индекс гендерного и пользователей user_name в коллекции:

>db.users.ensureIndex({gender:1,user_name:1})
</p>
<p>现在在查询语句中使用 explain :</p>
<pre>
>db.users.find({gender:"M"},{user_name:1,_id:0}).explain()

Выше объяснить () запрос возвращает следующие результаты:

{
   "cursor" : "BtreeCursor gender_1_user_name_1",
   "isMultiKey" : false,
   "n" : 1,
   "nscannedObjects" : 0,
   "nscanned" : 1,
   "nscannedObjectsAllPlans" : 0,
   "nscannedAllPlans" : 1,
   "scanAndOrder" : false,
   "indexOnly" : true,
   "nYields" : 0,
   "nChunkSkips" : 0,
   "millis" : 0,
   "indexBounds" : {
      "gender" : [
         [
            "M",
            "M"
         ]
      ],
      "user_name" : [
         [
            {
               "$minElement" : 1
            },
            {
               "$maxElement" : 1
            }
         ]
      ]
   }
}

Теперь мы смотрим на поле результирующего набора:

  • indexOnly: поле верно, то, что мы используем индекс.
  • Курсор: Поскольку этот запрос использует индекс, индексы MongoDB сохраняются в структуре B-дерева, поэтому он также используется тип BtreeCursor курсора. Если вы не использовать индекс, тип курсора BasicCursor. Этот ключ даст имя индекса, который вы используете, вы можете увидеть по имени system.indexes устанавливается в соответствии с текущей базой данных (создается автоматически, поскольку информация индекс сохраняется, это будет упомянуто немного), чтобы получить больше информации индекса ,
  • п: количество документов , возвращенных текущим запросом.
  • nscanned / nscannedObjects: Запрос показал , что в настоящее время общее количество отсканированных документов в коллекции, наша цель состоит в том, чтобы сделать это значение и возвращает количество документов , чем ближе , тем лучше.
  • Миллис: текущее время, количество миллисекунд , необходимых для запроса.
  • indexBounds: текущий индекс запроса конкретного использования.

Используйте подсказку ()

В то время как MongoDB оптимизатор запросов обычно работают очень хорошо, но вы также можете использовать подсказки, чтобы заставить MongoDB использовать указанный индекс.

Такой подход позволит повысить производительность в некоторых случаях. Индекс коллекции и выполнить запрос более одного поля (некоторые поля были проиндексированы).

Примеры использовать следующий запрос определяет гендерный индекс user_name поля для запроса:

>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})

Вы можете использовать функцию объяснения () для разбора выше запроса:

>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()