Mar*_*ney 11 postgresql indexing concurrency
在postgresql中,我为一个大表添加了一个索引,花了大约1秒钟(坦率地说,让我感到惊讶).
当我去掉索引时,我让它运行> 200秒而不返回,最后取消了放下操作.
CREATE INDEX idx_cservicelocationdivisionstatus_inversed
ON cservicelocationdivisionstatus (cservicelocationdivisionid, startdate, enddate DESC);
Run Code Online (Sandbox Code Playgroud)
花很少的时间,但是
DROP INDEX idx_cservicelocationdivisionstatus_inversed;
Run Code Online (Sandbox Code Playgroud)
花了这么长时间才放弃并取消了.
该表cservicelocationdivisionstatus有6列和大约310k行数据.
为什么删除索引所需的时间比创建索引要长得多?
编辑:此页面指示对于mySql,具有多个索引的表将复制表并重新插入所有行而不删除您正在删除的索引.(更糟糕的是,使用mySql,如果你在同一个表上删除多个索引,它将为你要删除的每个索引重新复制一次表,而不是聪明并重新复制数据一次而不是所有的索引你是这样的事情会发生在postgres吗?
kha*_*son 22
您提到的表格上的索引通常应该能够很快被删除(当然比3分钟更快).听起来像表/索引正在使用中,因此无法删除.
您可以通过查询pg_stat_activity表并查找涉及创建索引的表的活动来确认.
| 归档时间: |
|
| 查看次数: |
8407 次 |
| 最近记录: |