我正在寻求建议。我从来没有使用过分片,但最近读过关于它的问题,我怀疑它应该有助于我的数据库中的长时间执行查询(PostgreSQL 9.1)。
posts
有2亿行。 projects
表的外键。 projects_id
外键上的项目表连接的posts表上执行queuries。 对于带有>的项目,我的查询(检索在给定时间段和聚合中添加的帖子)非常慢页面中有100,000行。
如果是:
projects_id
作为密钥吗?如果不是:
我应该使用什么而不是分片?我买了一台带有更快磁盘(SAS)的服务器;它帮助但不够。我曾尝试使用master-slave(使用pgPool2),但是当我想在slave数据库上执行更长的查询时,我收到以下错误:
错误:由于与恢复冲突而取消声明 详细信息:用户查询可能需要查看必须删除的行版本。
答案 0 :(得分:2)
完整的瓶颈分析和系统的期望用例很难说清楚。你从未说过它的运行速度有多慢。
我会给你几个选项来考虑而不是分片:
如果你还没有完成我提到的至少3/5选项,你可能不应该进行分片并查看备选方案。对于像select count(*) from ...
这样的事情来说,特别是Postgresql的数字2非常慢。