32 bit Windows Server ve SQL Server'ı 64 bit'e yükseltmenin avantajları?


13

En yoğun zamanlarda yaklaşık 2 GB RAM kullanımı ile birlikte bir SQL Server ile birlikte çeşitli sunucu uygulamalarını çalıştıran 32 bit Windows Server kutusu olduğunu varsayalım.

Sunucu uygulamaları 32 bit olarak kaldığında, Windows Server işletim sistemini ve SQL Server'ı karşılık gelen 64 bit sürümlere yükseltmenin avantajları nelerdir? 64 bit sürümler 4 GB'den fazla RAM'e erişime izin verir, ancak 4 GB tam olarak kullanılmadığından bu yükseltme yükseltme işlemine neden olur mu?

Sürümler: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

Teşekkürler

Yanıtlar:


19

Güçlü bir şekilde ilişkili: 32 bit Microsoft Windows masaüstü işletim sistemlerini korumak için iyi nedenler

Sen edilir 64 bit işletim sistemi kullanan. Server 2008 R2, yalnızca 64 bit CPU'ları ilk destekleyen şirketti.

Windows'un "daha yeni" sürümleri 32 bit için tasarlanmamıştır. Belki hiçbir şeyden yararlanamayacaksınız, ancak hiçbir dezavantajı olmamalıdır. Bununla birlikte, Server 2008 R2 SP1'in (ki umarım kullandığınızı) 2020-01-14 arasında EOL olacak şekilde yükseltin .

SQL Server 32 bit / 64 bit'e gelince: Anlayışınız doğrudur, hiç> ~ 3,75 GB RAM'e (veya işlem başına> 2 GB) ihtiyacınız yoksa, 32 bit sürümünü sorunsuz kullanabilirsiniz. Ancak yeni sürümler için, Microsoft'un yalnızca 64 bit'e geçtiği için yüklenecek 32 bit sürüm olmayacaktır.


6
OP, "yoğun zamanlarda 2 GB" den bahseder, bu nedenle SQL Server'ın 2 GB'den fazla kullanmak istemesi tamamen mümkündür, ancak 32 bit işlem sınırı nedeniyle bu mümkün değildir.
MonkeyZeus

Durum böyle olabilir, MS SQL Server 2008'in farklı görevler / örnekler / veritabanları / vb. İçin birden fazla işlem kullanıp kullanmadığını bilmiyorum
Lenniey

11

Daha önce de belirtildiği gibi, zaten 64 bit işletim sistemi kullanıyorsunuz. SQL Server'ın 64 bit sürümüne ve bir dezavantaja geçmenin iki avantajı vardır.

Tek dezavantajı, SQL Server'ın 64 bit sürümünün 64 bit işaretçiler kullanmasıdır. Bu, işaretçilerin iki kat daha fazla bellek kaplayacağı, iki kat daha fazla bellek bant genişliği kullanacağı ve benzeri anlamına gelir. Bu muhtemelen oldukça ihmal edilebilir, ancak bir dezavantajdır. Bir 64 bit uygulamaya geçmenin, 32 bit uygulamaların 64 bit işletim sisteminin işlevlerine erişmek için kullanması gereken uyumluluk katmanının ek yükünü atmanıza izin vereceği gerçeği kısmen telafi edilmiştir.

En büyük avantajı, zaman içinde ayarlanan CPU talimatında çok sayıda önemli iyileştirme yapılmasıdır. Bazıları 64 bitlik değişiklikle birlikte yapılmış ve bazıları daha önce yapılmıştı.

Ancak daha önce yapılanlar için bile, 32 bitlik yapı bu özelliklere sahip olmayan CPU'ları işlemeli ve birden fazla örnek arasında algılama ve geçiş zorluğundan kaçınmalı, mevcut oldukları yerde bile kullanmazlar. Örneğin, 64 bit CPU'lar SSE2'ye sahip olmalıdır, ancak 32 bit CPU'lar olmayabilir. Bu yüzden çoğu 32-bit kod kontrolü rahatsız etmez ve SSE2 olmadığını varsayar. 64-bit kod SSE2 talimatlarının mevcut olduğundan emin olur ve bu yüzden en iyi seçenekse onu kullanır.

En büyüğü, adlandırılmış, genel amaçlı kayıt sayısındaki artış 8'den 16'ya çıkar. 128 bit XMM kayıtlarının sayısı da 8'den 16'ya iki katına çıktı.

Ek olarak, 64 bit işlem büyük miktarda sanal belleği kullanabilir. Bu özellikle diskteki büyük miktarlarda yapılandırılmış verilere erişen işlemlerde önemlidir. Ve elbette, büyük dosya sistemlerinde şifreleme, sıkıştırma ve hatta bazı dosya sistemi işlemlerini iyileştirme eğiliminde olan 64 bit tam sayı işlemlerini kullanabilirler.


AVX ve yardımcı talimatların SQL Server performansı üzerinde gerçekten belirgin bir etkisi var mı? Çoğunlukla bağlı olduğu G / Ç alt sistemi olacağını varsayardım (ama hiç karşılaştırmadım veya test etmedim).
Voo

Bazı modern 32 bit kod gelmez bir OS üzerinde çalışırken özellikle sadece CPU'lar yeni yeterince (diğer bazı gerekli özellikler ile birlikte) sahip SSE2 destekler, SSE2 varsayalım. Microsoft, /arch:SSE232 bit kod seçeneği gcc / clang / ICC eşdeğeri olan MSVC ile kendi şeyler derlemek varsayalım -msse2. SQL'in çok fazla SIMD vectorized loop'a sahip olmadığını tahmin ediyorum, ancak 16 bayt SIMD yükleri / mağazaları ile küçük yapıları kopyalamak güzel.
Peter Cordes

