我们使用的是 PostgreSQL v8.2.3。
涉及的表有:EMPLOYEE和EMAILLIST。
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
Run Code Online (Sandbox Code Playgroud)
2 个表以这样的方式连接,如果 EMPLOYEE.EMAIL1 或 EMPLOYEE.EMAIL2 没有匹配的条目,则将返回这些行。
SELECT employee.email1, employee.email2,
e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched
FROM employee
LEFT JOIN emaillist e1 ON e1.email = employee.email1
LEFT JOIN emaillist e2 ON e2.email = employee.email2
WHERE e1.email IS NULL OR e2.email IS NULL
Run Code Online (Sandbox Code Playgroud)
列EMAIL是VARCHAR(256)的EMAILLIST表索引。现在,响应时间是 14 秒。
表数统计:目前EMPLOYEE有165,018条记录,EMAILLIST有1,810,228条记录,未来两个表都有望增长。
继续我在上发布的一个问题,将高容量和高访问率的表移动到单独的数据库是个好主意吗?,我正在寻找可用于 PostgreSQL 数据库归档的不同技术/解决方案。
我能想到的几个解决方案是:
任何其他建议/指针/解决方案都非常受欢迎和赞赏。
注意:我们在 CentOS5.2 上运行 PostgreSQL v9.1.3
我们的生产服务器在 CentOS 5.2 版(最终版)上运行 PostgreSQL v8.2.3。
我们已经在我们的生产服务器中设置了 PITR。由于某些原因,设置 PITR 后,我们无法对其进行管理和维护。最终,我们的 WAL 存档驱动器(辅助驱动器)已满(100% 使用),并且要存档的其他 WAL 存档段累积在 pg_xlog/ 目录本身(可在主驱动器中使用)
PITR 设置细节
有2个驱动器:
现在,我们决定停止/禁用 PITR。
我的问题是,在这种情况下,如何停止/禁用 PITR 并安全地清除两个驱动器中的所有 WAL 段?
推荐/建议的方法是什么?非常感谢专家对此的建议/想法/建议。
我们使用的是 PostgreSQL v8.2.3。我们是一个基于 web 的应用程序,我们使用 pgpool-II v 2.0.1 纯粹是为了连接池(我们不使用 pgpool 的其他功能,如复制、负载平衡等)。
最近,在我们的生产服务器中,数据库磁盘空间出现了意外的急剧增长。在短短 2 天内,数据库大小从 6 GB 增长到 14 GB。
然后我运行以下查询来查找数据库中前 20 个最大关系的大小:
SELECT nspname || '.' || relname AS "relation",
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class
C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN
('pg_catalog') ORDER BY pg_total_relation_size(C.oid) DESC LIMIT 20;
Run Code Online (Sandbox Code Playgroud)
我在这里没有发现任何问题。甚至我可以说上述命令的“total_size”之和小于数据库本身占用的大小。我正在使用以下命令来查找数据库的大小:
select oid, datname, pg_database_size(datname) as actualsize,
pg_size_pretty(pg_database_size(datname)) as size from pg_database order by
datname;
Run Code Online (Sandbox Code Playgroud)
我也曾经使用以下命令物理检查占用的数据库大小:
du -sh /usr/local/pgsql/data/base/2663326
Run Code Online (Sandbox Code Playgroud)
然后我从位置“ /usr/local/pgsql/data/base/2663326 ”开始按降序物理列出文件大小。这里,“2663326”是我的数据库的 OID。
[root@dbserver 2663326]# …Run Code Online (Sandbox Code Playgroud) 我们的生产服务器在 CentOS5.2 上运行 PostgreSQL v8.2.3。我们计划升级到 8.2 系列的最新版本,即v8.2.20。此外,在未来,我们计划尽快升级到最新的次要版本(当 PostgreSQL 发布时)。
最初,我们从源代码安装了 v8.2.3。PostgreSQL 安装在/usr/local/pgsql/ 中,数据目录位于/usr/local/pgsql/data
PostgreSQL版本控制政策说:
升级到次要版本不需要转储和恢复;只需停止数据库服务器,安装更新的二进制文件,然后重新启动服务器即可。
现在,在没有转储/恢复的情况下,将 PostgreSQL 升级到次要版本的最新版本所涉及的推荐方法/步骤是什么?
编辑:嗯,我应该这样问我的问题。由于文档说install the updated binaries,我的问题是是否可以按原样安装最新版本。我的数据目录/usr/local/pgsql/data/会以任何方式受到干扰吗?或者应该暂时移动这个数据目录,直到最新的安装完成。另外,有什么吗,作为管理员,我需要注意,比如备份/usr/local/pgsql/data/postgresql.conf等?
我们的应用程序是基于 Web 的应用程序(建立在多租户架构上),运行 PostgreSQL v9.1.3。我们的应用程序中大约有 450 个表,其中 2-3 个表特定于应用程序中的某个模块,与其他剩余表相比存储了大量记录,并且被应用程序用户频繁访问(读取和写入操作) .
为了给出可用记录量的图片/统计数据,目前一个表中有800 万条记录,另一张表中有300 万条记录。我们预计在不久的将来这些表的交易量(同样是读取和写入交易)会立即增加/流量,因为我们在这个特定模块中提出了一些令人兴奋的功能。
我的要求问题是,