我已经在我拥有的 VPS 上设置了 PostgreSQL——访问数据库的软件是一个名为 PokerTracker 的程序。
PokerTracker 在玩在线扑克时记录您所有的手牌和统计数据。
我希望可以从几台不同的计算机上访问它,因此决定将它安装在我的 VPS 上,经过几次小插曲后,我设法让它连接起来没有错误。
然而,性能是可怕的。我已经对“远程 postgresql 慢”等进行了大量研究,但还没有找到答案,所以希望有人能够提供帮助。
注意事项:
我试图执行的查询非常小。在 VPS 上本地连接时,查询会立即运行。
远程运行时,运行查询大约需要 1 分 30 秒。
VPS 运行 100MBPS,然后我连接到它的计算机在 8MB 线上。
两者之间的网络通信几乎是即时的,我能够毫无延迟地进行远程连接,并且托管了多个运行 MSSQL 的网站,并且所有查询都立即运行,无论是远程连接还是本地连接,因此它似乎特定于 PostgreSQL。
我正在使用他们的软件运行他们最新版本的软件和 PostgreSQL 的最新兼容版本。
该数据库是一个新数据库,几乎不包含任何数据,我已经运行了 Vacuum/analyze 等都无济于事,我没有看到任何改进。
我不明白 MSSQL 是如何几乎可以立即查询的,但 PostgreSQL 却苦苦挣扎。
我能够毫无问题地远程登录到 VPS IP 上的端口 5432,正如我所说的那样,查询确实执行了它只需要很长时间。
我注意到的是,当查询运行时,路由器上几乎没有使用任何带宽 - 但是我不希望它用于简单的查询,但不确定这是否是问题。我现在尝试在 3 个不同的网络上进行远程连接(包括不同的路由器),但问题仍然存在。
通过 LAN 通过另一台机器远程连接是即时的。
我还编辑了 postgre conf 文件以允许更多内存/缓冲区等,但我认为这不是问题 - 我要求它做的事情非常简单 - 它根本不应该是密集的。
谢谢,瑞奇
编辑:请注意客户端和服务器都运行 Windows。
这是来自配置文件的信息。
pg_hba - 当前允许所有流量: # TYPE DATABASE 用户 CIDR-ADDRESS 方法 # IPv4 本地连接: 托管所有所有 0.0.0.0/0 md5 # IPv6 本地连接: # 全部托管 ::1/128 md5
而 postgresqlconf - 我知道我已经为这个配置提供了一些庞大的缓冲区/内存,只是为了测试它是否是问题 - 只显示未注释的行:
听地址 = '*' 端口 = 5432 最大连接数 = 100 共享缓冲区 = 512MB 工作内存 = 64MB max_fsm_pages = 204800 shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' log_destination = 'stderr' logging_collector = on log_line_prefix = '%t' datestyle = 'iso,mdy' lc_messages = 'English_United States.1252' lc_monetary = 'English_United States.1252' lc_numeric = 'English_United States.1252' lc_time = 'English_United States.1252' default_text_search_config = 'pg_catalog.english'
需要任何其他信息,请告诉我。感谢你的帮助。