Reduce default file size limit to 1Gb, and move the
configuration constant to config.h.
This commit is contained in:
parent
9cae93d309
commit
5ce851dcda
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.41 1999/02/13 23:18:35 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.42 1999/04/05 22:25:11 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -33,10 +33,11 @@
|
|||||||
* The magnetic disk storage manager keeps track of open file descriptors
|
* The magnetic disk storage manager keeps track of open file descriptors
|
||||||
* in its own descriptor pool. This happens for two reasons. First, at
|
* in its own descriptor pool. This happens for two reasons. First, at
|
||||||
* transaction boundaries, we walk the list of descriptors and flush
|
* transaction boundaries, we walk the list of descriptors and flush
|
||||||
* anything that we've dirtied in the current transaction. Second, we
|
* anything that we've dirtied in the current transaction. Second, we want
|
||||||
* have to support relations of > 4GBytes. In order to do this, we break
|
* to support relations larger than the OS' file size limit (often 2GBytes).
|
||||||
* relations up into chunks of < 2GBytes and store one chunk in each of
|
* In order to do that, we break relations up into chunks of < 2GBytes
|
||||||
* several files that represent the relation.
|
* and store one chunk in each of several files that represent the relation.
|
||||||
|
* See the BLCKSZ and RELSEG_SIZE configuration constants in include/config.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct _MdfdVec
|
typedef struct _MdfdVec
|
||||||
@ -59,30 +60,6 @@ static MemoryContext MdCxt;
|
|||||||
#define MDFD_DIRTY (uint16) 0x01
|
#define MDFD_DIRTY (uint16) 0x01
|
||||||
#define MDFD_FREE (uint16) 0x02
|
#define MDFD_FREE (uint16) 0x02
|
||||||
|
|
||||||
/*
|
|
||||||
* RELSEG_SIZE appears to be the number of segments that can
|
|
||||||
* be in a disk file. It was defined as 262144 based on 8k
|
|
||||||
* blocks, but now that the block size can be changed, this
|
|
||||||
* has to be calculated at compile time. Otherwise, the file
|
|
||||||
* size limit would not work out to 2-gig (2147483648).
|
|
||||||
*
|
|
||||||
* The number needs to be (2 ** 31) / BLCKSZ, but to be keep
|
|
||||||
* the math under MAXINT, pre-divide by 256 and use ...
|
|
||||||
*
|
|
||||||
* (((2 ** 23) / BLCKSZ) * (2 ** 8))
|
|
||||||
*
|
|
||||||
* 07 Jan 98 darrenk
|
|
||||||
*
|
|
||||||
* Now possibly let the OS handle it...
|
|
||||||
*
|
|
||||||
* 19 Mar 98 darrenk
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef LET_OS_MANAGE_FILESIZE
|
|
||||||
#define RELSEG_SIZE ((8388608 / BLCKSZ) * 256)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* routines declared here */
|
/* routines declared here */
|
||||||
static MdfdVec *_mdfd_openseg(Relation reln, int segno, int oflags);
|
static MdfdVec *_mdfd_openseg(Relation reln, int segno, int oflags);
|
||||||
static MdfdVec *_mdfd_getseg(Relation reln, int blkno, int oflag);
|
static MdfdVec *_mdfd_getseg(Relation reln, int blkno, int oflag);
|
||||||
|
@ -27,6 +27,23 @@
|
|||||||
*/
|
*/
|
||||||
#define BLCKSZ 8192
|
#define BLCKSZ 8192
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RELSEG_SIZE is the maximum number of blocks allowed in one disk file.
|
||||||
|
* Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ;
|
||||||
|
* relations bigger than that are divided into multiple files.
|
||||||
|
*
|
||||||
|
* CAUTION: RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file size.
|
||||||
|
* This is typically 2Gb or 4Gb in a 32-bit operating system. By default,
|
||||||
|
* we make the limit one billion bytes to avoid any possible integer-overflow
|
||||||
|
* problems within the OS. A limit smaller than necessary only means we
|
||||||
|
* divide a large relation into more chunks than necessary, so it seems best
|
||||||
|
* to err in the direction of a small limit.
|
||||||
|
*
|
||||||
|
* CAUTION: you had best do an initdb if you change either BLCKSZ or
|
||||||
|
* RELSEG_SIZE.
|
||||||
|
*/
|
||||||
|
#define RELSEG_SIZE (1000000000 / BLCKSZ)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following is set using configure.
|
* The following is set using configure.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user