2013-08-14 6 views
3

Это моя среда.MongoDB - Производительность драйвера Java

Java - 1,7 Оракл

mongod v2.4.5 (в Mongolab)

я нашел разницу в производительности драйвера двух MongoDB (2.9.3 против 2.11.2)

Когда я запускать один и тот же код с использованием каждого драйвера, 2.11.2 медленнее, чем 2.9.3.

for(int i=0; i<1000; i++){ 
     BasicDBObject doc = new BasicDBObject(
       "currentTime", 
       new SimpleDateFormat("HH:mm:ss:SSS").format(Calendar.getInstance().getTime()) 
     ); 
     coll.insert(doc); 
    } 

    DBCursor cursor = coll.find(); 
    try{ 
     while(cursor.hasNext()){ 
      System.out.println(cursor.next()); 
     } 
    } finally { 
     cursor.close(); 
    } 

Приведенный выше код должен поставить 1000 документов в MongoDB.

В драйвере 2.9.3 требуется 1 ~ 2 сек. , но в 2.11.2 требуется более 1 минуты.

Кто-нибудь знает что-нибудь об этой проблеме?

+0

Вставка 1000 документов не должна занять 1 минуту даже при новом задании на запись по умолчанию. Маленькие документы, подобные этому, занимают микросекунды на моем ноутбуке. Один маленький совет, если вы не знаете, объемная вставка, вероятно, будет быстрее. Вы можете вставить список документов. Это означает, что для ваших 1000 документов требуется всего одна поездка туда и обратно. –

ответ

3

По умолчанию Написать беспокойство изменилось от NORMAL к SAFE для водителя Java, так как V 2.10.0 See here

Это означает, что в более старых драйверах операций версии вставки по умолчанию возврата, как только сообщение записывается в сокет.

В новой версии драйвера, с другой стороны, операции по умолчанию должны быть подтверждены сервером перед возвратом, что намного медленнее.

Смежные вопросы