Keuntungan meng-upgrade Windows Server 32 bit dan SQL Server menjadi 64 bit?

13

Misalkan saya memiliki kotak Windows Server 32 bit yang mengoperasikan beberapa aplikasi server bersama dengan SQL Server, dengan penggunaan RAM sekitar 2 GB pada waktu puncak.

Apa keuntungan meng-upgrade OS Windows Server dan SQL Server ke versi 64 bit yang sesuai, dengan aplikasi server yang tersisa sebagai 32 bit? Versi 64 bit memungkinkan akses ke lebih dari 4 GB RAM, tetapi karena 4 GB tidak digunakan sepenuhnya akankah hal itu membuat upgrade diperdebatkan?

Versi: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

Terima kasih

Some one
sumber

Jawaban:

19

Sangat terkait: Alasan bagus untuk mempertahankan OS desktop Microsoft Windows 32-bit

Anda sedang menggunakan OS 64 bit. Server 2008 R2 adalah yang pertama yang hanya mendukung CPU 64 bit.

Versi "yang lebih baru" dari Windows bahkan tidak dirancang untuk 32 bit. Anda mungkin tidak akan mengambil keuntungan dari apa pun, tetapi seharusnya tidak ada kerugian. Yang sedang berkata: Tingkatkan saja, karena Server 2008 R2 SP1 (yang saya harap Anda gunakan) akan menjadi EOL dari 2020-01-14 .

Adapun SQL Server 32 bit / 64 bit: Pemahaman Anda benar, jika Anda tidak akan membutuhkan> ~ 3,75 GB RAM (atau> 2 GB per proses), Anda dapat menggunakan versi 32 bit tanpa masalah. Tetapi untuk versi yang lebih baru tidak akan ada versi 32 bit untuk diinstal, karena Microsoft beralih ke 64 bit saja.

Lenniey
sumber
6
OP menyebutkan "2 GB pada waktu puncak" sehingga sangat mungkin bahwa SQL Server ingin menggunakan lebih dari 2 GB tetapi tidak bisa karena batas proses 32-bit.
MonkeyZeus
Bisa jadi, saya benar-benar tidak tahu apakah MS SQL Server 2008 menggunakan beberapa proses untuk tugas / instance / basis data yang berbeda-beda
Lenniey
11

Seperti yang sudah disebutkan, Anda sudah menggunakan OS 64-bit. Ada dua keuntungan beralih ke SQL Server versi 64-bit dan satu kelemahan.

Satu-satunya kelemahan adalah bahwa versi SQL Server 64-bit akan menggunakan pointer 64-bit. Ini berarti pointer akan menempati memori dua kali lebih banyak, mengkonsumsi bandwidth memori dua kali lebih banyak, dan sebagainya. Ini mungkin cukup diabaikan, tetapi ini merupakan kerugian. Ini sebagian dikompensasi oleh fakta bahwa beralih ke aplikasi 64-bit akan memungkinkan Anda untuk membuang overhead lapisan kompatibilitas aplikasi 32-bit harus digunakan untuk mengakses fungsi OS 64-bit.

Keuntungan utama adalah bahwa banyak peningkatan signifikan dibuat dalam set instruksi CPU dari waktu ke waktu. Beberapa dari mereka dibuat bersamaan dengan perubahan ke 64-bit dan beberapa dari mereka dibuat sebelumnya.

Tetapi bahkan untuk yang dibuat sebelumnya, build 32-bit harus menangani CPU yang tidak memiliki fitur-fitur itu dan untuk menghindari kerumitan deteksi dan beralih di antara beberapa instance, hanya saja tidak menggunakannya bahkan di tempat mereka hadir. Misalnya, CPU 64-bit harus memiliki SSE2, tetapi CPU 32-bit mungkin tidak. Jadi sebagian besar kode 32-bit tidak mengganggu memeriksa dan mengasumsikan tidak ada SSE2. Kode 64-bit dijamin instruksi SSE2 hadir dan akan menggunakannya jika itu pilihan terbaik.

Yang terbesar adalah peningkatan jumlah register tujuan umum yang disebutkan dari 8 menjadi 16. Jumlah 128-bit register XMM juga dua kali lipat, dari 8 menjadi 16.

Selain itu, proses 64-bit dapat menggunakan sejumlah besar memori virtual. Ini sangat penting dengan proses yang mengakses sejumlah besar data terstruktur pada disk. Dan, tentu saja, mereka dapat menggunakan operasi integer 64-bit yang cenderung meningkatkan kinerja enkripsi, kompresi, dan bahkan beberapa operasi sistem file pada sistem file besar.

