Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2016, 00:57
Новичок на форуме
Отправить личное сообщение для zett Посмотреть профиль Найти все сообщения от zett
 
Регистрация: 09.01.2016
Сообщений: 9

Node.JS и множество insert-запросов в MsQSL
Всем здравствуйте.
Тема такая: нужно делать много(30k+) insert-запросов в MsSQL из ноды.
Вроде как реализовал, но через одно место. Все запросы шлю в один коннекшн.
Если слать не большими порциями, по 3-4к то все ок. Если все сразу, то такое ощущение что база захлебывается и нода схавав 1Гб рамы висит, периодически освобождая и снова съедая небольшой (40-140Мб) кусок памяти. Продебажить и точно понять что к чему - не удалось.

Я понял что надо как-то давать запросы дозировано и решил заюзать генератор.
Толком их не понимая и юзая ужасным образом сделал следующее:

В качестве модуля под MsSQL решил взять mssql-q.

function saveToDB(queries) {
  // ...
  let db = new sql(config)
  queriesRunner(queryGen, db, queries)
  // ...
}

function* queryGen(db, query) {
  yield db.DataQuery(query)
}

function queriesRunner(generator, db, queries) {
  if (queries.length < 1) return

  let query = queries.shift()
  let gen  = generator(db, query.query)

  let next = gen.next()
  next.value.then(
    result => queriesRunner(generator, db, queries),
    err    => console.error(query.query, '\n---> ' + err + '\n')
  )
}


Проблема в том что все это работает через раз, то идеально все (30к запросов за раз), то тупо висит и получается только небольшими частями слать запросы (3-4к)

Как вообще надо писать подобные вещи? Хочу понять как это реализовать красивее и проще

Заранее огромное спасибо

Последний раз редактировалось zett, 14.02.2016 в 01:27.
Ответить с цитированием
  #2 (permalink)  
Старый 19.02.2016, 23:50
Аватар для Zend
Профессор
Отправить личное сообщение для Zend Посмотреть профиль Найти все сообщения от Zend
 
Регистрация: 28.11.2009
Сообщений: 328

https://toster.ru/q/16033
Ответить с цитированием
  #3 (permalink)  
Старый 20.02.2016, 00:20
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Zend,
в приведенной ссылке нет ответа для больших данных
в mysql к примеру есть LOAD DATA INFILE смотрите подобное для MsSQL
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2016, 16:00
Новичок на форуме
Отправить личное сообщение для zett Посмотреть профиль Найти все сообщения от zett
 
Регистрация: 09.01.2016
Сообщений: 9

Сообщение от Poznakomlus Посмотреть сообщение
Zend,
в приведенной ссылке нет ответа для больших данных
в mysql к примеру есть LOAD DATA INFILE смотрите подобное для MsSQL
Cпасибо, идею понял. Должно быть это действительно красивее.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Востребованность разработчиков на Node.js danik.js AJAX и COMET 7 08.12.2012 22:49