Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3485cc3

Browse files
committed
Adjust cost_nonsequential_access() to have more reasonable behavior
when random_page_cost has a small value. Per Manfred Koizar, thoughI didn't use his equation exactly.
1 parent387b38b commit3485cc3

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

‎src/backend/optimizer/path/costsize.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
* Portions Copyright (c) 1994, Regents of the University of California
5050
*
5151
* IDENTIFICATION
52-
* $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.130 2004/06/05 01:55:04 tgl Exp $
52+
* $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.131 2004/06/10 21:02:00 tgl Exp $
5353
*
5454
*-------------------------------------------------------------------------
5555
*/
@@ -189,11 +189,12 @@ cost_seqscan(Path *path, Query *root,
189189
* for now by assuming we are given an effective_cache_size parameter.
190190
*
191191
* Given a guesstimated cache size, we estimate the actual I/O cost per page
192-
* with the entirely ad-hoc equations:
193-
*if relpages >= effective_cache_size:
194-
*random_page_cost * (1 - (effective_cache_size/relpages)/2)
195-
*if relpages < effective_cache_size:
196-
*1 + (random_page_cost/2-1) * (relpages/effective_cache_size) ** 2
192+
* with the entirely ad-hoc equations (writing relsize for
193+
* relpages/effective_cache_size):
194+
*if relsize >= 1:
195+
*random_page_cost - (random_page_cost-1)/2 * (1/relsize)
196+
*if relsize < 1:
197+
*1 + ((random_page_cost-1)/2) * relsize ** 2
197198
* These give the right asymptotic behavior (=> 1.0 as relpages becomes
198199
* small, => random_page_cost as it becomes large) and meet in the middle
199200
* with the estimate that the cache is about 50% effective for a relation
@@ -213,9 +214,9 @@ cost_nonsequential_access(double relpages)
213214
relsize=relpages /effective_cache_size;
214215

215216
if (relsize >=1.0)
216-
returnrandom_page_cost* (1.0-0.5 /relsize);
217+
returnrandom_page_cost- (random_page_cost-1.0)*0.5 /relsize;
217218
else
218-
return1.0+ (random_page_cost*0.5-1.0)*relsize*relsize;
219+
return1.0+ (random_page_cost-1.0)*0.5*relsize*relsize;
219220
}
220221

221222
/*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp