10 миллионов неудачных ставок в LevelDB
Я только начал работать с leveldb, и мне было интересно, может ли кто-нибудь ответить на несколько вопросов об этом для меня. Я использую его на виртуальной машине CentOs с 8 ГБ ОЗУ, 20 ГБ памяти, 2 ядрами и процессором Intel i7. Я не знаю, имеет ли это значение.
Я хотел протестировать производительность leveldb, поэтому я попытался выполнить 10 миллионов операций последовательно (не в пакете), и у меня не получилось, я получил ошибку нехватки памяти. Но когда я сделал топ, я увидел, что этот узел использует только около 25% доступной памяти. Что я делаю неправильно?
Вот мой код:
var level = require('level');
var db = level('test.db' {
valueEncoding: 'json'
});
for (i = 0; i <= 10000000; i++) {
var value = { 'value': i };
db.put(i.toString(), value);
}
Когда это не удалось, я попробовал 1 миллион путов, что произошло за 2-3 секунды без проблем. Я увеличил его до 3,5 миллиона и получил ошибку нехватки памяти примерно через 40 минут ожидания. Я заметил, что коду удается пройти через все путы, но затем делает кучу *.ldb
файлы в test.db
и продолжает делать их, пока у меня не кончится память.
Может кто-нибудь объяснить мне, что происходит?