Як збільшити ліміт захищених даних?


16

У Ubuntu я створив колекцію MongoDB Db, що містить 1 мільйон записів, і при спробі запустити проти неї команду сортування я отримую таку помилку:

 "$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
 "code" : 17144

Будь ласка, будь-хто може описати, як збільшити внутрішній ліміт, щоб я міг виконувати цю та деякі інші великомасштабні команди проти даних?


Сумніваюсь, що зможете. Можливо, проблема полягає у вашій заяві: чи пояснює, чи пояснює, що ви використовуєте INDEX? Якщо ні, вам не потрібно додати INDEX до свого столу.
Rinzwind

Привіт Рінцвінд. Я намагаюся порівнювати продуктивність, тому шукаю запускати види даних за допомогою noindex, первинного та вторинного індексу. Ви припускаєте, що неможливо запустити такий масштаб без індексу?
Jon295087

Ага. Добре, я схильний перевіряти продуктивність за допомогою EXPLAIN (як тільки EXPLAIN не дає мені низьких показників підрахунку, продуктивність погана). Можливо, вам доведеться обмежити свої записи, якщо ви хочете зробити це так.
Rinzwind

Я виявив, що MongoDB буде обробляти близько 25000 документів у цьому наборі даних, але перетворюється на щось більше ... Я думаю, це лише обмеження бази даних? Дякую за ваші коментарі.
Jon295087

Відповіді:


23

Це може статися через помилку на зразок SERVER-13611 (тому переконайтеся, що ви перебуваєте в останній версії) або через те, що ви намагаєтесь сортувати за розрізненим індексом у 2,6 , але частіше це відбувається тому, що ви просто намагаєтесь також сортувати багато записів в пам'яті без індексу.

Конкретний ліміт, на який ви потрапляєте, є навмисним і тут задокументований - його неможливо змінити, тому вам потрібно зменшити набір результатів або використовувати індекс тощо для виконання сортування.

Оновлення (листопад 2014 р.): Майбутня версія 2.8 (на момент написання 2.8.0-rc0) тепер дозволяє змінити цей параметр наступним чином:

db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})

Значення за замовчуванням - 32MiB (33554432 байт), і його слід ретельно коригувати - великі сорти пам'яті можуть призвести до того, що ваша база даних зупиниться (саме тому в першу чергу був обмеження).


"errmsg": "для встановлення не знайдено жодної опції, використовуйте довідку: вірно, щоб побачити параметри"
Mohammad Efazati

1
ймовірно, ви використовуєте набагато іншу версію, ніж ця відповідь була призначена, це було написано досить давно
Adam C

2

Я також зіткнувся з проблемою під час сортування та пагутування 200K + записів. Найпростішим рішенням, здається, є додавання індексу (для атрибутів, за якими ви сортуєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.