Wednesday, January 19, 2011

postgres on 64 bit linux or 64 bit windows server 2008?

Postgres does not have a 64 bit binary for windows server

quote "As there is generally no reason to run with shared_buffers > 256 - 512MB on Windows, there isn't a great deal of incentive to put in the effort required for the 64 bit port"

  1. why is there generally no reason to run with lots of memory on windows?
  2. would a 64 bit linux installation be more efficient? if so, which?

this server has 8Gb memory and this number will likely increase to 12Gb. we intended to allocate almost all of the memory to postgres. for what i'm doing i can happily do without a UI.

  • http://swik.net/PostgreSQL/Planet+Postgresql/Magnus+Hagander:+PostgreSQL+vs+64-bit+windows

    Postgres leaves disk caching up to the operating system, so there would be little benefit to a 64 bit build on Windows. The developers have decided to spend their time on something more productive and less painful.

    But, there is some benefit, since 64 bit code is a bit faster and a bit smaller, and since the Unix version had to be made 64 bit clean for some architectures (Itanium and Alpha, particularly), that job was done a long time ago.

    Personally, I'd default to running a dedicated database server on Linux. However, you will have to weigh up the cost of the Windows license against the administration skills; in my environment, everyone knows how to administer Linux boxes, whereas you may have to hire someone to do that, or learn enough (not a good idea if security is critical). Which distribution to use is mostly about what your administrator(s) are current with; in my case, that would be Ubuntu Server Edition.

    pstanton : thanks, have cancelled win server and am self installing fedora.
  • Work is being done for the next version, and most likely PostgreSQL 8.5 will run as a native 64-bit binary on Win64. It remains to be seen how many of the third party pieces will work (for example, TCL and MIT Kerberos don't currently provide 64-bit versions on Windows), but the core database should be available.

    Note that this would really only be necessary if you want either total work_mem or shared_buffers to be very large. In most cases, that won't be a problem, but if you are running large data-warehouse style queries for example, it might be interesting even with as little memory as your server. But it's mainly being developed to deal with large memory systems, and compatibility with third party libraries.

    That said, PostgreSQL will run faster on a Linux/Unix based platform, so if you have that as an option, you should go with it. PostgreSQL has been designed for a Unix architecture, and keeps this architecture on Windows (for example, processes rather than threads), which makes it slower there.

    As for which distribution you choose, it doesn't matter from a PostgreSQL perspective. Pick something that your administrators, or someone you work with, feel comfortable with.

    Oh, and the proper URL for the blog post referred in Andrews answer is http://blog.hagander.net/archives/73-PostgreSQL-vs-64-bit-windows.html, and it contains an explanation on the memory issue with 32-bit PostgreSQL on 64-bit Windows.

0 comments:

Post a Comment