Advantages of upgrading 32 bit Windows Server and SQL Server to 64 bit?
Suppose that I have a 32 bit Windows Server box that operates several server applications along with an SQL Server, with a RAM usage of about 2 GB at peak times.
What would be the advantages of upgrading the Windows Server OS and SQL Server to the corresponding 64 bit versions, with the server applications remaining as 32 bit? The 64 bit versions allow access to more than 4 GB of RAM, but since 4 GB is not being fully utilized would that render the upgrade moot?
Versions: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition
Thanks
sql-server 64-bit 32bit-64bit 32-bit
add a comment |
Suppose that I have a 32 bit Windows Server box that operates several server applications along with an SQL Server, with a RAM usage of about 2 GB at peak times.
What would be the advantages of upgrading the Windows Server OS and SQL Server to the corresponding 64 bit versions, with the server applications remaining as 32 bit? The 64 bit versions allow access to more than 4 GB of RAM, but since 4 GB is not being fully utilized would that render the upgrade moot?
Versions: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition
Thanks
sql-server 64-bit 32bit-64bit 32-bit
add a comment |
Suppose that I have a 32 bit Windows Server box that operates several server applications along with an SQL Server, with a RAM usage of about 2 GB at peak times.
What would be the advantages of upgrading the Windows Server OS and SQL Server to the corresponding 64 bit versions, with the server applications remaining as 32 bit? The 64 bit versions allow access to more than 4 GB of RAM, but since 4 GB is not being fully utilized would that render the upgrade moot?
Versions: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition
Thanks
sql-server 64-bit 32bit-64bit 32-bit
Suppose that I have a 32 bit Windows Server box that operates several server applications along with an SQL Server, with a RAM usage of about 2 GB at peak times.
What would be the advantages of upgrading the Windows Server OS and SQL Server to the corresponding 64 bit versions, with the server applications remaining as 32 bit? The 64 bit versions allow access to more than 4 GB of RAM, but since 4 GB is not being fully utilized would that render the upgrade moot?
Versions: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition
Thanks
sql-server 64-bit 32bit-64bit 32-bit
sql-server 64-bit 32bit-64bit 32-bit
edited Jan 16 at 20:16
Outman
1035
1035
asked Jan 16 at 7:57
SomeoneSomeone
643
643
add a comment |
add a comment |
6 Answers
6
active
oldest
votes
Strongly related: Good reasons to keep 32-bit Microsoft Windows desktop OSes
You are using a 64 bit OS. Server 2008 R2 was the first to only support 64 bit CPUs.
"Newer" versions of Windows aren't even designed for 32 bit. You maybe won't take advantage of anything, but there should neither be any disadvantages. That being said: Upgrade anyway, as Server 2008 R2 SP1 (which I hope you are using) will be EOL from 2020-01-14.
As for SQL Server 32 bit/64 bit: Your understanding is correct, if you won't ever need > ~3,75 GB of RAM (or >2 GB per process), you can use the 32 bit version without problems. But for newer versions there won't be any 32 bit version to install, as Microsoft switched to 64 bit only.
6
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
add a comment |
As already noted, you are using a 64-bit OS already. There are two advantages of switching to a 64-bit version of SQL Server and one disadvantage.
The sole disadvantage is that the 64-bit version of SQL Server will use 64-bit pointers. This means pointers will occupy twice as much memory, consume twice as much memory bandwidth, and so on. This is likely fairly negligible, but it is a disadvantage. It's partially compensated by the fact that switching to a 64-bit application will allow you to ditch the overhead of the compatibility layer 32-bit apps have to use to access a 64-bit OS's functions.
The major advantage is that numerous significant improvements were made in the CPU instruction set over time. Some of them were made along with the change to 64-bits and some of them were made previously.
But even for the ones made previously, the 32-bit build has to handle CPUs that don't have those features and to avoid the hassle of detection and switching between multiple instances, just doesn't use them even where they're present. For example, 64-bit CPUs must have SSE2, but 32-bit CPUs might not. So most 32-bit code just doesn't bother checking and assumes no SSE2. 64-bit code is assured SSE2 instructions are present and so will use it if it's the best option.
The biggest one is the increase in the number of named, general-purpose registers from 8 to 16. The number of 128-bit XMM registers was also doubled, from 8 to 16.
In addition, a 64-bit process can make use of large amounts of virtual memory. This is especially important with processes that access large amounts of structured data on disk. And, of course, they can use 64-bit integer operations which tend to improve the performance of encryption, compression, and even some filesystem operations on large filesystems.
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC-msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.
– Peter Cordes
Jan 17 at 1:28
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.
– Peter Cordes
Jan 17 at 1:33
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
add a comment |
Potential issue: DLL libraries of CLR user-defined functions (UDFs) will require their 64-bit versions.
If you are using a library of CLR User-Defined Functions, it will become bit-incompatible. 32-bit DLLs cannot be generally used in 64-bit software and vice versa. If you cannot get 64-bit version of some UDF library you use, you will lose that specific extension.
Basically it is the same issue as upgrading any 32-bit software with its add-ons to its 64-bit version. You also need to switch all add-ons to their 64-bit versions. Generally it is easy, but the problem are discontinued ones where replacements are not available.
add a comment |
Fundamentally: Yes. Assuming you never make updates that are then 4 bit only - not sure there even IS a 32 bit SQL Server more recent than 2008.
Issues with your question: "The 64 bit versions allow access to more than 4 GB of RAM," - make that 3gb ;) not 4. 1gb is always reserved.
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
3
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
add a comment |
Performance!
There are several technical answers here already, but without getting too technical, and depending on your application, you should see a performance upgrade.
The main pieces are:
Large memory addressing: The 64-bit architecture offers a larger
directly-addressable memory space. SQL Server 2005 (64-bit) is not
bound by the 4 GB memory limit of 32-bit systems. Therefore, more
memory is available for performing complex queries and supporting
essential database operations. This greater processing capacity
reduces the penalties of I/O latency by utilizing more memory than
traditional 32-bit systems.
Enhanced parallelism: The 64-bit architecture provides advanced
parallelism and threading. Improvements in parallel processing and bus
architectures enable 64-bit platforms to support larger numbers of
processors (up to 64) while providing close to linear scalability with
each additional processor. With a larger number of processors, SQL
Server can support more processes, applications, and users in a single
system.
https://teratrax.com/sql-server-64-bit/
The most dramatic results I saw on going from 32-bit to 64-bit SQL Server (this was SQL Server 2005) was about a 40% speed boost on a client's major application. All we did was install the 64-bit SQL Server, everything else was the same! That was a major performance boost in the real world.
add a comment |
You can have better multitasking performance especially with programs that have heavy multithreading built in. Moreover u can install more ram with 64-bit os. But do this only if the processor supports 64-bit instructions.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "2"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f949303%2fadvantages-of-upgrading-32-bit-windows-server-and-sql-server-to-64-bit%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
Strongly related: Good reasons to keep 32-bit Microsoft Windows desktop OSes
You are using a 64 bit OS. Server 2008 R2 was the first to only support 64 bit CPUs.
"Newer" versions of Windows aren't even designed for 32 bit. You maybe won't take advantage of anything, but there should neither be any disadvantages. That being said: Upgrade anyway, as Server 2008 R2 SP1 (which I hope you are using) will be EOL from 2020-01-14.
As for SQL Server 32 bit/64 bit: Your understanding is correct, if you won't ever need > ~3,75 GB of RAM (or >2 GB per process), you can use the 32 bit version without problems. But for newer versions there won't be any 32 bit version to install, as Microsoft switched to 64 bit only.
6
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
add a comment |
Strongly related: Good reasons to keep 32-bit Microsoft Windows desktop OSes
You are using a 64 bit OS. Server 2008 R2 was the first to only support 64 bit CPUs.
"Newer" versions of Windows aren't even designed for 32 bit. You maybe won't take advantage of anything, but there should neither be any disadvantages. That being said: Upgrade anyway, as Server 2008 R2 SP1 (which I hope you are using) will be EOL from 2020-01-14.
As for SQL Server 32 bit/64 bit: Your understanding is correct, if you won't ever need > ~3,75 GB of RAM (or >2 GB per process), you can use the 32 bit version without problems. But for newer versions there won't be any 32 bit version to install, as Microsoft switched to 64 bit only.
6
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
add a comment |
Strongly related: Good reasons to keep 32-bit Microsoft Windows desktop OSes
You are using a 64 bit OS. Server 2008 R2 was the first to only support 64 bit CPUs.
"Newer" versions of Windows aren't even designed for 32 bit. You maybe won't take advantage of anything, but there should neither be any disadvantages. That being said: Upgrade anyway, as Server 2008 R2 SP1 (which I hope you are using) will be EOL from 2020-01-14.
As for SQL Server 32 bit/64 bit: Your understanding is correct, if you won't ever need > ~3,75 GB of RAM (or >2 GB per process), you can use the 32 bit version without problems. But for newer versions there won't be any 32 bit version to install, as Microsoft switched to 64 bit only.
Strongly related: Good reasons to keep 32-bit Microsoft Windows desktop OSes
You are using a 64 bit OS. Server 2008 R2 was the first to only support 64 bit CPUs.
"Newer" versions of Windows aren't even designed for 32 bit. You maybe won't take advantage of anything, but there should neither be any disadvantages. That being said: Upgrade anyway, as Server 2008 R2 SP1 (which I hope you are using) will be EOL from 2020-01-14.
As for SQL Server 32 bit/64 bit: Your understanding is correct, if you won't ever need > ~3,75 GB of RAM (or >2 GB per process), you can use the 32 bit version without problems. But for newer versions there won't be any 32 bit version to install, as Microsoft switched to 64 bit only.
edited Jan 16 at 22:45
answered Jan 16 at 8:27
LennieyLenniey
2,88321024
2,88321024
6
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
add a comment |
6
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
6
6
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
OP mentions "2 GB at peak times" so it is entirely possible that SQL Server wants to use more than 2 GB but it cannot due to the 32-bit process limit.
– MonkeyZeus
Jan 16 at 12:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
Could be the case, I really do not know if MS SQL Server 2008 uses multiple processes for different tasks / instances / databases / etc.
– Lenniey
Jan 16 at 22:43
add a comment |
As already noted, you are using a 64-bit OS already. There are two advantages of switching to a 64-bit version of SQL Server and one disadvantage.
The sole disadvantage is that the 64-bit version of SQL Server will use 64-bit pointers. This means pointers will occupy twice as much memory, consume twice as much memory bandwidth, and so on. This is likely fairly negligible, but it is a disadvantage. It's partially compensated by the fact that switching to a 64-bit application will allow you to ditch the overhead of the compatibility layer 32-bit apps have to use to access a 64-bit OS's functions.
The major advantage is that numerous significant improvements were made in the CPU instruction set over time. Some of them were made along with the change to 64-bits and some of them were made previously.
But even for the ones made previously, the 32-bit build has to handle CPUs that don't have those features and to avoid the hassle of detection and switching between multiple instances, just doesn't use them even where they're present. For example, 64-bit CPUs must have SSE2, but 32-bit CPUs might not. So most 32-bit code just doesn't bother checking and assumes no SSE2. 64-bit code is assured SSE2 instructions are present and so will use it if it's the best option.
The biggest one is the increase in the number of named, general-purpose registers from 8 to 16. The number of 128-bit XMM registers was also doubled, from 8 to 16.
In addition, a 64-bit process can make use of large amounts of virtual memory. This is especially important with processes that access large amounts of structured data on disk. And, of course, they can use 64-bit integer operations which tend to improve the performance of encryption, compression, and even some filesystem operations on large filesystems.
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC-msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.
– Peter Cordes
Jan 17 at 1:28
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.
– Peter Cordes
Jan 17 at 1:33
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
add a comment |
As already noted, you are using a 64-bit OS already. There are two advantages of switching to a 64-bit version of SQL Server and one disadvantage.
The sole disadvantage is that the 64-bit version of SQL Server will use 64-bit pointers. This means pointers will occupy twice as much memory, consume twice as much memory bandwidth, and so on. This is likely fairly negligible, but it is a disadvantage. It's partially compensated by the fact that switching to a 64-bit application will allow you to ditch the overhead of the compatibility layer 32-bit apps have to use to access a 64-bit OS's functions.
The major advantage is that numerous significant improvements were made in the CPU instruction set over time. Some of them were made along with the change to 64-bits and some of them were made previously.
But even for the ones made previously, the 32-bit build has to handle CPUs that don't have those features and to avoid the hassle of detection and switching between multiple instances, just doesn't use them even where they're present. For example, 64-bit CPUs must have SSE2, but 32-bit CPUs might not. So most 32-bit code just doesn't bother checking and assumes no SSE2. 64-bit code is assured SSE2 instructions are present and so will use it if it's the best option.
The biggest one is the increase in the number of named, general-purpose registers from 8 to 16. The number of 128-bit XMM registers was also doubled, from 8 to 16.
In addition, a 64-bit process can make use of large amounts of virtual memory. This is especially important with processes that access large amounts of structured data on disk. And, of course, they can use 64-bit integer operations which tend to improve the performance of encryption, compression, and even some filesystem operations on large filesystems.
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC-msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.
– Peter Cordes
Jan 17 at 1:28
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.
– Peter Cordes
Jan 17 at 1:33
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
add a comment |
As already noted, you are using a 64-bit OS already. There are two advantages of switching to a 64-bit version of SQL Server and one disadvantage.
The sole disadvantage is that the 64-bit version of SQL Server will use 64-bit pointers. This means pointers will occupy twice as much memory, consume twice as much memory bandwidth, and so on. This is likely fairly negligible, but it is a disadvantage. It's partially compensated by the fact that switching to a 64-bit application will allow you to ditch the overhead of the compatibility layer 32-bit apps have to use to access a 64-bit OS's functions.
The major advantage is that numerous significant improvements were made in the CPU instruction set over time. Some of them were made along with the change to 64-bits and some of them were made previously.
But even for the ones made previously, the 32-bit build has to handle CPUs that don't have those features and to avoid the hassle of detection and switching between multiple instances, just doesn't use them even where they're present. For example, 64-bit CPUs must have SSE2, but 32-bit CPUs might not. So most 32-bit code just doesn't bother checking and assumes no SSE2. 64-bit code is assured SSE2 instructions are present and so will use it if it's the best option.
The biggest one is the increase in the number of named, general-purpose registers from 8 to 16. The number of 128-bit XMM registers was also doubled, from 8 to 16.
In addition, a 64-bit process can make use of large amounts of virtual memory. This is especially important with processes that access large amounts of structured data on disk. And, of course, they can use 64-bit integer operations which tend to improve the performance of encryption, compression, and even some filesystem operations on large filesystems.
As already noted, you are using a 64-bit OS already. There are two advantages of switching to a 64-bit version of SQL Server and one disadvantage.
The sole disadvantage is that the 64-bit version of SQL Server will use 64-bit pointers. This means pointers will occupy twice as much memory, consume twice as much memory bandwidth, and so on. This is likely fairly negligible, but it is a disadvantage. It's partially compensated by the fact that switching to a 64-bit application will allow you to ditch the overhead of the compatibility layer 32-bit apps have to use to access a 64-bit OS's functions.
The major advantage is that numerous significant improvements were made in the CPU instruction set over time. Some of them were made along with the change to 64-bits and some of them were made previously.
But even for the ones made previously, the 32-bit build has to handle CPUs that don't have those features and to avoid the hassle of detection and switching between multiple instances, just doesn't use them even where they're present. For example, 64-bit CPUs must have SSE2, but 32-bit CPUs might not. So most 32-bit code just doesn't bother checking and assumes no SSE2. 64-bit code is assured SSE2 instructions are present and so will use it if it's the best option.
The biggest one is the increase in the number of named, general-purpose registers from 8 to 16. The number of 128-bit XMM registers was also doubled, from 8 to 16.
In addition, a 64-bit process can make use of large amounts of virtual memory. This is especially important with processes that access large amounts of structured data on disk. And, of course, they can use 64-bit integer operations which tend to improve the performance of encryption, compression, and even some filesystem operations on large filesystems.
answered Jan 16 at 10:17
David SchwartzDavid Schwartz
28.3k14271
28.3k14271
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC-msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.
– Peter Cordes
Jan 17 at 1:28
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.
– Peter Cordes
Jan 17 at 1:33
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
add a comment |
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC-msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.
– Peter Cordes
Jan 17 at 1:28
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.
– Peter Cordes
Jan 17 at 1:33
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Do AVX and co instructions really have a noticeable impact on SQL Server performance? I would assume (but I have never benchmarked or tested it) that it would mostly be the IO subsystem on which it depends.
– Voo
Jan 16 at 21:10
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a
/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC -msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.– Peter Cordes
Jan 17 at 1:28
Some modern 32-bit code does assume SSE2, especially when running on an OS that only supports CPUs new enough to have SSE2 (along with some other required features). I assume Microsoft compiles their stuff with MSVC, which have a
/arch:SSE2
option for 32-bit code, equivalent to gcc/clang/ICC -msse2
. I'd guess that SQL doesn't have a lot of SIMD vectorized loops, but copying small structs with 16-byte SIMD loads/stores is nice.– Peter Cordes
Jan 17 at 1:28
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does
__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.– Peter Cordes
Jan 17 at 1:33
One of the more important changes in x86-64 is PC-relative addressing for efficient position-independent code. 32-bit PIC libraries typically have a ~10% or ~15% slowdown (IIRC) vs. 32-bit non-PIC. Having more integer registers helps a lot, too. One big advantage in 64-bit is a nicer calling convention, but on Windows (unlike Linux) 32-bit code does
__fastcall
to pass args in registers for many functions. The Linux 32-bit calling convention is purely on the stack, so it's pretty crap for small functions that don't inline.– Peter Cordes
Jan 17 at 1:33
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
If vectorization really does matter a lot for performance instead of assuming/requiring some specific support level, the code is probably checking for the newest SSE/AVX version the CPU supports and calling the appropriate implementation to get as much speed out of whatever system it's running on.
– Dan Neely
Jan 17 at 15:18
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
@DanNeely That assumes that whoever made the build put effort into improving the performance of the 32-bit version. My experience, at least, has been that they often assume that people who care about performance will be using the 64-bit build.
– David Schwartz
Jan 18 at 0:12
add a comment |
Potential issue: DLL libraries of CLR user-defined functions (UDFs) will require their 64-bit versions.
If you are using a library of CLR User-Defined Functions, it will become bit-incompatible. 32-bit DLLs cannot be generally used in 64-bit software and vice versa. If you cannot get 64-bit version of some UDF library you use, you will lose that specific extension.
Basically it is the same issue as upgrading any 32-bit software with its add-ons to its 64-bit version. You also need to switch all add-ons to their 64-bit versions. Generally it is easy, but the problem are discontinued ones where replacements are not available.
add a comment |
Potential issue: DLL libraries of CLR user-defined functions (UDFs) will require their 64-bit versions.
If you are using a library of CLR User-Defined Functions, it will become bit-incompatible. 32-bit DLLs cannot be generally used in 64-bit software and vice versa. If you cannot get 64-bit version of some UDF library you use, you will lose that specific extension.
Basically it is the same issue as upgrading any 32-bit software with its add-ons to its 64-bit version. You also need to switch all add-ons to their 64-bit versions. Generally it is easy, but the problem are discontinued ones where replacements are not available.
add a comment |
Potential issue: DLL libraries of CLR user-defined functions (UDFs) will require their 64-bit versions.
If you are using a library of CLR User-Defined Functions, it will become bit-incompatible. 32-bit DLLs cannot be generally used in 64-bit software and vice versa. If you cannot get 64-bit version of some UDF library you use, you will lose that specific extension.
Basically it is the same issue as upgrading any 32-bit software with its add-ons to its 64-bit version. You also need to switch all add-ons to their 64-bit versions. Generally it is easy, but the problem are discontinued ones where replacements are not available.
Potential issue: DLL libraries of CLR user-defined functions (UDFs) will require their 64-bit versions.
If you are using a library of CLR User-Defined Functions, it will become bit-incompatible. 32-bit DLLs cannot be generally used in 64-bit software and vice versa. If you cannot get 64-bit version of some UDF library you use, you will lose that specific extension.
Basically it is the same issue as upgrading any 32-bit software with its add-ons to its 64-bit version. You also need to switch all add-ons to their 64-bit versions. Generally it is easy, but the problem are discontinued ones where replacements are not available.
edited Jan 16 at 17:32
answered Jan 16 at 15:35
miroxlavmiroxlav
19618
19618
add a comment |
add a comment |
Fundamentally: Yes. Assuming you never make updates that are then 4 bit only - not sure there even IS a 32 bit SQL Server more recent than 2008.
Issues with your question: "The 64 bit versions allow access to more than 4 GB of RAM," - make that 3gb ;) not 4. 1gb is always reserved.
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
3
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
add a comment |
Fundamentally: Yes. Assuming you never make updates that are then 4 bit only - not sure there even IS a 32 bit SQL Server more recent than 2008.
Issues with your question: "The 64 bit versions allow access to more than 4 GB of RAM," - make that 3gb ;) not 4. 1gb is always reserved.
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
3
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
add a comment |
Fundamentally: Yes. Assuming you never make updates that are then 4 bit only - not sure there even IS a 32 bit SQL Server more recent than 2008.
Issues with your question: "The 64 bit versions allow access to more than 4 GB of RAM," - make that 3gb ;) not 4. 1gb is always reserved.
Fundamentally: Yes. Assuming you never make updates that are then 4 bit only - not sure there even IS a 32 bit SQL Server more recent than 2008.
Issues with your question: "The 64 bit versions allow access to more than 4 GB of RAM," - make that 3gb ;) not 4. 1gb is always reserved.
answered Jan 16 at 8:27
TomTomTomTom
45.8k541120
45.8k541120
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
3
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
add a comment |
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
3
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
If we're this nitpicky, why not be correct and mention that a 32-bit program can easily access hundreds of GB of RAM? ;) It's only the virtual address space that's limited.
– Voo
Jan 16 at 11:30
3
3
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
@Voo: And SQL Server is one of the few programs that knows how.
– joshudson
Jan 16 at 18:28
add a comment |
Performance!
There are several technical answers here already, but without getting too technical, and depending on your application, you should see a performance upgrade.
The main pieces are:
Large memory addressing: The 64-bit architecture offers a larger
directly-addressable memory space. SQL Server 2005 (64-bit) is not
bound by the 4 GB memory limit of 32-bit systems. Therefore, more
memory is available for performing complex queries and supporting
essential database operations. This greater processing capacity
reduces the penalties of I/O latency by utilizing more memory than
traditional 32-bit systems.
Enhanced parallelism: The 64-bit architecture provides advanced
parallelism and threading. Improvements in parallel processing and bus
architectures enable 64-bit platforms to support larger numbers of
processors (up to 64) while providing close to linear scalability with
each additional processor. With a larger number of processors, SQL
Server can support more processes, applications, and users in a single
system.
https://teratrax.com/sql-server-64-bit/
The most dramatic results I saw on going from 32-bit to 64-bit SQL Server (this was SQL Server 2005) was about a 40% speed boost on a client's major application. All we did was install the 64-bit SQL Server, everything else was the same! That was a major performance boost in the real world.
add a comment |
Performance!
There are several technical answers here already, but without getting too technical, and depending on your application, you should see a performance upgrade.
The main pieces are:
Large memory addressing: The 64-bit architecture offers a larger
directly-addressable memory space. SQL Server 2005 (64-bit) is not
bound by the 4 GB memory limit of 32-bit systems. Therefore, more
memory is available for performing complex queries and supporting
essential database operations. This greater processing capacity
reduces the penalties of I/O latency by utilizing more memory than
traditional 32-bit systems.
Enhanced parallelism: The 64-bit architecture provides advanced
parallelism and threading. Improvements in parallel processing and bus
architectures enable 64-bit platforms to support larger numbers of
processors (up to 64) while providing close to linear scalability with
each additional processor. With a larger number of processors, SQL
Server can support more processes, applications, and users in a single
system.
https://teratrax.com/sql-server-64-bit/
The most dramatic results I saw on going from 32-bit to 64-bit SQL Server (this was SQL Server 2005) was about a 40% speed boost on a client's major application. All we did was install the 64-bit SQL Server, everything else was the same! That was a major performance boost in the real world.
add a comment |
Performance!
There are several technical answers here already, but without getting too technical, and depending on your application, you should see a performance upgrade.
The main pieces are:
Large memory addressing: The 64-bit architecture offers a larger
directly-addressable memory space. SQL Server 2005 (64-bit) is not
bound by the 4 GB memory limit of 32-bit systems. Therefore, more
memory is available for performing complex queries and supporting
essential database operations. This greater processing capacity
reduces the penalties of I/O latency by utilizing more memory than
traditional 32-bit systems.
Enhanced parallelism: The 64-bit architecture provides advanced
parallelism and threading. Improvements in parallel processing and bus
architectures enable 64-bit platforms to support larger numbers of
processors (up to 64) while providing close to linear scalability with
each additional processor. With a larger number of processors, SQL
Server can support more processes, applications, and users in a single
system.
https://teratrax.com/sql-server-64-bit/
The most dramatic results I saw on going from 32-bit to 64-bit SQL Server (this was SQL Server 2005) was about a 40% speed boost on a client's major application. All we did was install the 64-bit SQL Server, everything else was the same! That was a major performance boost in the real world.
Performance!
There are several technical answers here already, but without getting too technical, and depending on your application, you should see a performance upgrade.
The main pieces are:
Large memory addressing: The 64-bit architecture offers a larger
directly-addressable memory space. SQL Server 2005 (64-bit) is not
bound by the 4 GB memory limit of 32-bit systems. Therefore, more
memory is available for performing complex queries and supporting
essential database operations. This greater processing capacity
reduces the penalties of I/O latency by utilizing more memory than
traditional 32-bit systems.
Enhanced parallelism: The 64-bit architecture provides advanced
parallelism and threading. Improvements in parallel processing and bus
architectures enable 64-bit platforms to support larger numbers of
processors (up to 64) while providing close to linear scalability with
each additional processor. With a larger number of processors, SQL
Server can support more processes, applications, and users in a single
system.
https://teratrax.com/sql-server-64-bit/
The most dramatic results I saw on going from 32-bit to 64-bit SQL Server (this was SQL Server 2005) was about a 40% speed boost on a client's major application. All we did was install the 64-bit SQL Server, everything else was the same! That was a major performance boost in the real world.
answered Jan 16 at 19:30
yourcomputergeniusyourcomputergenius
585
585
add a comment |
add a comment |
You can have better multitasking performance especially with programs that have heavy multithreading built in. Moreover u can install more ram with 64-bit os. But do this only if the processor supports 64-bit instructions.
add a comment |
You can have better multitasking performance especially with programs that have heavy multithreading built in. Moreover u can install more ram with 64-bit os. But do this only if the processor supports 64-bit instructions.
add a comment |
You can have better multitasking performance especially with programs that have heavy multithreading built in. Moreover u can install more ram with 64-bit os. But do this only if the processor supports 64-bit instructions.
You can have better multitasking performance especially with programs that have heavy multithreading built in. Moreover u can install more ram with 64-bit os. But do this only if the processor supports 64-bit instructions.
answered Jan 16 at 11:44
Arvind BakshiArvind Bakshi
1
1
add a comment |
add a comment |
Thanks for contributing an answer to Server Fault!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fserverfault.com%2fquestions%2f949303%2fadvantages-of-upgrading-32-bit-windows-server-and-sql-server-to-64-bit%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown