小编Jak*_*icz的帖子

nodejs中的RXJS PostgreSQL背压

原标题:如何在javascript中减慢PgSQL结果行流?

我在使用RXJS(5.4.0)和PostgreSQL(驱动程序"pg":"6.1.4")的nodejs v4.5.0中遇到了内存不足的问题.

我手动创建一个可观察的PgSQL行,如下所示:

return Rx.Observable.create((subscriber) => {
    pool.connect().then((client: pg.Client) => {
        const stream:any = client.query(query.toParam());
        stream.on('row', (row) => {
            subscriber.next(row);
        });

        stream.on('end', () => {
            subscriber.complete();
            client.release();
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我将一些运算符附加到rx observable并进行一些处理.请注意,从数据库返回的行有点重.

调查得出一个结论: 数据库中的行返回得快得多,然后才能处理.必须为重型数据保留内存才能等待处理,这会导致内存不足问题:

致命错误:CALL_AND_RETRY_LAST分配失败 - 处理内存不足

中止陷阱:6

我没有在PostgreSQL驱动程序上看到任何选项来暂停流.我有什么想法可以解决这个问题?

javascript postgresql node.js rxjs typescript

2
推荐指数
1
解决办法
452
查看次数

R为什么plot.xts在调用线后会创建额外的图形?

考虑以下两个图,第一个使用通用图函数,第二个使用plot.xts:

一般情节

par(mfrow = c(2,1))
plot(1:5, type="l", main = "generic plot")
lines(5:1)
Run Code Online (Sandbox Code Playgroud)

如预期的那样,线条功能会添加到现有图形中,因此会生成单个图形

在此处输入图片说明

我将mfrow = c(2,1)设置为向您显示,只有一个图。现在使用xts数据:

par(mfrow = c(2,1))
plot(xts(x = 1:5, order.by = 1:5+as.Date("2017-01-01")), type="l", main = "plot.xts")
lines(xts(x = 5:1, order.by = 1:5+as.Date("2017-01-01")), main = "plot.xts")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

出乎意料的是,它会生成两个图。为什么?

我的情况特别复杂,但是我发现这段代码片断是重现我的问题的最简单方法。基本上,我想继续在一个绘图上添加xts数据。我能够使用通用的绘图和线条功能来实现。

平台信息:R版本3.4.3(2017-11-30)平台:x86_64-apple-darwin15.6.0(64位)在以下环境下运行:macOS High Sierra 10.13.2quantmod_0.4-12 xts_0.10-1

plot r time-series xts quantmod

2
推荐指数
1
解决办法
345
查看次数

标签 统计

javascript ×1

node.js ×1

plot ×1

postgresql ×1

quantmod ×1

r ×1

rxjs ×1

time-series ×1

typescript ×1

xts ×1