2015-12-30 5 views
3

Я использую OrientDB-NET Library, но не нашел эффективного решения для объемной вставки. У меня есть 1M Edges между почти 6K вершинами, в настоящее время я использую следующий код, и на моей машине Core i7 6th Gen, 2.5GHz, 8GB RAM требуется около 30 минут (даже худшая производительность по сравнению с загрузкой данных SQL Server).
Обнаружено решение MassiveInsert в Java API. Но не нашел решения в .NET.Как перенести Massiveinsert в OrientDB .Net API?

object locker = new object(); 
Parallel.ForEach(_listRating, r=> 
{ 
    lock (locker) 
    { 
     oDB.Command(" create edge rated from (select from Users where userID = " + r.userID + ") to (select from Movies where MovieID = " + r.movieID + " ) set rating =" + r.Ratings + " "); 

    } 
});    
+0

Я не знаю, что восточный, но параллельный foreach с замком бесполезен –

ответ

1

Если вы хотите отправить много create edge, как один запрос использовать SQL Batch

begin; 
    CREATE EDGE E FROM #34:3349 TO #32:3349; 
    CREATE EDGE E FROM #41:10971 TO #33:3348; 
    ... 
commit retry 100; 

В моем случае (PHP), ускорение был достаточно высок.

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