ประสิทธิภาพของ CPU นั้นเกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่


33

นี่เป็นคำถามเชิงทฤษฎีอย่างแท้จริง สมมติว่าฉันมีแอปพลิเคชันที่ปรับใช้บนเซิร์ฟเวอร์หลายเครื่อง

  1. เครื่องถ่วงโหลด
  2. เซิร์ฟเวอร์แอพพลิเคชั่นหลายตัว / ปรับขนาดได้
  3. เซิร์ฟเวอร์ฐานข้อมูล A (เดี่ยว) (ในขณะนี้)

ในสองส่วนแรกฉันรู้ว่าต้องหาอะไร แต่เซิร์ฟเวอร์ฐานข้อมูลล่ะ ฉันควรมองหาฮาร์ดแวร์ชนิดใด

  • ความถี่ซีพียูเกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่
  • ซีพียูหลายคอร์มีความเกี่ยวข้องหรือไม่?
  • RAM สำคัญกว่า CPU หรือไม่

PS: หากว่าฐานข้อมูลที่เลือกคือ MySQL หรือ PostgreSQL


มันต้องมีอันเดียว
ConcOfOfTunbridgeWells

คำตอบ:


29

สำหรับ PostgreSQL พลังงานซีพียูอาจมีความเกี่ยวข้องมากโดยเฉพาะอย่างยิ่งถ้าชุดการทำงานที่ใช้งานอยู่ของข้อมูลของคุณพอดีกับ RAM ฐานข้อมูลส่วนใหญ่ที่ฉันทำงานด้วยมีกำลัง CPU เป็นคอขวดหลักเกือบตลอดเวลา (ฉันเพิ่งตรวจสอบ vmstat บนเซิร์ฟเวอร์ที่โฮสต์เว็บไซต์ด้วยจำนวนการเข้าชมต่อล้านครั้งต่อวันซึ่งมีพื้นที่ฐานข้อมูลมากกว่า 5TB และฉันไม่เคยเห็นเวลารอดิสก์มากกว่า 2% แต่เห็นเวลา CPU ของผู้ใช้สูงสุด 12%)

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

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

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับหัวข้อนี้ตามที่เกี่ยวข้องกับ PostgreSQL ผมไม่คิดว่าจะมีแหล่งที่มาดีกว่าPostgreSQL 9.0 สมรรถนะสูงโดยเกร็กสมิ ธ (การเปิดเผยแบบเต็มฉันเป็นผู้ตรวจสอบด้านเทคนิคสำหรับหนังสือ แต่ไม่ได้รับผลประโยชน์ทางการเงินจากการขาย)


เฮ้ฉันมีหนังสือเล่มนี้ มีหน้าส่วนหรือบทใดที่คุณอ้างถึงหรือไม่? (BTW +1 สำหรับมุมมอง PostgreSQL)
RolandoMySQLDBA

ขอบคุณสำหรับข้อมูลเกี่ยวกับ PostgreSQL ฉันจะตรวจสอบหนังสือ ;)
Zenklys

1
สิ่งดีๆจากหน้า 21-23
RolandoMySQLDBA

ฉันเห็นภูมิปัญญาของย่อหน้าที่สองของคุณเมื่อเทียบกับหน้า 21-23
RolandoMySQLDBA

23

อย่างเคร่งครัดจากมุมมอง MySQL นั่นเป็นคำถามที่โหลดมาก

ความถี่ของ CPU เกี่ยวข้องกับเซิร์ฟเวอร์ฐานข้อมูลหรือไม่

ในขณะที่ซีพียูและมาเธอร์บอร์ดที่เร็วกว่านั้นยอดเยี่ยมมาก คอขวดดังกล่าวรวมถึง:

  • ดิสก์ I / O
  • การเชื่อมต่อสูงสุด
  • เวลาแฝงเครือข่าย
  • แบบสอบถามประสิทธิภาพต่อการเชื่อมต่อ

ประโยชน์เล็ก ๆ น้อย ๆ ทุกอย่างช่วยได้ แต่ฉันต้องบอกว่าไม่ใช่เพราะความเร็วของ CPU ในตัวมันเองไม่ได้ดีขึ้นในคอขวดดังกล่าว ท้ายที่สุดแล้ว Formula One RaceCar สามารถสวมร่มชูชีพที่เปิดกว้างหรือกอริลลา 800 ปอนด์ที่ล้อได้อย่างไร

