本文详细介绍PostgreSQL的磁盘空间占用问题
我觉得PostgreSQL的这种工作方式有它的一个好处,就是如果内存足够大,可以指定一个很大的FreeSpaceMap,对于OLTP型的应用,可能会大幅提高性能(猜测,没有验证过),另外用户可以自已选择在合适的时候进行vacuum或vacuumfull,如果你确信一个表只会往里插记录(如记录操作日志),对这个表就可以永远不进行vacuumfull,是不是很灵活?
不过,使用vacuumfull大量移动数据毕竟是件很耗时的工作,在此期间数据库性能会严重下降,大概这就是“灵活”的代价了。在这方面,Oracle的Block->Extent->Segment这种复杂的机制可能更有效一些吧。据说PostgreSQL将引入表空间的概念了,值得期待啊!
至于FreeSpaceMap设多大,上面的文章教了个办法,照着做就行了,只是需要弄明白,这毕竟是一个“Map”,如果打算删掉300M的记录,FreeSpaceMap并不需要申请300M喔:D
qjlemon 回复于:2004-07-08 14:09:24
TuningPostgreSQLforperformance
ShridharDaithankar,JoshBerkus
July3,2003Copyright2003ShridharDaithankarandJoshBerkus.
Authorizedforre-distributiononlyunderthePostgreSQLlicense(seewww.postgresql.org/license).
TableofContents
1Introduction
2Somebasicparameters
2.1Sharedbuffers
2.2Sortmemory
2.3EffectiveCacheSize
2.4FsyncandtheWALfiles
3Somelessknownparameters
3.1random_page_cost
3.2Vacuum_mem
3.3max_fsm_pages
3.4max fsm_relations
3.5wal_buffers
4Othertips
4.1Checkyourfilesystem
4.2TrytheAutoVacuumdaemon
责编:豆豆技术应用