我们正在设置一个主站和一个(只读)从站的流式复制。我们现在正在寻找一种方法来监控复制;主要是为了验证从服务器是否仍然是最新的。
是否有可能做到这一点——最好是从奴隶?如果是这样,如何?
在支持 keepalive 套接字选项的系统上,设置tcp_keepalives_idle、tcp_keepalives_interval和tcp_keepalives_count有助于主节点及时发现连接断开。
在这种情况下,“及时通知”是什么意思?是否有一些错误日志报告连接断开?
我有一个表结构,用于保存另一个表的历史数据。就像是
id | name | date
----------------------------------------
1 | John | 2016-01-01 14:38.123123
1 | John Smith | 2016-01-03 16:46.123123
2 | ... | 2016-01-01 14:38.123123
3 | ... | 2016-01-01 14:38.123123
Run Code Online (Sandbox Code Playgroud)
我想做一个查询来获取每一行,并且对于每一行,还获取具有相同 ID 的前一行(行日期之前的最新日期),例如类似
SELECT id, name, date, previous.id, previous.name, previous.date
FROM ..?
Run Code Online (Sandbox Code Playgroud)
这可能吗?这是一个非常普遍的问题,但在我的特定情况下,我使用的是 PostgreSQL,所以如果有一些 postgres 功能可以实现这一点,那很好。
使用json数据类型时,有没有办法确保输入 JSON 必须有一个元素?
我的意思不是主要的,我希望插入的 JSON 至少具有id , name元素。它可以有更多,但至少这两个必须在那里。这能做到吗?
这些是我的 2 个表id_hierarchy和hierarchy_link:
CREATE TABLE id_hierarchy
(
id integer NOT NULL,
hierarchy integer
);
insert into id_hierarchy values (11,2),(22,3),(44,5),(77,8),(170,11),
(190,13),(240,18),(255,20);
CREATE TABLE hierarchy_link
(
hid integer NOT NULL,
parent_hid integer
);
insert into hierarchy_link values (1,0),(2,1),(3,2),(5,3),(8,5),(11,8),
(13,11),(15,13),(18,15),(20,18);
Run Code Online (Sandbox Code Playgroud)
与id_hierarchy.hierarchy=hierarchy_link.hid
对于以下 CTE 查询:
with recursive rt1 as(
select id,hid,parent_hid||'->'||hid as str
from rt2
where rt2.parent_hid=1
union
select t.id,t.hid,s.str||'->'||t.hid as str
from rt2 t
inner join rt1 s on (s.hid=t.parent_hid)
),
rt2 as (
select id, …Run Code Online (Sandbox Code Playgroud) 如何使用 PostgreSQL (9.3) 找出表(或索引)所在的表空间?
我有一个名为prefix存储“aaaa”的列的表。我的应用程序有一个很长的字符串,例如。'aaaabbbbccccdddd'。我想选择特定列是“aaaabbbbccccdddd”前缀的所有行。前缀的长度是可变的。
我怎样才能在 Postgres 中做到这一点?
我试过
SELECT * FROM my_table WHERE '%' || prefix || '%' ILIKE 'aaaabbbbccccdddd'
Run Code Online (Sandbox Code Playgroud)
但它不匹配。
我使用的是 postgres 9.5,我想知道 postgres 是否允许对 IP 地址进行任何类型的子网划分或计算,特别是 IPv6。我知道他们有存储数据的cidr格式,如 IpV4 和 Ipv6 格式。但是,我可以做任何事情,例如找出存储在数据库中的子网中有多少个客户端 IP?
例如。如果我存储了 的 IPv6 地址2001:dd8::/64,我能否找出有多少主机 IP(根据某些计算器,为 18446744073709551616)。
我的猜测是答案是否定的,postgres 不支持这一点。
我的数据库中有一个表,其中有几个简单的列和一个二进制列。该表的主键是一个integer类型。
我面临的问题是自动递增的主键列已达到其最大限制 +2147483647。意味着该表中有大约 20 亿条记录。由于该表中的二进制列,它255 GB在磁盘上有大约大小。
现在,由于该数据类型限制,对该表的所有插入都已停止。逻辑解决方案是我们将该主键列转换为bigint. 但是由于ALTER TABLE命令的大小总是失败,有时甚至数据库进入不一致的状态,我们根本无法访问该表。
使用的语句:
ALTER TABLE table_name ALTER COLUMN id SET DATA TYPE bigint ;
Run Code Online (Sandbox Code Playgroud)
任何人都有任何建议来解决这个问题。
我有3张桌子。1 表(表 A)有某种疾病(例如心脏病)的患者,另一个表是有各种疾病的患者(表 B)。第三个表是结果表。
我想要做的是将表 A 中的心脏病患者(表 A 仅是心脏病患者)与表 B 中的肾脏疾病患者进行比较。如果表 B 中存在命中(返回结果),则更新结果表该 ID 列肾脏疾病下的“x”。
结果表目前采用以下格式:
ID|肾脏|CHD|糖尿病……还有另外10种疾病
总结:我们用指定的疾病名称检查表 A 与表 B,如果有返回结果patientid,则结果表更新为该特定疾病名称下的“x” patientID。然后我将重新运行查询更改疾病名称(例如从肾脏到癌症)以查明心脏病患者是否患有癌症?
病人编号 1 2 3 4 5 ....一路到812(812心脏病患者)
患者 ID|年龄|疾病 1|疾病 2|疾病 3...一直到疾病 10 1 50 肾肺 2 35 肾心糖尿病 3 94 癌性肺炎 CHD
想要发生的是,对于PatientID表 A 中的每个,我们将表 B 中疾病 1-10 的特定疾病(例如肾脏)与表 B 进行比较,如果有结果,我们然后用'更新结果表x' 在结果表中该特定疾病列下。因此,在我们的示例中,对于患者 1 和 2,肾脏下方应该有一个“x”。
使用我们的样本数据,当我们运行肾脏时,结果表应该如下所示:
ID|肾脏|冠心病|糖尿病 1 次 2 x
谁能指出我为此编写查询的方向?该查询patientID从表 A 中检查所有(其中 812 个)表 B …