MySQL กับ PostgreSQL สำหรับเว็บแอปพลิเคชัน [ปิด]


122

ฉันกำลังทำงานกับเว็บแอปพลิเคชันโดยใช้ Python (Django) และต้องการทราบว่า MySQL หรือ PostgreSQL จะเหมาะสมกว่าหรือไม่เมื่อนำไปใช้งานจริง

ในพอดคาสต์หนึ่งJoel กล่าวว่าเขามีปัญหาบางอย่างกับ MySQL และข้อมูลไม่สอดคล้องกัน

ฉันต้องการทราบว่ามีใครมีปัญหาดังกล่าวบ้าง นอกจากนี้เมื่อพูดถึงประสิทธิภาพที่สามารถปรับแต่งได้อย่างง่ายดาย?

คำตอบ:


127

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


ดีขึ้นหรือไม่

MySQL ให้บริการโดยโฮสต์เว็บโดยทั่วไป

PostgreSQL เป็นผลิตภัณฑ์ที่เป็นผู้ใหญ่กว่ามาก

มีการสนทนานี้เพื่อตอบคำถามที่ "ดีกว่า" ของคุณ

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

ดังนั้นหากปัจจัยในการตัดสินใจของคุณคือ " เร็วกว่า " คำตอบก็คือ "ขึ้นอยู่กับ ว่ามันสำคัญจริงๆให้ทดสอบแอปพลิเคชันของคุณกับทั้งสองอย่าง " และถ้าคุณสนใจจริงๆคุณจะได้รับ DBA สองรายการ (คนที่เชี่ยวชาญ ในแต่ละฐานข้อมูล) และให้พวกเขาปรับแต่งอึออกจากฐานข้อมูลจากนั้นเลือก เป็นที่น่าประหลาดใจว่าDBA ที่ดีมีราคาแพงเพียงใด และพวกเขามีมูลค่าทุกร้อยละ

เมื่อเป็นเรื่องสำคัญ

ซึ่งอาจจะไม่เป็นเช่นนั้นเพียงแค่เลือกฐานข้อมูลใดก็ได้ที่คุณชอบและใช้งานได้ ประสิทธิภาพที่ดีขึ้นสามารถซื้อได้ด้วย RAM และ CPU ที่มากขึ้นและการออกแบบฐานข้อมูลที่เหมาะสมยิ่งขึ้นและเทคนิคขั้นตอนการจัดเก็บที่ชาญฉลาดเป็นต้นและทั้งหมดนี้มีราคาถูกกว่าและง่ายกว่าสำหรับเว็บไซต์แบบสุ่ม -X มากกว่าที่จะต้องทนทุกข์ทรมานกับการเลือก MySQL หรือ PostgreSQL และผู้เชี่ยวชาญการปรับแต่งจาก DBA ราคาแพง


โจเอลยังกล่าวในพอดแคสต์ว่าความคิดเห็นจะกลับมากัดเขาเพราะผู้คนจะบอกว่า MySQL เป็นเรื่องไร้สาระ - โจเอลไม่สามารถดึงcountแถวกลับมาได้ พหูพจน์ของเกร็ดเล็กเกร็ดน้อยไม่ใช่ข้อมูล เขากล่าวว่า :

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

และเขายังกล่าวว่า:

เป็นแค่เกร็ดเล็กเกร็ดน้อย และนั่นเป็นสิ่งหนึ่งที่ทำให้ฉันหงุดหงิดจริงๆเกี่ยวกับการเขียนบล็อกหรือเพียงแค่อินเทอร์เน็ตโดยทั่วไป [... ] มีแนวโน้มแปลก ๆ ที่จะทำให้เกร็ดเล็กเกร็ดน้อยกลายเป็นความจริงและจริงๆแล้วฉันในฐานะบล็อกเกอร์ฉันเริ่มรู้สึกผิดเล็กน้อยเกี่ยวกับเรื่องนี้


