在 pg_hba.conf 中,有没有办法为本地连接启用“ident”和“md5”?
具体来说,我很高兴为人类打开“身份”以与数据库进行交互。但是,如果我设置一个 httpd 实例(例如),我不喜欢必须添加一个完整的 linux 用户以便它可以通过 ident 连接到数据库。我只想在 postgres 中分配一个密码。
我在 pg_hba.conf 中为“本地”设置两行的实验没有奏效,但该文档有点模棱两可,我想也许我错过了一些东西。
在 pg_hba.conf 中,有没有办法为本地连接启用“ident”和“md5”?
具体来说,我很高兴为人类打开“身份”以与数据库进行交互。但是,如果我设置一个 httpd 实例(例如),我不喜欢必须添加一个完整的 linux 用户以便它可以通过 ident 连接到数据库。我只想在 postgres 中分配一个密码。
我在 pg_hba.conf 中为“本地”设置两行的实验没有奏效,但该文档有点模棱两可,我想也许我错过了一些东西。
在将大量数据推送到 mongo 的大型程序运行几分钟后,我的日志开始显示(我猜)每次更新的消息。这似乎非常嘈杂,是否有一些特殊的原因它觉得有必要这样做?
Tue Jun 5 14:32:37 [conn3] update benchmark.entity
query: { corefEntityId: "45-LOCATION" }
update: { $set: { corefEntityId: "45-LOCATION", type: "Location" },
$push: { indocs: { docid: "cfcc403b-714f-4c5d-8507-ccb5b6354654",
ordinal: 26, label: "United States", mentions: [ "United States" ] } },
$addToSet: { allMentions: { $each: [ "United States" ] } },
$inc: { documentCount: 1 } } 116ms
作为一个也许更容易回答的脚注,我想知道:是一个“upsert”,它添加到一些内部文档中比作为顶级文档简单地插入到内部文档的其他集合中更快或更慢?
我想出了:
drop table if exists idtemp;
create temp table idtemp as
select documentid from taskflag where taskid='coref' and state = 2
order by statechanged asc limit howmany;
create unique index on idtemp(documentid);
-- trim taskflag to the first N docs ordered by coref.
delete from taskflag where documentid not in (select documentid from idtemp) ;
当 taskflag 中有 120k 条记录并且我保留 10k 时,这非常慢。
任务标志看起来像:
\d taskflag
Table "public.taskflag"
Column | Type | Modifiers
--------------+-----------------------------+-----------
documentid | character varying(64) | not null
taskid | character varying(64) | not null
state | smallint |
statechanged | timestamp without time zone |
Indexes:
"taskflag_pkey" PRIMARY KEY, btree (documentid, taskid)
"task_index2" btree (documentid)
"task_index4" btree (taskid, state, statechanged)
解释说:
QUERY PLAN
----------------------------------------------------------------------------------
Delete on taskflag (cost=0.00..105811822.25 rows=223210 width=6)
-> Seq Scan on taskflag (cost=0.00..105811822.25 rows=223210 width=6)
Filter: (NOT (SubPlan 1))
SubPlan 1
-> Materialize (cost=0.00..449.00 rows=10000 width=146)
-> Seq Scan on idtemp (cost=0.00..184.00 rows=10000 width=146)
(6 rows)
我应该只安排临时表来包含我保留的那些吗?
如果我使用 pgsql 命令在文件中执行以下命令,它会抱怨需要使用“执行”调用该过程。但是当我尝试使用 perform 时,它告诉我 perform 没有定义。解决方案是什么?
create or replace function waitris() returns void as
$$
declare
cnt integer;
begin
loop
select count(*) into cnt from taskflag where taskid = 'rdfdb' and state != 2;
if cnt = 0 then
exit;
end if;
select pg_sleep(1);
end loop;
end;
$$
language plpgsql;
select waitris();