ซีพียูหลายคอร์มีความเกี่ยวข้องหรือไม่?

ขึ้นอยู่กับว่าคุณใช้ MySQL เวอร์ชันใด MySQL 5.1 InnoDB Plugin, MySQL 5.5, และ XtraDB ของ Percona Server ทั้งหมดมีการตั้งค่าที่คุณต้องกำหนดค่าอย่างถูกต้องเพื่อรับ InnoDB เพื่อเข้าถึงแกนทั้งหมด แรงจูงใจที่แท้จริงในการทำสิ่งนี้เกิดจากความจริงที่ว่า MySQL LEFT UNCONFIGURED รุ่นเก่าบางรุ่นเร็วกว่ารุ่นที่ใหม่กว่าดังที่ฉันได้กล่าวไว้ในโพสต์ที่ผ่านมาของฉัน:

ดังนั้นหากคุณไม่เต็มใจที่จะกำหนดค่า InnoDB สำหรับการเข้าถึง CPU ทั้งหมดการมีหลายคอร์ไม่ต้องซื้ออะไรเลย

RAM สำคัญกว่า CPU หรือไม่

โอ้ใช่แน่นอน การกำหนดค่าหน่วยความจำสำหรับ MySQL ทำให้เกิดการตั้งค่า

ขอน้อยเกินไปหรือมากเกินไปจากการรวมกันของสิ่งเหล่านี้และ MySQL กลับมากัดคุณ ซีพียูที่เร็วขึ้นพร้อมกับ MySQL ที่กำหนดค่าไม่ถูกต้องสำหรับ RAM จะทำให้ MySQL กัดคุณได้เร็วขึ้น


2
คำตอบที่ดี ฉันจะตรวจสอบลิงก์เหล่านั้นขอบคุณ
Zenklys

6
  • ไม่
  • ไม่
  • ใช่

กล่าวง่ายๆว่าคุณต้องใช้ RAM และ IO (latency + read speed + write speed) สำหรับฐานข้อมูล

ทางเลือกของ 4 หรือ 6 คอร์หรือ 2.5 GHz เทียบกับ 3 GHz นั้นไม่เกี่ยวข้องกันจริงๆ (ฉันสมมติว่าคุณไม่ต้องเลือกระหว่าง P3-450 กับ 32 GB RAM หรือ Xeon ล่าสุดที่มี 1GB RAM)

หากคุณมี CPU ที่ผูกติดอยู่แสดงว่าคุณมีปัญหาอื่น ๆ (การออกแบบที่ไม่ดี, ดัชนีที่ไม่ดี, การแลกเปลี่ยน, เซิร์ฟเวอร์ที่ไม่เฉพาะเจาะจง ฯลฯ )


ขอบคุณสำหรับคำตอบ. SSD นั้นเป็นตัวเลือกที่ดีใช่ไหม เหนือพลัง CPU?
Zenklys

@ Zenklys: ยากที่จะพูด คุณมีฐานข้อมูลขนาดเท่าใด เขียนปริมาณหรือไม่ อ่านโหลดไหม OLTP หรือ OLAP ฯลฯ
gbn

สูงสุด 20- 30 gb อัตราการอ่าน / เขียน 10 ต่อ 1 ข้อมูลขนาดเล็กเท่านั้น OLTP
Zenklys

2
@ Zenklys: ในกรณีนี้มันไม่สำคัญเลย เพียงแค่ซื้อ RAM โดยเฉพาะอย่างยิ่งสำหรับ MySQL เพื่อให้เป็นข้อมูลที่ถูกแคชที่เป็นไปได้
GBN

3
ไม่แน่ใจว่าทำไมนี่คือคำตอบที่ยอมรับได้ มันง่ายมากโดยไม่พิจารณาถึงแอปพลิเคชันภาระงานหรือขนาดชุดข้อมูล @ kgrittn ให้คำตอบที่ดีกว่าบนพื้นฐานประสบการณ์โลกแห่งความเป็นจริงและเข้าใจทฤษฎีการทำงานของ Postgres ได้ดีขึ้น
dbenhur
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.