¿Cómo aumentar el límite de datos almacenados?


16

Dentro de Ubuntu, he creado una colección MongoDB Db que contiene 1 millón de registros, y cuando trato de ejecutar un comando de clasificación, obtengo el siguiente error:

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

¿Puede alguien describir cómo aumentar el límite interno para que pueda ejecutar este y otros comandos a gran escala con los datos?


Dudo que puedas. El problema probablemente esté en su declaración: ¿EXPLICAR muestra que está usando un ÍNDICE? Si no, necesita agregar un ÍNDICE a su tabla.
Rinzwind

Hola rinzwind Estoy tratando de comparar el rendimiento, por lo que estoy buscando ejecutar tipos de datos utilizando noindex, índice primario y un índice secundario. ¿Sugiere que no es posible ejecutar una especie de esta escala sin un índice?
Jon295087

Ah Bueno, tiendo a examinar el rendimiento usando EXPLAIN (tan pronto como EXPLAIN no me da un recuento bajo de registros, el rendimiento es malo). Probablemente necesitará limitar sus registros si quiere hacerlo así.
Rinzwind

Descubrí que MongoDB procesará alrededor de 25000 documentos en este conjunto de datos, pero se cae con algo más grande ... ¿Supongo que es solo una limitación de la base de datos? Gracias por tus comentarios.
Jon295087

Respuestas:


23

Esto puede suceder debido a un error como SERVER-13611 (así que asegúrese de estar en la última versión), o porque está tratando de ordenar en un índice disperso en 2.6 , pero generalmente es porque simplemente está intentando ordenar también Muchos registros en la memoria sin un índice.

El límite específico que está alcanzando es intencional y está documentado aquí : no se puede cambiar, por lo que debe reducir el conjunto de resultados o usar un índice, etc. para realizar la clasificación.

Actualización (noviembre de 2014): la próxima versión 2.8 (2.8.0-rc0 en el momento de escribir esto) ahora permite modificar esta configuración, de la siguiente manera:

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

El valor predeterminado es 32MiB (33554432 bytes) y debe ajustarse con cuidado: los tipos grandes en memoria pueden hacer que su base de datos se detenga (razón por la cual había un límite en primer lugar).


"errmsg": "no se encontró ninguna opción para configurar, use help: true para ver las opciones"
Mohammad Efazati

1
es probable que esté utilizando una versión muy diferente a la que estaba destinada esta respuesta, esto fue escrito hace bastante tiempo
Adam C

2

También me encontré con el problema al ordenar y paginar 200K + registros. La solución más fácil parece ser agregar un índice (para los atributos que está ordenando.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.