mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Get rid of cluster.c's apparatus for rebuilding a relation's indexes
in favor of using the REINDEX TABLE apparatus, which does the same thing simpler and faster. Also, make TRUNCATE not use cluster.c at all, but just assign a new relfilenode and REINDEX. This partially addresses Hartmut Raschick's complaint from last December that 7.4's TRUNCATE is an order of magnitude slower than prior releases. By getting rid of a lot of unnecessary catalog updates, these changes buy back about a factor of two (on my system). The remaining overhead seems associated with creating and deleting storage files, which we may not be able to do much about without abandoning transaction safety for TRUNCATE.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994-5, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/commands/cluster.h,v 1.22 2004/05/06 16:10:57 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/commands/cluster.h,v 1.23 2004/05/08 00:34:49 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -20,11 +20,8 @@
|
||||
extern void cluster(ClusterStmt *stmt);
|
||||
|
||||
extern void check_index_is_clusterable(Relation OldHeap, Oid indexOid);
|
||||
extern void rebuild_relation(Relation OldHeap, Oid indexOid);
|
||||
extern void mark_index_clustered(Relation rel, Oid indexOid);
|
||||
extern Oid make_new_heap(Oid OIDOldHeap, const char *NewName);
|
||||
extern List *get_indexattr_list(Relation OldHeap, Oid *OldClusterIndex);
|
||||
extern void rebuild_indexes(Oid OIDOldHeap, List *indexes,
|
||||
Oid OIDClusterIndex);
|
||||
extern void swap_relfilenodes(Oid r1, Oid r2);
|
||||
|
||||
#endif /* CLUSTER_H */
|
||||
|
||||
Reference in New Issue
Block a user