我想pg_hba.conf在发出复制启动命令之前测试提供者是否授权了复制连接,但不知道如何。(我可以访问两个节点上的 unix 和 postgresql shell)
对于非复制连接,我将psql使用类似的连接字符串进行连接'host=$MASTER_IP port=5432 dbname=$DATABASE user=$DBUSER password=$DBPASSWORD'
上下文: 我正在编写一个脚本来自动设置服务器之间的复制,并且服务器的配置通过不同的系统/存储库(遗留原因)进行管理。因此,我想测试每一步的设置是否正确。
我的查询(从现有表创建新表)需要很长时间。所以我在我的办公室建立了一个远程数据库——那里有更多的内存。
我可以像往常一样使用 psql 从家里连接到我的数据库。
如何告诉远程服务器从终端执行我的查询而不必等待响应?
(postgresql-9.2 , linux 环境)
编辑:我对其他解决方案持开放态度,没有必要使用 psql
有人可以给我一个关于如何以及何时使用 sys_refcursor 的小解释吗?
我有一张服务表。我需要合并两个 SELECT 查询。两者都有不同的 where 子句。例如
SELECT
U_REGN as 'Region',
COUNT(callID) as 'OpenServices',
SUM(CASE WHEN descrption LIKE '%DFC%' THEN 1 ELSE 0 END) 'DFC'
FROM OSCL
WHERE
([status] = - 3)
GROUP BY
U_REGN
ORDER BY
'OpenServices' desc
Run Code Online (Sandbox Code Playgroud)
这给了我结果
Region | OpenServices | DFC
Karaci | 14 | 4
Lahore | 13 | 3
Islamabad | 10 | 4
Run Code Online (Sandbox Code Playgroud)
我还有一个疑问
SELECT
U_REGN as 'Region',
COUNT(callID) as 'ClosedYesterday'
FROM OSCL
WHERE
DATEDIFF(day, closeDate, GETDATE()) = 1
GROUP BY
U_REGN
ORDER BY
'ClosedYesterday' …Run Code Online (Sandbox Code Playgroud) 我正在通过pgAdmin III 在远程 PostgreSQL 数据库上工作。在没有在 pgAdmin 中做任何事情的不长一段时间(比如 10-15 分钟)之后,连接会自动过期。因此,我收到一条错误消息,询问我是否要重新连接。这大约需要 10 秒。并且数据库结构崩溃了,所以我必须重新打开我之前打开的模式。
有没有办法在某处更改超时参数,以防止连接过期更长时间?
在从 恢复数据库时pg_dump,会产生许多错误,随后整个表都会被忽略。一个例子:
ERROR: insert or update on table "channelproducts" violates foreign key constraint "fk_rails_dfaae373a5"
DETAIL: Key (channel_id)=(1) is not present in table "channels".
Run Code Online (Sandbox Code Playgroud)
有趣的是,我注意到所有这些实例都是由于加载顺序而弹出的。channels是channelproducts按字母顺序和在文件中之后,因此我可以理解为什么 postgres 抱怨必须创建一个没有父母的孩子。
警告:外键是由 rails 4.2 自动生成的:我可以从源头上删除问题,但这仍然没有真正解决问题......
版本:PostgreSQL 9.4.4。
psql如果已经创建了数据库表和列,那么如何从外键约束的情况中恢复?
在最简单的情况下,当我们向表中插入新行(并且事务提交)时,它将对所有后续事务可见。请参阅xmax此示例中的 0:
CREATE TABLE vis (
id serial,
is_active boolean
);
INSERT INTO vis (is_active) VALUES (FALSE);
SELECT ctid, xmin, xmax, * FROM vis;
ctid ?xmin ? xmax ? id ? is_active
?????????????????????????????????????
(0,1) ?2699 ? 0 ? 1 ? f
Run Code Online (Sandbox Code Playgroud)
当我们更新它时(因为该标志是FALSE偶然设置的),它会发生一些变化:
UPDATE vis SET is_active = TRUE;
SELECT ctid, xmin, xmax, * FROM vis;
ctid ? xmin ? xmax ? id ? is_active
?????????????????????????????????????
(0,2) ? 2700 ? 0 ? 1 ? t
Run Code Online (Sandbox Code Playgroud)
根据PostgreSQL 使用的 …
在 SELECT 语句中,如果未指定 ORDER BY 子句,则不能保证返回行的顺序。这适用于“普通”表。
对于使用 WITH 表达式 (CTE) 生成的有序表也是如此吗?函数返回的有序表?我认为不是。这是文档中明确说明的地方吗?
具体来说,我可以假设这个(更有效的)查询:
WITH ordered AS ( SELECT * FROM table1 ORDER BY col1 )
SELECT sum(col2) result FROM
generate_series(0,50) nr,
LATERAL (SELECT * FROM ordered LIMIT 100 OFFSET nr*100) a
GROUP BY nr ORDER BY nr;
Run Code Online (Sandbox Code Playgroud)
将等同于这个查询:
SELECT sum(col2) result FROM
generate_series(0,50) nr,
LATERAL (SELECT * FROM table1 ORDER BY col1 LIMIT 100 OFFSET nr*100) a
GROUP BY nr ORDER BY nr;
Run Code Online (Sandbox Code Playgroud)
对于函数:
如果我有这样的功能:
CREATE FUNCTION do_sort(name text[]) RETURNS TABLE(name …Run Code Online (Sandbox Code Playgroud) 我有一个大约 10 天的 WinServer2012R2 和 SQL Server Express 2016 安装用于测试。我是这台机器上唯一的用户。SQL Server 2005 中的 .bak 大约为 250MB 的数据库已恢复,没有任何问题。机器重新启动后,进程“SQL Server NT - 64 位”使用 0% CPU。
几分钟或几小时后,来自“SQL Server NT - 64 位”的 SSMS CPU 使用率的一些简单查询(没有更新/插入!)突然跃升至约 15% 并保持在那里,即使在空闲时也是如此。从那时起,通常需要不到一秒钟的查询突然需要 2 分钟。在实际查询期间,CPU 使用率不会增加。在这种状态下,服务器几乎无法使用。
仅连接 SQL Server Profiler 需要 30 秒以上的时间。除了我自己的查询之外,我只看到来自 SQLServerCEIP / SQLTELEMETRY 的非常少的查询,大约每分钟 3 次。
重新启动 SQL-Server 并不能解决它。CPU 使用率立即回升至约 15%。即使在数小时后 SQL-Server 也不会恢复。只有重新启动整个机器才能解决问题。
由于这是一个“开箱即用”的安装,只有一个小数据库,几乎没有查询,只有我作为用户并且可能没有锁,关于常规 SQL-Server 性能问题的许多文章谈论了很多事情真的不适用这里。这似乎为SQL-服务器专用希望专注于一些内部的任务。
这是一个具有 2GB RAM 和 2GHz 双 Xeon 的虚拟机。我也有 VS2016,它真的很快。没有防病毒软件,甚至没有 Windows Defender。这里已经晚了。明天我将尝试 sp_whoisactive。我真的很想知道 SQL-Server 在那里做什么......在以前的机器上有 1 GB 相同的数据库在 …
我正在设计一个模式来支持用户活动的日志记录,用户必须能够搜索:
我创建了这个架构:
并设计查询以进行搜索:
在所有事件中:
SELECT extract(epoch from log_time) * 1000,
u.username,
CASE WHEN l.event_type IN (0, 2) THEN e.template
WHEN l.event_type = 1 THEN format(e.template, ecs.field)
WHEN l.event_type = 3 THEN format(e.template, ess.field)
WHEN l.event_type = 4 THEN format(e.template, ect.ip, ect.port)
END
FROM logs l
JOIN users u ON u.id = l.user_id
JOIN event_def e ON e.id = l.event_type
LEFT JOIN event_client_search ecs ON ecs.log_id = l.id
LEFT JOIN event_switch_search ess ON ess.log_id = l.id
LEFT JOIN event_cable_test …Run Code Online (Sandbox Code Playgroud)postgresql ×7
sql-server ×2
connectivity ×1
foreign-key ×1
mvcc ×1
oracle ×1
oracle-11g ×1
order-by ×1
performance ×1
pg-dump ×1
pg-hba.conf ×1
pgadmin ×1
psql ×1
replication ×1
restore ×1