我正在寻找一种可以SQL
在选择约束时生成创建 sql 的方法,例如 PgAdmin 的选项卡。(pg admin是怎么做的?)
我想实现一个通用方法,可以在处理后删除和重新创建外键约束。
我正在寻找一种可以SQL
在选择约束时生成创建 sql 的方法,例如 PgAdmin 的选项卡。(pg admin是怎么做的?)
我想实现一个通用方法,可以在处理后删除和重新创建外键约束。
两次运行相同的查询后,我希望数据被缓存,但我看到数据仍然从磁盘读取:
-> Index Scan using product_pkey on product (cost=0.42..3.51 rows=1 width=4) (actual time=0.132..0.132 rows=0 loops=25713)
Index Cond: (id = product_property_default.product)
Filter: ((lexeme @@ '''laptop'' | ''laptop-ul'''::tsquery) AND ((language)::oid = '20657'::oid))
Rows Removed by Filter: 1
Buffers: shared hit=152936 read=6111
I/O Timings: read=2602.604
完整计划:https ://explain.dalibo.com/plan/oJUn
询问:
explain (analyze, buffers)
select distinct "product"."id"
from "product"
inner join product_property on product_property.product = product.id
where "product"."lexeme" @@ plainto_tsquery('ro'::regconfig, 'laptop')
and "product_property"."meaning" = 'B'
and "product_property"."first" in (1.7179869184E10)
and "product"."language" = 'ro'::regconfig;
我的索引大小是 38MB:
\di+ product_pkey
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+--------------+-------+----------+---------+-------+-------------
pse | product_pkey | index | postgres | product | 38 MB |
为什么总缓冲区数 (x8KB) 大于我只有 38MB 的索引?
它是否包括数据库获取的行?
表大小 755MB:
\dt+ product
List of relations
Schema | Name | Type | Owner | Size | Description
--------+---------+-------+----------+--------+-------------
pse | product | table | postgres | 755 MB |
配置:
我的数据库 docker 容器使用低内存。来自docker stats
:
NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O
db 0.32% 75.36MiB / 512MiB 14.72% 359MB / 406MB 64.5GB / 14GB
请注意,同一台机器上还运行着其他 docker 服务。
free -h
:
total used free shared buff/cache available
Mem: 3.9G 2.9G 143M 274M 850M 488M
Swap: 4.0G 1.7G 2.3G
使用 Postgres 12.4(泊坞窗图像postgres:12.4-alpine
)