웹 애플리케이션 용 MySQL vs PostgreSQL [닫기]


122

저는 Python (Django)을 사용하는 웹 애플리케이션에서 작업 중이며 프로덕션 용으로 배포 할 때 MySQL 또는 PostgreSQL이 더 적합한 지 알고 싶습니다.

팟 캐스트에서 Joel은 MySQL에 몇 가지 문제가 있으며 데이터가 일관성이 없다고 말했습니다.

누군가 그런 문제가 있는지 알고 싶습니다. 또한 쉽게 조정할 수있는 성능에 관해서는?

답변:


127

미래 독자를위한 참고 사항 : 아래 텍스트는 2008 년 8 월에 마지막으로 편집되었습니다.이 편집 시점은 거의 11 년 전입니다. 소프트웨어는 버전마다 빠르게 변경 될 수 있으므로 아래 조언에 따라 DBMS를 선택하기 전에 몇 가지 조사를 수행하여 여전히 정확한지 확인하십시오. 아래에서 최신 답변을 확인하세요.


보다 나은?

MySQL은 웹 호스트에서 훨씬 더 일반적으로 제공됩니다.

PostgreSQL은 훨씬 더 성숙한 제품입니다.

"더 나은"질문에 대한 토론이 있습니다.

분명히,에 따라 이 웹 페이지에 동시 액세스 수준이 낮은 경우, MySQL은 빠르고, 많은있을 때 더 쓰기보다 읽습니다. 반면에로드 및 쓰기 / 읽기 비율이 증가함에 따라 확장 성이 낮습니다. PostgreSQL은 낮은 동시성 수준에서 상대적으로 느리지 만로드 수준이 증가하면 잘 확장되며 동시 액세스간에 충분한 격리를 제공하여 높은 쓰기 / 읽기 비율에서 속도 저하를 방지합니다. 이러한 것들은 조건에 매우 민감하기 때문에 여러 성능 비교와 연결됩니다.

따라서 결정 요인이 " 어느 것이 더 빠릅니까? " 라면 대답은 "상황에 따라 다릅니다. 정말 중요한 경우 두 가지 모두에 대해 응용 프로그램을 테스트하십시오. "그리고 정말로 관심이 있다면 두 명의 DBA (전문가 각 데이터베이스에서) 데이터베이스에서 쓰레기를 조정하도록 한 다음 선택하십시오. 좋은 DBA가 얼마나 비싸다는 것은 놀랍습니다 . 그리고 그들은 모든 센트의 가치가 있습니다.

중요 할 때.

아마도 그렇지 않을 것입니다. 그러니 사운드가 마음에 드는 데이터베이스를 선택하고 함께 사용하십시오. 더 많은 RAM과 CPU, 더 적절한 데이터베이스 디자인, 영리한 저장 프로 시저 트릭 등으로 더 나은 성능을 구매할 수 있습니다.이 모든 것이 MySQL 또는 PostgreSQL 중에서 선택하는 것보다 random-website-X에서 더 저렴하고 쉽습니다. , 값 비싼 DBA의 전문가 튜닝.


Joel은 또한 그 팟 캐스트에서 사람들이 MySQL이 쓰레기라고 말할 것이기 때문에 댓글이 다시 올 것이라고 말했습니다. Joel 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 통계 라이브러리와의 인터페이스 = debian / ubuntu에서 사용 가능한 PostgreSQL PL / R

3
Postgres는 또한 쉽고 저렴한 복제 기능을 제공합니다. 그것은 단지 아니에요 내장 반 다스에서 자신의 좋고 나쁜 부분에 각이 선택할 수 있기 때문에. 따라서 MySQL에 대한 평범한 복제를 하나 또는 PostgreSQL에 대한 여러 복제 중 하나 를 선택할 수 있습니다 . 당신의 선택.
Randal Schwartz

6
PostgreSQL 9.0+에는 설치가 매우 쉬운 바이너리 WAL 복제가 내장되어 있습니다.
Sean

