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к) Как вообще надо писать подобные вещи? Хочу понять как это реализовать красивее и проще Заранее огромное спасибо |
|
Zend,
в приведенной ссылке нет ответа для больших данных в mysql к примеру есть LOAD DATA INFILE смотрите подобное для MsSQL |
Цитата:
|
Часовой пояс GMT +3, время: 09:08. |