我有任务:需要从" TABLE_FROM"中选择数据,修改它并插入" TABLE_TO"。主要问题是脚本必须在生产中运行,并且不应该损害实时站点性能,但是" TABLE_FROM"包含数亿行。要使用nodejs运行脚本。有什么技术可以解决这类问题?即。如何使这个脚本慢慢运行"慢慢地#34;或其他词语"轻柔地"防止DB和CPU过载?
脚本执行的时间无关紧要。我使用Cassandra DB。
答案 0 :(得分:1)
示例代码:
var OFFSET = 0;
var BATCHSIZE = 100;
var TIMEOUT = 1000;
function fetchPush() {
// fetch from TABLE_FROM, possibly in batches
rows = fetch(OFFSET, BATCHSIZE);
// push to TABLE_TO
push(rows);
// do next batch in timeout
setTimeout(fetchPush, TIMEOUT);
}
这里我假设fetch和push是阻塞调用,对于异步处理你可以(显然)使用async
。