我有任务:需要从“TABLE_FROM”中选择数据,修改它并插入到“TABLE_TO”。主要问题是脚本必须在生产环境中运行并且不应该损害现场站点的性能,但是“TABLE_FROM”包含数亿行。将使用 nodejs 运行脚本。使用什么技术来解决此类问题?IE。如何使该脚本“缓慢”运行或“轻柔”地运行以防止 DB 和 CPU 过载?
脚本执行的时间无关紧要。我使用 Cassandra DB。
我有任务:需要从“TABLE_FROM”中选择数据,修改它并插入到“TABLE_TO”。主要问题是脚本必须在生产环境中运行并且不应该损害现场站点的性能,但是“TABLE_FROM”包含数亿行。将使用 nodejs 运行脚本。使用什么技术来解决此类问题?IE。如何使该脚本“缓慢”运行或“轻柔”地运行以防止 DB 和 CPU 过载?
脚本执行的时间无关紧要。我使用 Cassandra DB。
示例代码:
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
.