如何判断Postgres 9.x中的autovacuum守护进程是否正在运行并维护数据库集群?
我正在使用wamp服务器并在localhost中运行php项目.我想使用基于"https"的网址来测试我的项目.
我尝试使用" https:// localhost/myproject / "并将其重定向到"此网页不可用"页面.
我已将"php_openssl"和"ssl"模块启用到apache配置中.但仍无法访问基于https的网址.
我在pg_toast上运行了一个autovacuum进程:
select query, from pg_stat_activity where query like '%autov%';
"autovacuum: VACUUM pg_toast.pg_toast_15404513 "
Run Code Online (Sandbox Code Playgroud)
我如何找出这个pg_toast所属的表/索引/什么?或者autovacuum正在处理其他事情?
使用时RPostgreSQL我发现我不能sqldf以同样的方式使用.例如,如果我使用以下代码加载库并将数据读入数据框:
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host="localhost", user="postgres", password="xxx", dbname="yyy", port="5436")
rs <- dbSendQuery(con, "select * from table");
df<- fetch(rs, n = -1); dbClearResult(rs)
dbDisconnect(con)
Run Code Online (Sandbox Code Playgroud)
我知道在数据帧中有这个表的内容df.但是,如果我想使用sqldf我以前执行的命令运行SQL命令:
sqldf("SELECT * FROM df WHERE X > 10")
Run Code Online (Sandbox Code Playgroud)
这不再有效,因为我收到错误消息:
Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect postgres@localhost on dbname "test"
)
Error in !dbPreExists : invalid argument type
Run Code Online (Sandbox Code Playgroud)
我认为这是我操作员的错误,但我无法确定如何提供哪些参数,sqldf以便它只关注数据框并且不会尝试连接到其他任何东西.
在PostgreSQL中,公用表表达式(CTE)是优化范围.这意味着CTE已实现为内存,并且来自另一个查询的谓词永远不会被推入CTE.
现在我想知道关于CTE的其他元数据(例如排序)是否与其他查询共享.我们来看看以下问题:
WITH ordered_objects AS
(
SELECT * FROM object ORDER BY type ASC LIMIT 10
)
SELECT MIN(type) FROM ordered_objects
Run Code Online (Sandbox Code Playgroud)
在这里,MIN(type)显然总是第一行ordered_objects(或者NULL如果ordered_objects是空的),因为ordered_objects已经被排序了type.这些知识ordered_objects在评估时是否可用SELECT MIN(type) FROM ordered_objects?
我将使用Postgresql构建一个Nodejs应用程序作为后端.我不打算使用像Sequelize这样的ORM,因为文档和性能问题不好或任何其他ORM - ORM是一种反模式.
我发现node-postgres和pg-promise在这方面是候选者.因此,任何人都可以澄清其中一个工具比另一个工具更好的方案,或者哪个工具更适合描述,前提是node-postgres自2010年以来一直在发展,并且自2015年以来一直是pg-promise.
我需要选择一个表,但是当我尝试使用某些列的"where"时,它会保持返回错误.
这是我的代码,我附上一个图像文件的细节.
sirima=# select * from sirima.program_studi;
kode | nama | jenis_kelas | nama_fakultas | jenjang
------+-----------------+---------------+---------------------------------+---------
1 | Kedokteran | Reguler | Kedokteran | S1
2 | Matematika | Reguler | Matematika dan Pengetahuan Alam | S1
3 | Teknik Sipil | Reguler | Teknik | S1
4 | Ilmu Komputer | Reguler | Ilmu Komputer | S1
5 | Kedokteran | Reguler | Kedokteran | S2
6 | Fisika | Reguler | Matematika dan Pengetahuan Alam | S2 …Run Code Online (Sandbox Code Playgroud) create schema bla;
-- then create table table_name into this schema
Run Code Online (Sandbox Code Playgroud)
然后我想为用户更改默认架构(用户是postgres)
我这样做:( ALTER ROLE postgres SET search_path TO bla;查询成功返回,没有结果).
当我尝试SELECT * FROM table_name给出错误relation "table_name" does not exist
虽然SELECT * FROM bla.table_name工作正常.
我尝试更改用户的默认架构有什么问题?
在8.x之前的日子里,我在Linux上运行了大量的PGSQL数据库,并通过维护脚本显式清除了数据库.
当8.x出现时,我没有移动到那些系统上的autovacuum,因为它工作正常,所以不需要改变任何东西.所以我不是autovacuum专家.
现在在8.x之后的时代,我发现自己在Windows Server 2003或更新版本上运行了一些PGSQL数据库.
看起来autovacuum 应该正在运行,因为我们已按照说明操作并将其保留在.conf文件中.
但是,将PGAdmin连接到数据库会提示我们应该运行VACUUM.
如何判断autovacuum守护程序是否正在运行并负责数据库并正确吸尘?
我有这个更新,我已经阅读了 postgresql 文档,但不清楚如何插入数据,一些教程选项:
1.with '{}'
2.with {}
3.with '[]' <-- array of objects
Run Code Online (Sandbox Code Playgroud)
并且大多数不'使用':: jsonb'就像在:
https://www.postgresql.org/docs/9.4/static/datatype-json.html
这是我的代码:
UPDATE customer set phones ='{ {"type": "mobile", "phone": "001001"} ,
{"type": "fix", "phone": "002002"} }'::jsonb
where id ='4ca27243-6a55-4855-b0e6-d6e1d957f289';
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ERROR: invalid input syntax for type json
LINE 1: UPDATE customer set phones ='{ {"type": "mobile", "phone": ...
^
DETAIL: Expected string or "}", but found "{".
CONTEXT: JSON data, line 1: { {...
SQL state: 22P02
Character: 29
Run Code Online (Sandbox Code Playgroud)
我只需要录制一盏电话,需要附上一个大名鼎鼎的对象吗?我的意思是对于 javascript ,对象数组不是对象,但我不知道 postresql 的 …
postgresql ×9
sql ×5
autovacuum ×3
apache ×1
https ×1
json ×1
jsonb ×1
node.js ×1
pg-promise ×1
php ×1
r ×1
rpostgresql ×1
sqldf ×1
ssl ×1
unix ×1
wamp ×1