1

글쎄, 나는 당신이 당신을 물기 위해 돌아올 것이기 때문에 과거의 개발 (빌드, 스테이징, 프로드)에서 다른 데이터베이스 브랜드를 사용해서는 안된다고 생각합니다.

내가 이해하는 방법에서 PostgreSQL은 더 '올바른'데이터베이스 구현이지만 mySQl은 덜 정확하지만 (적은 준수) 빠릅니다.

따라서 CRUD 응용 프로그램을 거의 작성하고 있다면 mySQL이 갈 길입니다. 데이터베이스에서 특정 기능이 필요한 경우 (확실하지 않은 경우) postgreSQL을 살펴볼 수 있습니다.


1

다른 서버에 상당히 분산 될 수있는 응용 프로그램을 작성하는 경우 MySQL은 이식성 때문에 PostgreSQL보다 많은 비중을 차지합니다. PostgreSQL은 만족스럽지 않은 웹 호스트에서 찾기가 어렵습니다. 대부분의 경우 PostgreSQL은 MySQL보다 느립니다. 특히 최종적으로 미세 조정에 관해서는 더욱 그렇습니다. 대체로 PostgreSQL에 짧은 시간 동안 기회를 주면 완전히 피하지 않고 판단을 내릴 수 있습니다.


1
나는 더 낮은 품질의 웹 호스트가 우리의 얼굴에 MySQL을 밀어 붙이는 대신 선택을 제공해야한다는 데 동의 할 것입니다. 그러나 공유 호스팅을 사용할 때 어쨌든 자비에 있습니다. 따라서 DBM 선택은 그다지 중요하지 않습니다.
unixman83

0

감사합니다. MySQL과 함께 Django를 사용했는데 괜찮습니다. 필요한 기능에서 데이터베이스를 선택하십시오. MySQL과 Postgres를 비교하기가 어렵습니다. Postgress와 SQl Server를 비교하는 것이 좋습니다.


0

안녕하세요.

PostgreSQL은 객체를 (작은) 지원하지만 본질적으로 관계형 데이터베이스입니다. 그것에서 약 페이지 :

PostgreSQL은 강력한 오픈 소스 관계형 데이터베이스 시스템입니다.


2
객체 관계형 데이터베이스 관리 시스템 ISA 관계형 데이터베이스 관리 시스템. PostgSQL 문서를 더 자세히 읽으면 PostgSql이 ORDBMS임을 알 수 있습니다. ORDBMS를 Objectivity / DB와 같은 ODBMS와 혼동하고있을 수 있습니다.
WolfmanDragon

-1

MySQL은 관계형 데이터베이스 관리 시스템 이고 PostgreSQL은 객체 관계형 데이터베이스 관리 시스템 입니다. PostgreSQL은 쿼리 작성 방법을 더 잘 제어 할 수 있으므로 C ++ 또는 Java 개발자에게 적합합니다. ORDBMS는 또한 우리에게 객체와 사용자 정의 유형을 제공합니다. SQL 쿼리 자체는 MySQL보다 ISO 표준에 훨씬 더 가깝습니다.
ORDBMS 또는 RDBMS가 필요합니까? 그러면 질문에 더 잘 대답 할 수 있습니다.


그것은 약간 지나치게 단순화 된 것입니다. ORDBMS가 필요하지 않다고해서 반드시 MySQL을 사용해야하는 것은 아닙니다. 다른 더 중요한 차이점이 있습니다.
Don Jones

1
당신이 올바른지. PostgreSQL 푸셔처럼 들리지 않으려 고합니다. 디자인이 진정한 객체 데이터베이스를 요구하지 않는 한 PostgreSQL 이외의 다른 것을 사용할 실제 이유는 없습니다. 나는 더 많은 사람들이 그것에 익숙한 것 외에는 MySQL에서 아무 의미가 없다고 생각합니다.
WolfmanDragon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.