ข้อดีของการอัพเกรด Windows Server และ SQL Server 32 บิตเป็น 64 บิต


13

สมมติว่าฉันมีกล่อง Windows Server 32 บิตที่ใช้งานแอปพลิเคชั่นเซิร์ฟเวอร์หลายตัวพร้อมกับ SQL Server ด้วยการใช้ RAM ประมาณ 2 GB ในช่วงเวลาเร่งด่วน

อะไรคือข้อดีของการอัพเกรด Windows Server OS และ SQL Server เป็นรุ่น 64 บิตที่สอดคล้องกันโดยที่แอปพลิเคชันเซิร์ฟเวอร์ที่เหลืออยู่เป็น 32 บิต รุ่น 64 บิตอนุญาตให้เข้าถึง RAM มากกว่า 4 GB แต่เนื่องจาก 4 GB ไม่ได้ถูกใช้อย่างเต็มที่จะทำให้การอัพเกรดเป็นอย่างไร

รุ่น: Windows Server 2008 R2, SQL Server 2008 R2 Datacenter Edition

ขอบคุณ

คำตอบ:


19

เกี่ยวข้องอย่างยิ่ง: เหตุผลที่ดีที่จะใช้ระบบปฏิบัติการเดสก์ท็อป Microsoft Windows แบบ 32 บิต

คุณจะใช้ระบบปฏิบัติการ 64 บิต Server 2008 R2 เป็นเครื่องแรกที่รองรับ CPU 64 บิตเท่านั้น

Windows รุ่นที่ใหม่กว่านั้นไม่ได้ออกแบบมาเป็น 32 บิต คุณอาจจะไม่ใช้ประโยชน์จากสิ่งใด แต่ไม่ควรมีข้อเสียใด ๆ ที่ถูกกล่าวว่า: อัปเกรดแล้วเป็น Server 2008 R2 SP1 (ซึ่งผมหวังว่าคุณกำลังใช้) จะเป็น EOL จาก 2020/01/14

สำหรับ SQL Server 32 บิต / 64 บิต: ความเข้าใจของคุณถูกต้องหากคุณไม่ต้องการ RAM> ~ 3,75 GB (หรือ> 2 GB ต่อกระบวนการ) คุณสามารถใช้รุ่น 32 บิตได้โดยไม่มีปัญหา แต่สำหรับรุ่นที่ใหม่กว่าจะไม่มีรุ่น 32 บิตที่จะติดตั้งเนื่องจาก Microsoft เปลี่ยนเป็น 64 บิตเท่านั้น


6
OP กล่าวถึง "2 GB ในช่วงเวลาเร่งด่วน" ดังนั้นจึงเป็นไปได้อย่างสมบูรณ์ที่ SQL Server ต้องการใช้มากกว่า 2 GB แต่ไม่สามารถทำได้เนื่องจากข้อ จำกัด กระบวนการ 32 บิต
MonkeyZeus

อาจเป็นกรณีฉันไม่ทราบจริง ๆ ว่า MS SQL Server 2008 ใช้กระบวนการหลายอย่างสำหรับงานที่แตกต่างกัน / อินสแตนซ์ / ฐานข้อมูล / ฯลฯ
34919

11

ดังที่ระบุไว้แล้วคุณใช้ระบบปฏิบัติการ 64 บิตอยู่แล้ว ข้อดีของการสลับไปใช้ SQL Server รุ่น 64 บิตมีข้อดีสองข้อ

ข้อเสียเพียงอย่างเดียวคือ SQL Server รุ่น 64 บิตจะใช้พอยน์เตอร์ 64- บิต ซึ่งหมายความว่าพอยน์เตอร์จะครอบครองหน่วยความจำมากเป็นสองเท่ากินแบนด์วิธหน่วยความจำมากเป็นสองเท่าเป็นต้น สิ่งนี้มีโอกาสน้อยมาก แต่มันก็เป็นข้อเสีย มันถูกชดเชยบางส่วนจากความจริงที่ว่าการสลับไปใช้แอปพลิเคชัน 64 บิตจะช่วยให้คุณสามารถใช้งานโอเวอร์เฮดของแอพพลิเคชั่นเลเยอร์ 32 บิตที่ใช้งานร่วมกันได้เพื่อใช้งานฟังก์ชั่น

ข้อได้เปรียบที่สำคัญคือการปรับปรุงที่สำคัญมากมายเกิดขึ้นในชุดคำสั่ง CPU เมื่อเวลาผ่านไป บางส่วนของพวกเขาถูกสร้างขึ้นพร้อมกับการเปลี่ยนแปลง 64 บิตและบางส่วนของพวกเขาก่อนหน้านี้

แต่สำหรับรุ่นก่อนหน้านี้บิวด์ 32 บิตนั้นต้องจัดการกับซีพียูที่ไม่มีคุณสมบัติเหล่านั้นและเพื่อหลีกเลี่ยงความยุ่งยากในการตรวจจับและสลับไปมาระหว่างอินสแตนซ์ต่าง ๆ เพียงแค่ไม่ได้ใช้งาน ตัวอย่างเช่น CPU 64 บิตต้องมี SSE2 แต่ CPU 32 บิตอาจไม่ ดังนั้นรหัส 32 บิตส่วนใหญ่ก็ไม่ได้รบกวนการตรวจสอบและถือว่าไม่มี SSE2 รหัส 64 บิตมั่นใจได้ว่ามีคำแนะนำ SSE2 อยู่และจะใช้ถ้าเป็นตัวเลือกที่ดีที่สุด