X86-64'teki daha önemli değişikliklerden biri, konumdan bağımsız etkin kod için PC'ye göreli adreslemedir. 32-bit PIC kütüphaneleri, 32-bit PIC olmayanlara kıyasla tipik olarak ~% 10 veya ~% 15 yavaşlamaya (IIRC) sahiptir. Daha fazla tamsayı kaydına sahip olmak da çok yardımcı olur. 64-bit'in büyük bir avantajı daha hoş bir arama kuralıdır, ancak Windows'ta (Linux'un aksine) 32-bit kod, __fastcallbirçok işlev için kayıtlarda argümanlar iletir. Linux 32-bit çağrı kuralı sadece yığın üzerinde, bu yüzden satır içi olmayan küçük işlevler için oldukça saçmalık.
Peter Cordes

Vektörizasyon, belirli bir destek seviyesi varsaymak / gerektirmek yerine performans için gerçekten çok önemliyse, kod muhtemelen CPU'nun desteklediği en yeni SSE / AVX sürümünü kontrol ediyor ve çalıştığı sistemden daha fazla hız almak için uygun uygulamayı çağırıyor üzerinde.
Dan Firelight tarafından Fiddling

@DanNeely That, yapıyı kimin 32 bit sürümünün performansını artırmak için çaba harcadığını varsayar. Benim deneyimim, en azından, performansı önemseyen insanların 64-bit derlemeyi kullanacaklarını varsaymalarıydı.
David Schwartz

6

Temel olarak: Evet. Asla sadece 4 bit olan güncellemeler yapmadığınızı varsayarsak - 2008'den daha yeni bir 32 bit SQL Server bile olduğundan emin değilsiniz.

Sorunuzla ilgili sorunlar: "64 bit sürümler 4 GB'tan fazla RAM'e erişime izin verir" - 4g değil, 3gb olun.) 1gb her zaman ayrılmıştır.


Eğer bu nitpicky'sek, neden doğru olmasın ve 32 bit bir programın yüzlerce GB RAM'e kolayca erişebildiğini belirtin? ;) Sadece sınırlı sanal adres alanı.
Voo

3
@Voo: Ve SQL Server nasıl yapılacağını bilen birkaç programdan biridir.
joshudson

6

Olası sorun: CLR kullanıcı tanımlı işlevlerin (UDF) DLL kitaplıkları 64 bit sürümlerini gerektirir.

CLR Kullanıcı Tanımlı İşlevler kitaplığı kullanıyorsanız , bu bit ile uyumsuz hale gelecektir. 32-bit DLL dosyaları genellikle 64-bit yazılımlarda kullanılamaz, bunun tersi de geçerlidir. Kullandığınız bazı UDF kitaplığının 64 bit sürümünü alamıyorsanız, söz konusu uzantıyı kaybedersiniz.

Temelde eklentileri olan herhangi bir 32 bit yazılımı 64 bit sürümüne yükseltmekle aynı konudur. Ayrıca tüm eklentileri 64 bit sürümlerine geçirmeniz gerekir. Genellikle kolaydır, ancak sorun, yer değiştirmelerin mevcut olmadığı durumlarda devam etmemektedir.


3

Verim!

Burada zaten birkaç teknik cevap var, ancak çok teknik olmadan ve uygulamanıza bağlı olarak bir performans yükseltmesi görmelisiniz.

Ana parçalar:

Büyük bellek adresleme: 64 bit mimari, doğrudan adreslenebilir daha büyük bir bellek alanı sunar. SQL Server 2005 (64 bit), 32 bit sistemlerin 4 GB bellek sınırına bağlı değildir. Bu nedenle, karmaşık sorguları gerçekleştirmek ve temel veritabanı işlemlerini desteklemek için daha fazla bellek kullanılabilir. Bu daha büyük işlem kapasitesi, geleneksel 32 bit sistemlerden daha fazla bellek kullanarak G / Ç gecikmesinin cezalarını azaltır.

Gelişmiş paralellik: 64 bit mimari, gelişmiş paralellik ve iplik geçirme sağlar. Paralel işleme ve veri yolu mimarilerindeki iyileştirmeler, 64 bit platformların daha fazla sayıda işlemciyi (64'e kadar) desteklemesini sağlarken, her bir ek işlemci ile doğrusal ölçeklenebilirliğe yakın olmasını sağlar. Daha fazla sayıda işlemciyle, SQL Server tek bir sistemde daha fazla işlemi, uygulamayı ve kullanıcıyı destekleyebilir.

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

32-bit'ten 64-bit SQL Server'a (bu SQL Server 2005 idi) giderken gördüğüm en dramatik sonuçlar, bir müşterinin ana uygulamasında% 40'lık bir hız artışı hakkındaydı. Tüm yaptığımız 64-bit SQL Server'ı kurmaktı, diğer her şey aynıydı! Bu gerçek dünyada büyük bir performans artışı oldu.


-2

Özellikle yerleşik ağır çoklu iş parçacığı içeren programlarla daha iyi çoklu görev performansına sahip olabilirsiniz. Ayrıca u 64-bit işletim sistemi ile daha fazla koç yükleyebilirsiniz. Ancak bunu yalnızca işlemci 64 bit talimatları destekliyorsa yapın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.