David Schwartz
sumber
Apakah instruksi AVX dan co benar-benar berdampak nyata pada kinerja SQL Server? Saya akan berasumsi (tapi saya tidak pernah membandingkan atau mengujinya) bahwa sebagian besar akan menjadi subsistem IO di mana itu tergantung.
Voo
Beberapa kode 32-bit modern memang mengasumsikan SSE2, terutama ketika berjalan pada OS yang hanya mendukung CPU yang cukup baru untuk memiliki SSE2 (bersama dengan beberapa fitur lain yang diperlukan). Saya berasumsi Microsoft mengkompilasi barang-barang mereka dengan MSVC, yang memiliki /arch:SSE2opsi untuk kode 32-bit, setara dengan gcc / clang / ICC -msse2. Saya kira SQL tidak memiliki banyak loop vektor SIMD, tetapi menyalin struct kecil dengan 16-byte SIMD load / store bagus.
Peter Cordes
Salah satu perubahan yang lebih penting dalam x86-64 adalah pengalamatan relatif-PC untuk kode posisi-efisien yang efisien. Pustaka PIC 32-bit biasanya memiliki ~ 10% atau ~ 15% perlambatan (IIRC) vs 32-bit non-PIC. Memiliki register integer yang lebih banyak sangat membantu. Satu keuntungan besar dalam 64-bit adalah konvensi pemanggilan yang lebih baik, tetapi pada Windows (tidak seperti Linux) kode 32-bit tidak __fastcalluntuk melewatkan args dalam register untuk banyak fungsi. Konvensi panggilan 32-bit Linux murni pada stack, jadi itu sangat buruk untuk fungsi kecil yang tidak sejajar.
Peter Cordes
Jika vektorisasi benar-benar sangat penting untuk kinerja alih-alih mengasumsikan / memerlukan beberapa tingkat dukungan spesifik, kode mungkin memeriksa versi SSE / AVX terbaru yang didukung CPU dan memanggil implementasi yang sesuai untuk mendapatkan kecepatan keluar dari sistem apa pun yang sedang berjalan. di.
Dan is Fiddling oleh Firelight
@DanNeely Itu mengasumsikan bahwa siapa pun yang membuat build berupaya meningkatkan kinerja versi 32-bit. Pengalaman saya, setidaknya, adalah bahwa mereka sering berasumsi bahwa orang yang peduli dengan kinerja akan menggunakan build 64-bit.
David Schwartz
6

Secara fundamental: Ya. Dengan asumsi Anda tidak pernah membuat pembaruan yang kemudian hanya 4 bit - tidak yakin bahkan ada 32 bit SQL Server lebih baru dari 2008.

Masalah dengan pertanyaan Anda: "Versi 64 bit memungkinkan akses ke lebih dari 4 GB RAM," - jadikan itu 3gb;) bukan 4. 1gb selalu dicadangkan.

TomTom
sumber
Jika kita ini nitpicky, mengapa tidak benar dan menyebutkan bahwa program 32-bit dapat dengan mudah mengakses ratusan GB RAM? ;) Ini hanya ruang alamat virtual yang terbatas.
Voo
3
@ Voo: Dan SQL Server adalah salah satu dari beberapa program yang tahu caranya.
joshudson
6

Masalah potensial: Perpustakaan DLL dari fungsi yang ditentukan pengguna CLR (UDFs) akan membutuhkan versi 64-bit mereka.

Jika Anda menggunakan pustaka dari CLR Function-Defined Functions , itu akan menjadi sedikit tidak kompatibel. DLL 32-bit tidak dapat secara umum digunakan dalam perangkat lunak 64-bit dan sebaliknya. Jika Anda tidak bisa mendapatkan versi 64-bit dari beberapa pustaka UDF yang Anda gunakan, Anda akan kehilangan ekstensi spesifik itu.

Pada dasarnya ini adalah masalah yang sama dengan memutakhirkan perangkat lunak 32-bit dengan add-on-nya ke versi 64-bit. Anda juga perlu mengalihkan semua add-on ke versi 64-bit mereka. Secara umum itu mudah, tetapi masalahnya adalah penghentian yang tidak ada penggantian.

miroxlav
sumber
3

Performa!

Ada beberapa jawaban teknis di sini, tetapi tanpa terlalu teknis, dan tergantung pada aplikasi Anda, Anda akan melihat peningkatan kinerja.

Potongan utama adalah:

Pengalamatan memori besar: Arsitektur 64-bit menawarkan ruang memori langsung-dialamatkan yang lebih besar. SQL Server 2005 (64-bit) tidak terikat oleh batas memori 4 GB dari sistem 32-bit. Oleh karena itu, lebih banyak memori tersedia untuk melakukan kueri kompleks dan mendukung operasi basis data penting. Kapasitas pemrosesan yang lebih besar ini mengurangi penalti latensi I / O dengan memanfaatkan lebih banyak memori daripada sistem 32-bit tradisional.

Paralelisme yang ditingkatkan: Arsitektur 64-bit menyediakan paralelisme dan threading yang canggih. Peningkatan dalam pemrosesan paralel dan arsitektur bus memungkinkan platform 64-bit untuk mendukung jumlah prosesor yang lebih besar (hingga 64) sambil memberikan skalabilitas yang mendekati linier dengan setiap prosesor tambahan. Dengan jumlah prosesor yang lebih besar, SQL Server dapat mendukung lebih banyak proses, aplikasi, dan pengguna dalam satu sistem.

https://teratrax.com/sql-server-64-bit/

Hasil paling dramatis yang saya lihat dari SQL Server 32-bit ke 64-bit (ini adalah SQL Server 2005) adalah peningkatan kecepatan 40% pada aplikasi utama klien. Yang kami lakukan hanyalah menginstal SQL Server 64-bit, yang lainnya sama! Itu adalah peningkatan kinerja utama di dunia nyata.

jenius komputer Anda
sumber
-2

Anda dapat memiliki kinerja multitasking yang lebih baik terutama dengan program yang memiliki multithreading berat. Selain itu, Anda dapat menginstal lebih banyak ram dengan os 64-bit. Tetapi lakukan ini hanya jika prosesor mendukung instruksi 64-bit.

Arvind Bakshi
sumber