สิ่งที่ใหญ่ที่สุดคือการเพิ่มจำนวนของรีจิสเตอร์อเนกประสงค์ที่มีชื่อเพิ่มขึ้นจาก 8 เป็น 16 จำนวนเรจิสเตอร์ XMM แบบ 128 บิตนั้นเพิ่มเป็นสองเท่าจาก 8 เป็น 16

นอกจากนี้กระบวนการ 64 บิตสามารถใช้ประโยชน์จากหน่วยความจำเสมือนจำนวนมาก สิ่งนี้สำคัญอย่างยิ่งกับกระบวนการที่เข้าถึงข้อมูลที่มีโครงสร้างจำนวนมากบนดิสก์ และแน่นอนพวกเขาสามารถใช้การดำเนินการจำนวนเต็ม 64 บิตซึ่งมีแนวโน้มที่จะปรับปรุงประสิทธิภาพของการเข้ารหัสการบีบอัดและแม้กระทั่งการดำเนินการบางอย่างของระบบไฟล์บนระบบไฟล์ขนาดใหญ่


AVX และคำสั่ง co มีผลกระทบต่อประสิทธิภาพของ SQL Server หรือไม่ ฉันจะถือว่า (แต่ฉันไม่เคยเปรียบเทียบหรือทดสอบ) ว่าส่วนใหญ่จะเป็นระบบย่อย IO ซึ่งมันขึ้นอยู่กับ
Voo

บางทันสมัยรหัส 32 บิตไม่ถือว่า SSE2 โดยเฉพาะอย่างยิ่งเมื่อทำงานบนระบบปฏิบัติการที่รองรับเฉพาะซีพียูใหม่พอที่จะมี SSE2 (พร้อมด้วยคุณสมบัติบางอย่างที่จำเป็นอื่น ๆ ) ผมถือว่าไมโครซอฟท์จะรวบรวมสิ่งที่พวกเขามี MSVC ซึ่งมี/arch:SSE2ตัวเลือกสำหรับรหัส 32 บิตเทียบเท่ากับ -msse2GCC ฉันเดาว่า SQL ไม่มีลูปแบบเวกเตอร์ SIMD จำนวนมาก แต่การคัดลอก structs ขนาดเล็กที่มีโหลด / ร้านค้า 16 ไบต์ SIMD นั้นดี
ปีเตอร์

การเปลี่ยนแปลงที่สำคัญอย่างหนึ่งใน x86-64 คือการกำหนดแอดเดรสที่สัมพันธ์กับพีซีเพื่อให้ได้รหัสที่มีประสิทธิภาพ ไลบรารี PIC แบบ 32 บิตโดยทั่วไปจะมีการชะลอตัว (IIRC) ~ 10% หรือ ~ 15% เทียบกับไม่ใช่แบบ PIC 32 บิต การมีจำนวนเต็มจำนวนมากก็ช่วยได้เช่นกัน ข้อดีอย่างหนึ่งที่สำคัญใน 64- บิตคือการประชุมที่เรียกว่า nicer แต่บน Windows (ต่างจาก Linux) โค้ด 32- บิต__fastcallจะผ่าน args ในการลงทะเบียนสำหรับฟังก์ชั่นมากมาย หลักการเรียก Linux แบบ 32 บิตนั้นอยู่บนสแต็คอย่างหมดจดดังนั้นจึงเป็นเรื่องที่น่ายินดีสำหรับฟังก์ชั่นเล็ก ๆ ที่ไม่อินไลน์
ปีเตอร์

หากการทำให้เป็นเวกเตอร์มีความสำคัญมากสำหรับประสิทธิภาพแทนที่จะสมมติ / ต้องการระดับการสนับสนุนที่เฉพาะเจาะจงรหัสอาจจะตรวจสอบ SSE / AVX เวอร์ชั่นใหม่ล่าสุดที่ CPU รองรับและเรียกการใช้งานที่เหมาะสมเพื่อให้ได้ความเร็วมากที่สุด บน.
แดนเล่นซอโดย Firelight เมื่อ

@DanNeely ถือว่าผู้ใดก็ตามที่สร้างความพยายามในการปรับปรุงประสิทธิภาพของรุ่น 32 บิต อย่างน้อยประสบการณ์ของฉันก็คือพวกเขามักจะคิดว่าคนที่สนใจเกี่ยวกับประสิทธิภาพจะใช้บิท 64 บิต
David Schwartz

6

พื้นฐาน: ใช่ สมมติว่าคุณไม่เคยทำการอัพเดทที่เป็น 4 บิตเท่านั้น - ไม่แน่ใจว่าแม้จะเป็น SQL Server 32 บิตที่ใหม่กว่าปี 2008