15
และอีกประเด็นหนึ่งก็คือหากคุณใช้เฟรมเวิร์กคุณอาจสามารถแยกโค้ดของคุณออกจากฐานข้อมูลเพื่อให้คุณสามารถเปลี่ยนได้อย่างง่ายดาย
Don Jones

"ไหนเร็วกว่ากัน" . ขึ้นอยู่กับสิ่งที่คุณต้องการหากคุณต้องการฐานข้อมูลที่สอดคล้องกับ ACID โปรดอ่านสิ่งนี้: randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx

47
ยังควรค่าแก่การทราบ MySQL เป็นของ Oracle ดังนั้นจึงไม่ได้รับอนุญาตให้แข่งขันกับผลิตภัณฑ์ที่ต้องชำระเงินของตน
unixman83

15

เพียงแค่ชิมลางในหลายเดือนต่อมา

ความสามารถทางภูมิศาสตร์ของฐานข้อมูลทั้งสองมีความแตกต่างกันมาก PostgreSQL มีส่วนขยาย PostGIS ที่ยอดเยี่ยม ฟังก์ชันทางภูมิศาสตร์ของ MySQL แทบจะเป็นศูนย์เมื่อเปรียบเทียบ

หากบริการเว็บของคุณมีองค์ประกอบตำแหน่งให้เลือก PostgreSQL


14

ฉันไม่ได้ใช้ Django แต่ฉันใช้ทั้ง MySQL และ PostgreSQL หากคุณจะใช้ฐานข้อมูลของคุณเป็นแบ็กเอนด์สำหรับ Django เท่านั้นก็ไม่สำคัญมากเพราะจะทำให้ความแตกต่างส่วนใหญ่เป็นนามธรรม PostgreSQL สามารถปรับขนาดได้มากกว่าเล็กน้อยเนื่องจากไม่ได้ชนกำแพงอิฐเร็วเท่า MySQL เมื่อเพิ่มขนาดข้อมูล / จำนวนไคลเอนต์

ความแตกต่างที่แท้จริงเกิดขึ้นหากคุณกำลังทำระบบใหม่ จากนั้นฉันขอแนะนำให้ใช้ PostgreSQL เนื่องจากมีคุณสมบัติมากมายที่ทำให้เลเยอร์ DB ของคุณปรับแต่งได้มากขึ้นเพื่อให้คุณสามารถปรับแต่งตามความต้องการที่คุณอาจมี


7

แม้ว่ามันจะเป็นบิตออกจากวันที่มันจะคุ้มค่าการอ่านMySQL Gotchasหน้า หลายรายการในรายการยังคงเป็นความจริงเพื่อความรู้ที่ดีที่สุดของฉัน

ฉันใช้ PostgreSQL


6

ฉันใช้ทั้งสองอย่างกว้างขวาง ตัวเลือกของฉันสำหรับโครงการเฉพาะลดลงเป็น:

  • การออกใบอนุญาต - คุณจะเผยแพร่แอปของคุณ (IANAL)
  • โครงสร้างพื้นฐานและฐานความรู้ที่มีอยู่
  • ใด ๆซอสสูตรพิเศษที่คุณต้องมี

โดยซอสพิเศษฉันหมายถึงสิ่งต่างๆเช่น:

  • การจำลองแบบง่าย / ราคาถูก = MySQL
  • ปัญหาชุดข้อมูลขนาดใหญ่พร้อมผลลัพธ์ขนาดเล็ก = PostgreSQL ใช้ส่วนขยายภาษาและมีการดำเนินการกับข้อมูลที่มีประสิทธิภาพมาก (PL / Python, PL / TCL, PL / Perl ฯลฯ )
  • การเชื่อมต่อกับ R Statistical Libraries = PostgreSQL PL / R พร้อมใช้งานใน debian / ubuntu

