小编Rad*_*155的帖子

Postgresql:多列索引与单列索引

我有一个表,每年都会增加 10M 行。

该表有 10 列,称为 c1、c2、c3、...、c10。

WHERE可能会在其中 8 个上使用该条款。

更具体地说:每次我查询表时,c10 列上总会有一个子句WHERE(它是一个日期,我可以搜索相等或范围)。

其他 7 个可能的可搜索列将不遵循任何模式。我可以搜索:

  • c10、c1、c2、c5
  • c10、c5
  • c10、c3
  • c10、c2、c6
  • c10、c2、c3、c5、c6

...以及所有其他可能的组合。

因此,在WHERE子句中,c10 将始终存在,而其他项可以以任意组合存在(甚至根本不存在)。

在这种情况下什么索引策略可以提高性能?我认为正确的做法是为每一列创建一个索引。使用多列索引可以提高性能吗?

据我所知,仅对于按此顺序使用 c1、c2、c3 或 c1、c2 或 c1 的查询,您将通过 (c1, c2, c3) 上的多列索引获得性能。但就像我说的,在我的场景中我唯一可以假设的是 c10 将始终出现在 WHERE 子句中(如果这有帮助的话,它也可以是第一个子句)

sql postgresql indexing

10
推荐指数
2
解决办法
9875
查看次数

在节点js中永远不会释放使用的内存.很奇怪

我刚刚开始开发我的第一个node.js应用程序,现在我正在我的VPS上测试它.观察过程"节点"资源的使用,我注意到当请求页面(特别是某些页面)时内存使用量增加.特别是,如果请求的页面是静态页面,则增加量最小.如果请求的页面是/ admin,则增加可以是1mb!当然,当请求/ admin时,我的服务器做的事情比提供静态页面要多.他连接到mongodb,执行4次"查找",他使用bind将结果绑定到html模板.现在,问题是什么?使用这个内存,永远不会释放!所以我认为我的代码中存在逻辑错误,但后来我做了另一个更有趣的测试.

考虑一下这个非常简单的nodejs服务器:

 var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(3000, 'my_public_ip');
Run Code Online (Sandbox Code Playgroud)

如果我尝试用浏览器发出多个请求(只需按住f5一分钟),内存使用量就会慢慢增长,即使经过很长时间和关闭浏览器之后,进程使用的内存也永远不会被释放.现在,在我的/ admin代码中可能存在一些错误(使用的内存为1mb,并且每次请求都没有释放它非常高!),但我认为上面简单脚本使用的内存永远不会被释放是很奇怪的!你怎么看待这件事?有办法避免它吗?

另外,(在我的真实服务器),我用MEMWATCH在THYS方式:

    var memwatch = require('memwatch');
    memwatch.on('leak', function(info) {
       console.log(info); 
       process.exit(1);
    });
Run Code Online (Sandbox Code Playgroud)

如果我使用浏览器执行多个请求,大约10秒后,我正在执行此过程,此过程将退出,这是错误:

{ start: Wed Nov 26 2014 08:21:07 GMT-0500 (EST),
  end: Wed Nov 26 2014 08:22:04 GMT-0500 (EST),
  growth: 4775624,
  reason: 'heap growth over 5 consecutive GCs (57s) - 287.65 mb/hr' }
Run Code Online (Sandbox Code Playgroud)

这是什么意思??好像与垃圾收集器有关!我知道在这里粘贴我的/管理员代码会更好但是片段很长并且与全局变量有关,所以如果没有200行副本就不可能理解:D.如果您需要更多信息,我会给你!

memory-leaks node.js

5
推荐指数
1
解决办法
937
查看次数

隐藏 Node js 应用源代码

我正在为一家公司开发一个私人 Web 应用程序,他们要求我使用他们的服务器来托管它。我想阻止他们访问源代码。我怎样才能做到这一点?他们的服务器正在运行 debian 并且他们拥有 root 访问权限。

我找到了一些解决方案,比如将应用程序打包到一个可执行文件中,但该应用程序有很多依赖项,我使用的是 loopback.io 框架;这使得包装非常困难..

任何不同的解决方案?

software-packaging node.js loopbackjs

5
推荐指数
1
解决办法
7790
查看次数