ฉันควรติดตั้งฐานข้อมูล 32 บิตหรือฐานข้อมูล 64 บิตหรือไม่


16

(ฉันอ่านมากเกี่ยวกับ 64-bit เทียบกับระบบปฏิบัติการ / แอพ 32 บิต แต่คำถามนี้เกี่ยวกับฐานข้อมูลโดยเฉพาะ)

ฉันพยายามที่จะเข้าใจข้อดีข้อเสียของฐานข้อมูลแบบ 32 บิตและ 64 บิตและภายใต้เงื่อนไขว่ามันเริ่มมีเหตุผลที่จะใช้การติดตั้งแบบ 64 บิต

ระบบฐานข้อมูลที่ฉันสนใจคือ: SQL Server 2008, MySQL และ PostgreSQL 9.0

ฉันได้อ่านแล้วว่า PostgreSQL รุ่น pre-9.0 มาใน 32 บิตสำหรับ Windows เท่านั้นและบทความนี้เกี่ยวกับการเรียกใช้ PostgreSQL 32- บิตบน 64- บิต Windowsจะกำจัดความสับสนของฉัน แต่ฉันกำลังมองหาข้อมูลเพิ่มเติม

เมื่อใดที่ฉันจะได้รับประโยชน์จากการใช้ฐานข้อมูล 64 บิต (เช่นขนาดฐานข้อมูล / พื้นที่ว่างในดิสก์, หน่วยความจำระบบที่มีอยู่, ประเภทของข้อมูลที่ทราบว่าได้รับประโยชน์จากฐานข้อมูลใด, โปรแกรมฐานข้อมูลที่ใช้อยู่ ฯลฯ )

คำตอบ:


20

ภายใต้เงื่อนไขที่เริ่มใช้การติดตั้ง 64 บิต

ภายใต้ทั้งหมดยกเว้นการงี่เง่า ขออภัย - สิ่งที่ดีที่จะติดตั้งฐานข้อมูล 32 บิตบนเซิร์ฟเวอร์ 64 บิต และ - จินตนาการ - เซิร์ฟเวอร์ 2008R2 นั้นมีให้ใช้งานใน 64 บิตเท่านั้น

มี - วันนี้ - ไม่มีสถานการณ์ที่เหมาะสมที่จะติดตั้ง SQL Server รุ่น 32 บิตหากมีโอกาส

ฐานข้อมูลมีความเฉพาะในเรื่องนี้ - เนื่องจากต้องการใช้หน่วยความจำจำนวนมากเป็นแคชหากจำเป็น มากกว่า 2gb / 3gb ที่น้อยมากกระบวนการ 32 บิตสามารถให้ได้ PAE ไม่เหมือนกัน แม้จะละเว้นข้อ จำกัด หน่วยความจำ PAE ไม่เท่ากับหน่วยความจำจริงสำหรับ SQL Server for (ใช้สำหรับสิ่งเดียวเท่านั้น - แคชหน้า db)

ระบบปฏิบัติการ 32 บิต - อยู่ในระดับเดียวกัน มันไม่มีเหตุผลเกี่ยวกับฮาร์ดแวร์ที่ทันสมัยในการติดตั้งระบบปฏิบัติการ 32 บิต


4
+1 สาธุคุณพี่ !!
DaniSQL

6
เช่นเดียวกับระบบปฏิบัติการ 32-bit และแอพมีข้อดีเล็กน้อยเช่นหน่วยความจำขนาดเล็ก
JohnB

@TomTom: SQL Server 2008 R2 มีให้ใช้งานแบบ 32 บิต (เลื่อนลงเล็กน้อย) msdn.microsoft.com/en-us/library/ms143506.aspx
JohnB

1
ใช่รอยขนาดเล็กลง SADLY โดยเฉพาะอย่างยิ่งสำหรับฐานข้อมูลที่ไม่เกี่ยวข้อง ฐานข้อมูลไม่ใช่คำ มันจัดการกับ - ภายใต้การติดตั้งส่วนใหญ่ - ข้อมูลจำนวนมากดังนั้นการเข้าถึง RAM จำนวนมากจึงสมเหตุสมผล
TomTom

1
... แรมจำนวนมากกำลังมีมากกว่า 4GB ในกระบวนการใช่ไหม คุณรู้หรือไม่ว่ามีเซิร์ฟเวอร์ SQL จำนวนเท่าใดที่ไม่ได้จัดเตรียมไว้สำหรับเซิร์ฟเวอร์ที่มีการประมวลผลหลายตัว? ฉันไม่ได้เถียงว่ามันเป็นความคิดที่ดีที่จะมีระบบปฏิบัติการ 64 บิตและเซิร์ฟเวอร์ SQL แต่ฉันจะบอกว่ามีการกำหนดค่ามากมายที่มันไม่สำคัญ / เลย /
Evan Carroll

6

PostgreSQL ได้ประโยชน์จากการสร้าง 64 บิตในสองวิธีหลัก ก่อนประเภทข้อมูลที่สามารถพอดีกับ 64- บิต (จำนวนเต็มขนาดใหญ่และประเภทประทับเวลาส่วนใหญ่) สามารถส่งผ่านได้อย่างมีประสิทธิภาพมากขึ้นโดยตรงในการลงทะเบียนมากกว่าการใช้ตัวชี้ ประการที่สองเป็นไปได้ที่จะจัดสรรหน่วยความจำเพิ่มเติมสำหรับแคชบัฟเฟอร์เฉพาะของฐานข้อมูล จุดลดลงของการส่งคืนบน tunable (shared_buffers) นั้นมักจะอยู่ที่ประมาณ 8GB แต่จะถูก จำกัด ที่ <2GB บนระบบ 32 บิต

