gpt4 book ai didi

database - 什么会导致记录在 Postgres 的特定索引中丢失?

转载 作者:搜寻专家 更新时间:2023-10-30 23:36:20 25 4
gpt4 key购买 nike

在诊断问题时,我设法观察到记录根据我的 where 子句进出存在; (即使用的索引)。

大概这是一个损坏的索引?是什么原因造成的,我该如何预防?我应该如何安全地重建索引?如何检测此表或其他表上的任何其他索引是否受到影响?

这是 postgres 控制台的一些输出:

us_website=> SELECT id, company_id from summaries WHERE id=190035;
id | company_id
--------+------------
190035 | 24561
(1 row)

us_website=> SELECT id, company_id from summaries WHERE company_id=24561 AND id=190035;
id | company_id
--------+------------
190035 | 24561
(1 row)

us_website=> SELECT id, company_id from summaries WHERE company_id=24561;
id | company_id
--------+------------
325812 | 24561
325821 | 24561
325820 | 24561
325819 | 24561
325818 | 24561
325817 | 24561
325816 | 24561
325815 | 24561
325814 | 24561
325813 | 24561
325811 | 24561
325810 | 24561
310981 | 24561
190034 | 24561
278479 | 24561
278478 | 24561
278477 | 24561
278476 | 24561
278475 | 24561
190033 | 24561
278472 | 24561
278471 | 24561
43139 | 24561
(23 rows)

us_website=> EXPLAIN ANALYSE SELECT id, company_id from summaries WHERE id=190035;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------
Index Scan using index_summaries_on_id on summaries (cost=0.00..8.32 rows=1 width=8) (actual time=0.012..0.013 rows=1 loops=1)
Index Cond: (id = 190035)
Total runtime: 0.062 ms
(3 rows)

us_website=> EXPLAIN ANALYSE SELECT id, company_id from summaries WHERE company_id=24561 AND id=190035;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------
Index Scan using index_summaries_on_id on summaries (cost=0.00..8.32 rows=1 width=8) (actual time=0.021..0.022 rows=1 loops=1)
Index Cond: (id = 190035)
Filter: (company_id = 24561)
Total runtime: 0.044 ms
(4 rows)

us_website=> EXPLAIN ANALYSE SELECT id, company_id from summaries WHERE company_id=24561;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Index Scan using index_summaries_on_company_id on summaries (cost=0.00..102.86 rows=31 width=8) (actual time=0.013..0.049 rows=23 loops=1)
Index Cond: (company_id = 24561)
Total runtime: 0.080 ms
(3 rows)

请注意,在仅按 company_id 的查询中,不会返回记录。另请注意,此查询使用其他查询不使用的特定索引。

最佳答案

这是我的索引损坏 list :

  1. CPU 过热(信不信由你,这是迄今为止我见过的最常见原因!)
  2. 坏内存
  3. 存储写入错误的问题。也许对未在索引中完成的 wal 写入进行了一些奇怪的错误检测?虽然从来没有在野外见过这个。

关于database - 什么会导致记录在 Postgres 的特定索引中丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com