README.fsync
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. Fsync() patch (backend -F option)
  2. =================================
  3. Normally, the Postgres'95 backend makes sure that updates are actually
  4. committed to disk by calling the standard function fsync() in
  5. several places. Fsync() should guarantee that every modification to
  6. a certain file is actually written to disk and will not hang around
  7. in write caches anymore. This increases the chance that a database
  8. will still be usable after a system crash by a large amount.
  9. However, this operation severely slows down Postgres'95, because at all
  10. those points it has to wait for the OS to flush the buffers. Especially
  11. in one-shot operations, like creating a new database or loading lots
  12. of data, you'll have a clear restart point if something goes wrong. That's
  13. where the -F option kicks in: it simply disables the calls to fsync(). 
  14. Without fsync(), the OS is allowed to do its best in buffering, sorting
  15. and delaying writes, so this can be a _very_ big perfomance increase. However,
  16. if the system crashes, large parts of the latest transactions will still hang
  17. around in memory without having been committed to disk - lossage of data
  18. is therefore almost certain to occur.
  19. So it's a tradeoff between data integrity and speed. When initializing a
  20. database, I'd use it - if the machine crashes, you simply remove the files
  21. created and redo the operation. The same goes for bulk-loading data: on
  22. a crash, you remove the database and restore the backup you made before
  23. starting the bulk-load (you always make backups before bulk-loading,
  24. don't you?).
  25. Whether you want to use it in production, is up to you. If you trust your
  26. operating system, your utility company, and your hardware, you might enable
  27. it; however, keep in mind that you're running in an unsecure mode and that
  28. performance gains will very much depend on access patterns (because it won't
  29. help on reading data). I'd recommend against it.