ปัญหาเกี่ยวกับคำถามของคุณ: "รุ่น 64 บิตอนุญาตให้เข้าถึง RAM มากกว่า 4 GB" - ทำ 3gb นั้น) ไม่ใช่ 4 1GB ถูกสงวนไว้เสมอ


หากเราเป็น nitpicky นี้ทำไมไม่ถูกต้องและพูดถึงว่าโปรแกรม 32 บิตสามารถเข้าถึง RAM นับร้อย GB ได้อย่างง่ายดาย? ;) เป็นเพียงพื้นที่ที่อยู่เสมือนที่ถูก จำกัด
Voo

3
@Voo: และ SQL Server เป็นหนึ่งในไม่กี่โปรแกรมที่รู้วิธี
joshudson

6

ปัญหาที่อาจเกิดขึ้น: ไลบรารี DLL ของฟังก์ชันที่ผู้ใช้กำหนดเอง (UDF) ของ CLR จะต้องใช้รุ่น 64 บิต

หากคุณใช้ไลบรารีของฟังก์ชั่นที่ผู้ใช้กำหนดเองของCLRมันจะไม่สามารถใช้งานร่วมกับบิตได้ DLLs แบบ 32 บิตโดยทั่วไปไม่สามารถใช้ในซอฟต์แวร์ 64 บิตและในทางกลับกัน หากคุณไม่สามารถรับไลบรารี UDF เวอร์ชัน 64 บิตที่คุณใช้คุณจะสูญเสียส่วนขยายเฉพาะนั้น

โดยทั่วไปแล้วมันเป็นปัญหาเดียวกับการอัพเกรดซอฟต์แวร์ 32 บิตใด ๆ ที่มีส่วนเสริมเป็นรุ่น 64 บิต คุณต้องสลับส่วนเสริมทั้งหมดไปเป็นรุ่น 64 บิต โดยทั่วไปแล้วจะง่าย แต่ปัญหาจะหยุดลงเมื่อไม่มีการแทนที่


3

ประสิทธิภาพ!

มีคำตอบทางเทคนิคหลายประการอยู่ที่นี่ แต่ไม่ได้รับเทคนิคมากเกินไปและขึ้นอยู่กับแอปพลิเคชันของคุณคุณควรเห็นการอัพเกรดประสิทธิภาพ

ชิ้นหลักคือ:

การระบุที่อยู่หน่วยความจำขนาดใหญ่:สถาปัตยกรรม 64 บิตให้พื้นที่หน่วยความจำที่สามารถระบุตำแหน่งได้โดยตรงที่ใหญ่กว่า SQL Server 2005 (64- บิต) ไม่ได้ถูกผูกไว้ด้วยขีด จำกัด หน่วยความจำ 4 GB ของระบบ 32 บิต ดังนั้นหน่วยความจำเพิ่มเติมจึงพร้อมใช้งานสำหรับการดำเนินการแบบสอบถามที่ซับซ้อนและสนับสนุนการดำเนินการฐานข้อมูลที่จำเป็น ความสามารถในการประมวลผลที่มากขึ้นนี้ช่วยลดบทลงโทษของ I / O latency โดยการใช้หน่วยความจำมากกว่าระบบ 32 บิตแบบดั้งเดิม

Enhanced parallelism:สถาปัตยกรรม 64- บิตให้การขนานและเธรดขั้นสูง การปรับปรุงในการประมวลผลแบบขนานและสถาปัตยกรรมบัสเปิดใช้งานแพลตฟอร์ม 64 บิตเพื่อรองรับหน่วยประมวลผลจำนวนมากขึ้น (สูงสุด 64) ในขณะที่ให้ความยืดหยุ่นเชิงเส้นใกล้เคียงกับโปรเซสเซอร์เพิ่มเติมแต่ละตัว ด้วยตัวประมวลผลจำนวนมาก SQL Server สามารถรองรับกระบวนการแอปพลิเคชันและผู้ใช้เพิ่มเติมในระบบเดียว

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

ผลลัพธ์ที่น่าทึ่งที่สุดที่ฉันเห็นจากการใช้ SQL Server แบบ 32 บิตถึง 64 บิต (นี่คือ SQL Server 2005) คือการเพิ่มความเร็วประมาณ 40% สำหรับแอปพลิเคชันหลักของลูกค้า สิ่งที่เราทำก็คือติดตั้ง SQL Server 64 บิตทุกอย่างอื่นเหมือนเดิม! นั่นคือการเพิ่มประสิทธิภาพที่สำคัญในโลกแห่งความจริง


-2

คุณสามารถมีประสิทธิภาพการทำงานมัลติทาสกิ้งที่ดีขึ้นโดยเฉพาะอย่างยิ่งกับโปรแกรมที่มีการใช้มัลติเธรดจำนวนมากในตัวนอกจากนี้คุณสามารถติดตั้ง RAM ได้มากขึ้นด้วยระบบปฏิบัติการ 64 บิต แต่ทำเช่นนี้เฉพาะในกรณีที่โปรเซสเซอร์รองรับคำแนะนำ 64 บิต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.