标签: postgresql

PostgreSQL、PostGIS:复制具有几何列的模式

根据PostGIS 手册,不应直接添加几何列,而应使用AddGeometryColumn()

\n\n
\n

AddGeometryColumn \xe2\x80\x94 将几何列添加到现有属性表中。\n

\n
\n\n

我正在将架构从一个 PostgreSQL 实例复制到另一个实例。我想知道创建的 SQL 是否足够好 - 它会像AddGeometryColumn()pg_dump一样创建几何列吗?

\n

postgresql postgis pg-dump schema-copy

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

在大表中搜索一些结果而不扫描整个表

我需要搜索一个非常大的PostgreSQL表(500+M行),我想限制返回的搜索结果,但是使用“limit”关键字并不能阻止对整组数据的搜索(正确吗?)

想象一下我的搜索结果包含 1M 行,但我只需要搜索结果中的前 100 条记录!PostgreSQL 数据库是否必须在内存中临时创建这 1M 搜索结果行,然后给我所需的 100 个结果?

或者有什么办法告诉PostgreSQL一旦找到100条记录就停止搜索?

这是我的表,当然还没有填充 500M 记录!

CREATE TABLE con
(
  id bigserial NOT NULL,
  tag1 integer NOT NULL DEFAULT 0,
  tag2 integer NOT NULL DEFAULT 0,
  ref1 integer NOT NULL DEFAULT 0,
  ref2 integer NOT NULL DEFAULT 0,
  CONSTRAINT con_pkey PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

以及测试查询的解释分析:

explain analyze SELECT * FROM con where tag1 = '64813' and tag2 = '80'
Run Code Online (Sandbox Code Playgroud)
Seq Scan on con  (cost=0.00..3215204.72 rows=2470 width=112) (actual time=0.016..36970.528 rows=7505 loops=1)
   Filter: …
Run Code Online (Sandbox Code Playgroud)

postgresql performance performance-tuning

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

在 postgres 中禁用嵌套循环有哪些副作用?

多个连接的查询会在嵌套循环上花费大量时间。我禁用了嵌套循环,查询运行得更快。但是,有人告诉我,嵌套循环可能会跳过一些元组,从而给出错误的结果。这是真的?

postgresql performance query-performance

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

SQL 执行时打印到控制台

当执行多个 SQL 命令时,例如在pgAdmin SQL 编辑器中,如何将一些字符串打印到控制台(pgAdmin 中的输出窗格)。我想监控执行情况。

UPDATE x
SET a = b 
WHERE a IS NULL
;

Print to console --> Finished x.

UPDATE y
SET a = b 
WHERE a IS NULL
;

Print to console --> Finished y.
Run Code Online (Sandbox Code Playgroud)

我的问题与StackOverflow Question相同。或者,正如克雷格·林格(Craig Ringer)对这个问题的解释:

您是否希望通过将 PgAdmin-III 运行的 SQL 查询打印到标准错误(通过在 cmd.exe 交互式控制台上启动 PgAdmin-III 来查看)来观察它们?


我看过有关的评论\echo 'some_text'。但这给了我错误:

ERROR: syntax error at or near "\"
SQL state: 42601
Run Code Online (Sandbox Code Playgroud)

postgresql

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

将 PostgreSQL 文件迁移到新服务器

我们有一台 Win 2008 服务器,由于 CPU 故障而宕机。我们使用 PostgreSQL 作为数据库在其上运行 Atlassian 堆栈的一部分(JIRA、Confluence、Stash 和 Bamboo)。我现在将那台失效服务器上的硬盘驱动器安装到 Win 7 计算机上作为辅助硬盘驱动器。不幸的是,我们没有设置备份。我看到的将数据库迁移到新机器的所有说明都涉及针对正在运行的 PostgreSQL 实例运行 PostgreSQL cli 程序,但就我而言,我拥有的只是一个文件夹,而不是正在运行的 PostgreSQL 服务器。我希望能够在 Win 7 计算机上安装 PostgreSQL,以某种方式将数据迁移到新的 PostgreSQL 安装并从辅助驱动器中迁移出来。然后,我想使用标准程序导出数据并将其移动到新的生产服务器,或者如果我们最终将数据移动到 Atlassian 云服务,他们使用谁知道什么数据库引擎,则可能使用 Atlassian 备份工具导出数据。不管怎样,我需要旧驱动器上的数据并在新的 PostgreSQL 服务器中运行才能继续前进。有人有主意吗?

postgresql postgresql-9.3

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

故意破坏 PostgreSQL 中的索引

我需要知道是否有任何方法可以故意破坏 PostgreSQL 中的索引。

我找了很久,但从未见过有人提到过这样的行为。

postgresql index testing index-tuning

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

pgpool 负载平衡仅将所有查询发送到 master

我的两个 postgresql 服务器配置为流复制,工作正常。

Pgpool 配置为主从模式/负载平衡模式。

pgpool.conf:

listen_addresses = '*'
port = 9999
backend_hostname0 = 'master-postgres-ip'
backend_port0 = port-no
backend_weight0 = 1
backend_data_directory0 = 'data-dir'
backend_hostname1 = 'slave-postgres-ip'
backend_port1 = port-no
backend_weight1 = 1
backend_data_directory1 = 'data-dir'
load_balance_mode = on
master_slave_mode = on
master_slave_sub_mode='stream'
Run Code Online (Sandbox Code Playgroud)

我预计所有写入查询都将转到主查询,而读取查询将分布在两个查询之间。但是,所有的查询都只是为了掌握。但是,如果我停止主控,查询将变为从属。

有人可以告诉我可能出了什么问题吗?

pgpool 在启动时给出以下日志:

2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 0
2015-11-03 17:25:56: pid 21284: LOG:  find_primary_node: checking backend no 1
2015-11-03 17:25:56: pid 21284: DEBUG:  SSL is requested but SSL support is not …
Run Code Online (Sandbox Code Playgroud)

postgresql pgpool load-balancing

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

发现丢失的外键和/或索引

我们有一个相当大的数据库(大约700GB的数据),这是我们继承的,并且有几个DBA。随着时间的推移,我们意识到有几个丢失的外键和索引。

我想知道是否有某种自动方法可以使用某种日志解析或类似的方法来发现此类潜在丢失的键/索引。

postgresql index foreign-key database-design

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

PostgreSQL 乐观读(相当于 SQL Server 的 Read Commited Snapshot)

PostgreSQL 是否提供内置的乐观并发控制机制,例如 SQL Server 的读提交快照隔离?读者可以在不阻塞的情况下读取所有行,但如果在事务期间修改了行,则写入将阻塞并失败。

编辑:在 RCSI 下,写入实际上不会“阻塞并失败”,而只是阻塞。

postgresql concurrency locking isolation-level

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

Postgres:将连接结果插入为数组?

这是我所拥有的:

\n\n
=# SELECT * FROM users;\n id |     name      \n----+---------------\n  1 | Paul Gilbert\n  2 | Bob Dylan\n  3 | Cliff Downing\n\n=# SELECT * FROM regs;\n reg_id | user_id \n--------+---------\n      1 |       1\n     11 |       1\n    111 |       1\n      2 |       2\n     22 |       2\n      3 |       3\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我想要获得的:

\n\n
=# SELECT * FROM joined;\n id |     name      |       regs\n----+---------------+-------------------\n  1 | Paul Gilbert  | {1, 11, 111}\n  2 | Bob Dylan     | {2, 22}\n  3 | Cliff …
Run Code Online (Sandbox Code Playgroud)

postgresql

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