3
Postgres ยังมีการจำลองแบบง่าย / ราคาถูก มันไม่ได้อยู่ในตัวเพราะมีให้เลือกครึ่งโหลโดยแต่ละชิ้นมีส่วนดีและส่วนเสียเป็นของตัวเอง เพื่อให้คุณสามารถเลือกหนึ่งในการจำลองแบบปานกลางสำหรับ MySQL หรือจากหนึ่งในหลาย ๆ สำหรับ PostgreSQL ทางเลือกของคุณ.
Randal Schwartz

6
PostgreSQL 9.0+ มีการจำลองแบบ WAL แบบไบนารีในตัวซึ่งง่ายต่อการติดตั้ง
Sean

1

ฉันไม่คิดว่าคุณควรใช้แบรนด์ฐานข้อมูลอื่นในการพัฒนาที่ผ่านมา (build, staging, prod) เพราะมันจะกลับมากัดคุณ

จากวิธีที่ฉันเข้าใจ PostgreSQL เป็นการใช้งานฐานข้อมูลที่ 'ถูกต้อง' มากกว่าในขณะที่ mySQl นั้นถูกต้องน้อยกว่า (ปฏิบัติตามน้อยกว่า) แต่เร็วกว่า

ดังนั้นหากคุณกำลังเขียนแอปพลิเคชัน CRUD mySQL เป็นวิธีที่จะไป หากคุณต้องการคุณสมบัติบางอย่างจากฐานข้อมูลของคุณ (หากคุณไม่แน่ใจก็ไม่ได้ทำ) คุณอาจต้องการตรวจสอบ postgreSQL


1

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


1
ฉันจะเห็นด้วยกับคุณว่าเว็บโฮสต์คุณภาพต่ำควรเสนอทางเลือกแทนการยัด MySQL ใส่หน้าเรา อย่างไรก็ตามเมื่อไปกับโฮสติ้งที่ใช้ร่วมกันคุณก็อยู่ในความเมตตาของพวกเขาอยู่ดี ดังนั้นตัวเลือก DBM จึงไม่สำคัญเท่า
unixman83

0

ขอบคุณ. ฉันใช้ Django กับ MySQL แล้วก็ใช้ได้ เลือกฐานข้อมูลของคุณตามคุณสมบัติที่คุณต้องการ ยากที่จะเปรียบเทียบ MySQL และ Postgres ดีกว่าที่จะเปรียบเทียบ Postgress กับ SQl Server


0

@WolfmanDragon

PostgreSQL มีการสนับสนุน (เล็ก ๆ ) สำหรับวัตถุ แต่โดยธรรมชาติแล้วฐานข้อมูลเชิงสัมพันธ์ จากหน้าเกี่ยวกับ :

PostgreSQL เป็นระบบฐานข้อมูลเชิงสัมพันธ์แบบโอเพ่นซอร์สที่มีประสิทธิภาพ


2
a Object-Relational Database Management System ISA Relational Database Management System หากคุณอ่านเพิ่มเติมในเอกสาร PostgSQL คุณจะพบว่า PostgSql เป็น ORDBMS บางทีคุณอาจสับสน ORDBMS กับ ODBMS เช่น Objectivity / DB
WolfmanDragon

-1

MySQL เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ในขณะ PostgreSQL เป็นวัตถุระบบจัดการฐานข้อมูล -relational PostgreSQL เหมาะสำหรับนักพัฒนา C ++ หรือ Java เนื่องจากช่วยให้เราสามารถควบคุมวิธีการเขียนแบบสอบถามได้มากขึ้น ORDBMS ยังให้วัตถุและประเภทที่กำหนดโดยผู้ใช้แก่เรา แบบสอบถาม SQL นั้นใกล้เคียงกับมาตรฐาน ISO มากกว่า MySQL มาก
คุณต้องการ ORDBMS หรือ RDBMS หรือไม่? นั่นจะตอบคำถามของคุณได้ดีกว่า


นั่นคือการทำให้เข้าใจผิดมากเกินไป เพียงเพราะคุณไม่ต้องการ ORDBMS ไม่ได้แปลว่าคุณต้องใช้ MySQL มีความแตกต่างที่สำคัญอื่น ๆ อีกไหม?
Don Jones

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