อย่างไรก็ตามหากคุณใช้ Windows PostgreSQL จะไม่จัดการหน่วยความจำที่ใช้ร่วมกันอย่างมีประสิทธิภาพเหมือนกับบนแพลตฟอร์ม UNIX-ish จุดกลับลดลงโดยทั่วไปแล้วจะกลายเป็น <= 512MB ของหน่วยความจำเฉพาะสำหรับฐานข้อมูลไม่ว่าคุณจะมี PostgreSQL รุ่น 32 บิตหรือ 64 บิต คุณจะทำได้ดีกว่าที่จะปล่อยให้ส่วนที่เหลือไว้สำหรับแคชของระบบปฏิบัติการแทนที่จะอุทิศให้กับฐานข้อมูล ดังนั้นจึงไม่มีประสิทธิภาพที่เพิ่มขึ้นจาก 32 เป็น 64 บิตด้วย PostgreSQL บน Windows tunable หลักที่ปกติแล้วจะได้รับประโยชน์จากการมี RAM ให้ใช้มากกว่าปกติไม่ได้ใช้งานได้ดีนัก


1
โปรดทราบว่าบางคนรายงานว่าได้รับประโยชน์จาก Windows PostgreSQL 64 บิตโดยการตั้งค่าที่มีขนาดใหญ่มากสำหรับ work_mem ซึ่งช่วยให้เซิร์ฟเวอร์จัดเรียงข้อมูลจำนวนมากในหน่วยความจำ
Greg Smith

4

ฉันรัน MySQL บนสถาปัตยกรรม 64 บิตเพราะฉันต้องการให้พวกเขาใช้หน่วยความจำมากกว่า 4GB ต่อเธรดได้อย่างมีประสิทธิภาพมากที่สุด โดยทั่วไปการพูดควรใช้กับฐานข้อมูลทั้งหมด

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

Wikipedia มีการเปรียบเทียบระหว่าง 64 บิตและ 32 บิตซึ่งมีรายละเอียดในระดับต่ำกว่า


2
เป็นแบบต่อกระบวนการไม่ใช่แบบต่อเธรด เธรดใช้พื้นที่หน่วยความจำร่วมกัน
Evan Carroll

3

โปรดทราบว่าหากคุณมีไลบรารีไคลเอนต์ MySQL 64 บิตเท่านั้นคุณจะได้รับข้อผิดพลาด "สถาปัตยกรรมผิด" เมื่อพยายามเชื่อมโยงเข้าด้วยกันด้วยรหัส 32 บิต สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันพยายามติดตั้ง python bindings ("pip install MySQL-python")

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

(ทั้งหมดนี้สมมติว่าคุณจะใช้ชุดข้อมูลขนาดเล็กมาก)


2

สำหรับหลาย ๆ สิ่ง 32 บิตเป็นชัยชนะ (ตราบใดที่คุณสามารถอยู่กับพื้นที่ที่อยู่) ได้ แต่ DB เป็นสิ่งหนึ่งที่แม้แต่ฐานข้อมูลขนาดเล็กก็สามารถเพิ่มการทำงานจริงได้ใน 64 บิต จริงอยู่ที่ฉันไม่รู้อะไรเกี่ยวกับเซิร์ฟเวอร์ MS SQL แต่ฉันเห็นมาตรฐาน (ตัวอย่างเช่นบน Sun 5 (Sun 64 บิตเก่าบนเดสก์ท็อป)) 32 บิตโดยทั่วไปจะเร็วกว่าเล็กน้อยยกเว้น mysql ซึ่งเป็น 30 % เร็วกว่าใน 64 บิต


2
"สำหรับหลาย ๆ อย่าง 32 บิตคือชัยชนะ" - ตัวอย่าง ??
Chris S

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

1
มาตรฐานจำนวนมากในยุคการเปลี่ยนแปลงของ RISC 32> 64 และอย่างน้อย x86 ในช่วงต้นแสดงให้เห็นเพียงเล็กน้อยหากผลประโยชน์ใด ๆ ถึง 64 บิตยกเว้นว่าคุณต้องการพื้นที่ที่อยู่และ db ก็ทำได้ ฉันไม่อยากเชื่อเลยและฉันพนัน x86 วันนี้ 64 บิตเร็วขึ้นเสมอ (เพียงเพราะคุณหลบหนีชุดคำสั่ง i32 นั้น) Anandtech.com มีเกณฑ์มาตรฐานจนกระทั่งดวงตาของคุณมีเลือดออก โปรดจำไว้ว่า: แสดงข้อมูล
Ronald Pottol

1
ข้อเสียเปรียบหลักที่ฉันคิดได้สำหรับ 64- บิตคือตัวชี้ที่ใหญ่กว่า (64- บิต) ซึ่งจะใช้พื้นที่หน่วยความจำแคชมากขึ้นกว่าโครงสร้างข้อมูลแบบไดนามิกที่เทียบเท่า 32 บิต (เช่นรายการที่เชื่อมโยงต้นไม้) ... ) สิ่งนี้จะลดปริมาณหน่วยความจำแคชที่มีอยู่ อาการนี้ยังคงอยู่ในหน่วยความจำหลัก เซิร์ฟเวอร์ Debian 64 บิตของฉันที่มี RAM เพียง 64Mb ของฉันใช้ swap และทำงานแอพน้อยกว่าเซิร์ฟเวอร์ 32 บิตที่ติดตั้งในทำนองเดียวกัน
sybreon

3
@ sybreon: ฉันคิดว่าฉันมี 128mb เก่า ๆ วางอยู่รอบ ๆ ถ้าคุณต้องการ!
JohnB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.