- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;博士
我有一个问题表,查询速度很慢。我在上面运行pg_repack来重建表,但仍然很慢。不幸的是,pg_repack没有重建表。我不得不通过pg_dump转储并重新加载表。
分析显示有很多死行。
# analyse verbose payslip;
INFO: analyzing "public.payslip"
INFO: "payslip": scanned 30000 of 458337 pages, containing 8732 live rows and 400621 dead rows; 8732 rows in sample, 133407 estimated total rows
ANALYZE
# select count(*) from payslip;
count
--------
140327
(1 row)
Time: 3255.772 ms (00:03.256)
# explain select count(*) from payslip;
QUERY PLAN
------------------------------------------------------------------------------------------
Aggregate (cost=142820.48..142820.49 rows=1 width=8)
-> Bitmap Heap Scan on payslip (cost=22543.92..142479.77 rows=136285 width=0)
-> Bitmap Index Scan on payslip_idx3 (cost=0.00..22509.84 rows=136285 width=0)
(3 rows)
Table "public.payslip"
Column | Type | Collation | Nullable | Default
--------------------------+------------------------+-----------+----------+----------------------------------------------
taxregno | character varying(20) | | not null |
worksid | character varying(8) | | not null |
cutoffdate | character(10) | | not null |
productionid | integer | | not null |
...
Ignore 50 columns
Indexes:
"payslip_pkey" PRIMARY KEY, btree (taxregno, worksid, cutoffdate, productionid)
"payslip_k1" UNIQUE, btree (taxregno, worksid, cutoffdate, productionid)
"payslip_idx3" btree (worksid)
"payslip_idx4" btree (ppsnumber)
$ psql -V
psql (PostgreSQL) 11.3 (Ubuntu 11.3-1.pgdg14.04+1)
#seq_page_cost = 1.0 # measured on an arbitrary scale
random_page_cost = 1.0 # same scale as above
# select count(*) from payslip;
count
--------
140327
(1 row)
Time: 26.216 ms
# explain select count(*) from payslip;
QUERY PLAN
----------------------------------------------------------------------
Aggregate (cost=10974.09..10974.10 rows=1 width=8)
-> Seq Scan on payslip (cost=0.00..10623.27 rows=140327 width=0)
(2 rows)
# explain (analyze, buffers, timing) select count(*) from payslip;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------
Aggregate (cost=12850.75..12850.76 rows=1 width=8) (actual time=42.070..42.071 rows=1 loops=1)
Buffers: shared hit=11022
-> Seq Scan on payslip (cost=0.00..12485.00 rows=146300 width=0) (actual time=0.010..31.669 rows=140327 loops=1)
Buffers: shared hit=11022
Planning Time: 0.102 ms
Execution Time: 42.115 ms
(6 rows)
select count(*) from payslip;
140572
Time: 643.144 ms
explain (analyze, buffers, timing) select count(*) from payslip;
Aggregate (cost=108251.57..108251.58 rows=1 width=8) (actual time=718.015..718.016 rows=1 loops=1)
Buffers: shared hit=169407
-> Bitmap Heap Scan on payslip (cost=8522.42..107900.14 rows=140572 width=0) (actual time=229.612..707.319 rows=140572 loops=1)
Heap Blocks: exact=76839 lossy=84802
Buffers: shared hit=169407
-> Bitmap Index Scan on payslip_idx3 (cost=0.00..8487.28 rows=140572 width=0) (actual time=205.228..205.228 rows=2212168 loops=1)
Buffers: shared hit=7757
Planning Time: 0.115 ms
Execution Time: 718.069 ms
select count(*) from payslip;
count
--------
140914
(1 row)
Time: 2077.577 ms (00:02.078)
explain (analyze, buffers, timing) select count(*) from payslip;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=138089.00..138089.01 rows=1 width=8) (actual time=2068.305..2068.305 rows=1 loops=1)
Buffers: shared hit=8 read=324086 written=1
-> Bitmap Heap Scan on payslip (cost=17071.92..137736.72 rows=140914 width=0) (actual time=270.512..2056.755 rows=140914 loops=1)
Heap Blocks: exact=8198 lossy=301091
Buffers: shared hit=8 read=324086 written=1
-> Bitmap Index Scan on payslip_idx3 (cost=0.00..17036.69 rows=140914 width=0) (actual time=268.801..268.801 rows=4223367 loops=1)
Buffers: shared read=14794
Planning Time: 0.164 ms
Execution Time: 2068.623 ms
(9 rows)
Time: 2069.567 ms (00:02.070)
relname | rows_in_bytes | num_rows | number_of_indexes | unique | single_column | multi_column
---------+---------------+----------+-------------------+--------+---------------+--------------
payslip | 138 kB | 140914 | 4 | Y | 2 | 2
schemaname | tablename | indexname | num_rows | table_size | index_size | unique | number_of_scans | tuples_read | tuples_fetched
------------+-----------+--------------+----------+------------+------------+--------+-----------------+-------------+----------------
public | payslip | payslip_k1 | 140914 | 2420 MB | 244 MB | Y | 39720 | 3292501603 | 14295183
public | payslip | payslip_idx4 | 140914 | 2420 MB | 156 MB | N | 43013 | 9529447977 | 34943724
public | payslip | payslip_idx3 | 140914 | 2420 MB | 116 MB | N | 42812 | 3067603558 | 72358879
public | payslip | payslip_pkey | 140914 | 2420 MB | 244 MB | Y | 3540 | 203676311 | 4213496
(4 rows)
size | idx1 | idx2 | idx3 | idx4
---------+------------------------------+---------------------------------+----------------------+------
488 MB | payslip_pkey | payslip_k1 | |
explain (analyze, buffers, timing) select count(*) from payslip;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
Aggregate (cost=312850.42..312850.43 rows=1 width=8) (actual time=1348.241..1348.242 rows=1 loops=1)
Buffers: shared hit=199941 read=111148
-> Seq Scan on payslip (cost=0.00..312498.14 rows=140914 width=0) (actual time=209.227..1336.035 rows=140914 loops=1)
Buffers: shared hit=199941 read=111148
Planning Time: 0.069 ms
Execution Time: 1348.289 ms
(6 rows)
schemaname | tablename | indexname | num_rows | table_size | index_size | unique | number_of_scans | tuples_read | tuples_fetched
------------+-----------+--------------+----------+------------+------------+--------+-----------------+-------------+----------------
public | payslip | payslip_pkey | 140914 | 2430 MB | 91 MB | Y | 0 | 0 | 0
public | payslip | payslip_idx2 | 140914 | 2430 MB | 202 MB | Y | 0 | 0 | 0
public | payslip | payslip_idx4 | 140914 | 2430 MB | 128 MB | Y | 0 | 0 | 0
public | payslip | payslip_idx3 | 140914 | 2430 MB | 128 MB | N | 0 | 0 | 0
(4 rows)
# analyse verbose payslip;
INFO: analyzing "public.payslip"
INFO: "payslip": scanned 30000 of 458337 pages, containing 8732 live rows and 400621 dead rows; 8732 rows in sample, 133407 estimated total rows
ANALYZE
最佳答案
从上周到本周的变化表明payslip
的许多数据不再在缓存中(请参阅hit
和read
部分中的变化)。
还要注意的是,您的Buffers:
越来越Heap Blocks
,这意味着您的lossy
设置可能太低,无法进行操作。
本周您可能应该将work_mem
至少增加到work_mem
(因为最新的统计数据表明访问了约309k个页面块)。但是,您可能需要随着表的增长而增加它--25MB
可以按会话设置,因此您需要根据基于模式的表大小预测来设置它(我不喜欢这个想法,但也不建议将work_mem
设置为任意高,因为全局设置可能导致内存过度分配)
我不太清楚work_mem
的内部结构,但我想知道您是否看到了重新打包后性能的提高,因为这些东西存储在内存中,并随着时间的推移被清除掉。
披露:我为EnterpriseDB (EDB)工作
关于postgresql - Postgres:为什么选择count(*)需要这么长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58449716/
我正在尝试用 C 语言编写一个使用 gstreamer 的 GTK+ 应用程序。 GTK+ 需要 gtk_main() 来执行。 gstreamer 需要 g_main_loop_run() 来执行。
我已经使用 apt-get 安装了 opencv。我得到了以下版本的opencv2,它工作正常: rover@rover_pi:/usr/lib/arm-linux-gnueabihf $ pytho
我有一个看起来像这样的 View 层次结构(基于其他答案和 Apple 的使用 UIScrollView 的高级 AutoLayout 指南): ScrollView 所需的2 个步骤是: 为 Scr
我尝试安装 udev。 udev 在 ./configure 期间给我一个错误 --exists: command not found configure: error: pkg-config and
我正在使用 SQLite 3。我有一个表,forums,有 150 行,还有一个表,posts,有大约 440 万行。每个帖子都属于一个论坛。 我想从每个论坛中选择最新帖子的时间戳。如果我使用 SEL
使用 go 和以下包: github.com/julienschmidt/httprouter github.com/shwoodard/jsonapi gopkg.in/mgo.v2/bson
The database仅包含 2 个表: 钱包(100 万行) 事务(1500 万行) CockroachDB 19.2.6 在 3 台 Ubuntu 机器上运行 每个 2vCPU 每个 8GB R
我很难理解为什么在下面的代码中直接调用 std::swap() 会导致编译错误,而使用 std::iter_swap 编译却没有任何错误. 来自 iter_swap() versus swap() -
我有一个非常简单的 SELECT *用 WHERE NOT EXISTS 查询条款。 SELECT * FROM "BMAN_TP3"."TT_SPLDR_55E63A28_59358" SELECT
我试图按部分组织我的 .css 文件,我需要从任何文件访问文件组中的任何类。在 Less 中,我可以毫无问题地创建一个包含所有文件导入的主文件,并且每个文件都导入主文件,但在 Sass 中,我收到一个
Microsoft.AspNet.SignalR.Redis 和 StackExchange.Redis.Extensions.Core 在同一个项目中使用。前者需要StackExchange.Red
这个问题在这里已经有了答案: Updating from Rails 4.0 to 4.1 gives sass-rails railties version conflicts (4 个答案) 关
我们有一些使用 Azure DevOps 发布管道部署到的现场服务器。我们已经使用这些发布管道几个月了,没有出现任何问题。今天,我们在下载该项目的工件时开始出现身份验证错误。 部署组中的节点显示在线,
Tip: instead of creating indexes here, run queries in your code – if you're missing any indexes, you
你能解释一下 Elm 下一个声明中的意思吗? (=>) = (,) 我在 Elm architecture tutorial 的例子中找到了它 最佳答案 这是中缀符号。实际上,这定义了一个函数 (=>
我需要一个 .NET 程序集查看器,它可以显示低级详细信息,例如元数据表内容等。 最佳答案 ildasm 是 IL 反汇编程序,具有低级托管元数据 token 信息。安装 Visual Studio
我有两个列表要在 Excel 中进行比较。这是一个很长的列表,我需要一个 excel 函数或 vba 代码来执行此操作。我已经没有想法了,因此转向你: **Old List** A
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我正在学习 xml 和 xml 处理。我无法很好地理解命名空间的存在。 我了解到命名空间帮助我们在 xml 中分离相同命名的元素。我们不能通过具有相同名称的属性来区分元素吗?为什么命名空间很重要或需要
我搜索了 Azure 文档、各种社区论坛和 google,但没有找到关于需要在公司防火墙上打开哪些端口以允许 Azure 所有组件(blob、sql、compute、bus、publish)的简洁声明
我是一名优秀的程序员,十分优秀!