postgresql과 mysql의 차이점은 무엇입니까

青灯夜游
풀어 주다: 2022-04-12 14:43:58
원래의
30906명이 탐색했습니다.

차이점: 1. MySQL은 명령을 실행하여 인스턴스를 시작하는 반면 PG는 프로세스를 실행하여 시작합니다. 2. PG는 구체화된 뷰를 지원하지만 MySQL은 구체화된 뷰를 지원하지 않습니다. 3. PG는 확장성을 지원하지 않습니다. 높은 확장성 4. PG 저장 프로시저의 기능 지원은 MySQL보다 우수하며 실행 계획을 로컬로 캐시하는 기능이 있습니다.

postgresql과 mysql의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

MySQL

MySQL은 1994년에 처음 등장한 비교적 초기 버전입니다. 가장 인기 있는 오픈 소스 데이터베이스라고 주장합니다. MySQL은 LAMP(Linux, Apache 및 Perl/PHP/Python을 포함한 웹 개발용 소프트웨어 패키지)의 M입니다. LAMP 스택에 구축된 대부분의 애플리케이션은 WordPress, Drupal, Zend 및 phpBB와 같은 잘 알려진 애플리케이션을 포함하여 MySQL을 사용합니다.

처음부터 MySQL은 빠른 ISAM(Index Sequential Access Method)을 사용하고 ACID를 지원하지 않는 빠른 웹 서버 백엔드로 설계되었습니다. 신속한 초기 개발 이후 MySQL은 더 많은 스토리지 엔진을 지원하기 시작했으며 InnoDB 엔진을 통해 ACID를 구현했습니다. MySQL은 또한 다른 스토리지 엔진을 지원하고, 임시 테이블 기능(MEMORY 스토리지 엔진 사용)을 제공하며, MyISAM 엔진을 통해 고속 읽기 데이터베이스를 구현합니다. 또한 다른 핵심 스토리지 엔진과 타사 엔진도 있습니다.

MySQL에는 고품질 무료 참조 설명서, 서적, 온라인 문서는 물론 Oracle 및 타사 공급업체의 교육 및 지원을 포함하여 매우 풍부한 문서가 있습니다.

MySQL은 최근 몇 년 동안 소유권 변경과 매우 극적인 사건을 경험했습니다. 원래 MySQL AB가 개발한 후 2008년에 Sun에 10억 달러에 매각되었습니다. Sun은 2010년에 Oracle에 인수되었습니다. Oracle은 Standard, Enterprise, Classic, Cluster, Embedded 및 Community 등 다양한 버전의 MySQL을 지원합니다. 그 중 일부는 무료로 다운로드할 수 있고 다른 일부는 유료입니다. 핵심 코드는 GPL 라이센스를 기반으로 하며, GPL 라이센스를 사용하고 싶지 않은 개발자와 제조업체를 위해 상용 라이센스도 제공됩니다.

이제 여러 핵심 MySQL 개발자가 MySQL 포크를 출시했기 때문에 원본 MySQL 코드를 기반으로 선택할 수 있는 데이터베이스가 더 많이 있습니다. 최초의 MySQL 창시자 중 한 명인 Michael "Monty" Widenius는 MySQL을 Sun에 판매한 것을 후회하는 듯하여 GPL에 따라 무료로 라이센스되는 자신만의 MySQL 포크인 MariaDB를 개발했습니다. 잘 알려진 MySQL 개발자 Brian Aker가 만든 포크인 Drizzle은 광범위하게 다시 작성되었으며 특히 다중 CPU, 클라우드, 네트워크 애플리케이션 및 높은 동시성에 최적화되었습니다.

PostgreSQL

PostgreSQL(줄여서 PG)은 세계에서 가장 발전된 오픈 소스 데이터베이스라고 자부합니다. PostgreSQL의 일부 팬은 이것이 Oracle과 비슷하지만 높은 가격표와 오만한 고객 서비스가 없다고 말합니다. Ingres 데이터베이스의 후속 제품으로 원래 1985년 버클리 캘리포니아 대학교에서 개발된 오랜 역사를 가지고 있습니다.

PostgreSQL은 전 세계 1,000명 이상의 기여자가 유지 관리하는 완전한 커뮤니티 중심 오픈 소스 프로젝트입니다. 다양한 커뮤니티 에디션, 상업용 에디션, 엔터프라이즈 에디션을 제공하는 MySQL과 달리 완전한 기능을 갖춘 단일 버전을 제공합니다. PostgreSQL은 자유로운 BSD/MIT 라이센스에 따라 라이센스가 부여되며 조직은 저작권 표시를 제공하는 한 코드를 사용, 복사, 수정 및 재배포할 수 있습니다.

신뢰성은 PostgreSQL의 최우선 순위입니다. 높은 트랜잭션, 미션 ​​크리티컬 애플리케이션을 지원하는 견고한 품질과 사운드 엔지니어링으로 잘 알려져 있습니다. PostgreSQL의 문서는 매우 훌륭하며, 무료 온라인 매뉴얼과 이전 버전에 대한 보관된 참조 매뉴얼이 많이 있습니다. PostgreSQL의 커뮤니티 지원은 독립 공급업체의 상업적 지원과 마찬가지로 훌륭합니다.

데이터 일관성과 무결성도 PostgreSQL의 최우선 기능입니다. PostgreSQL은 ACID 기능을 완벽하게 지원하고 데이터베이스 액세스에 대한 강력한 보안을 보장하며 Kerberos 및 OpenSSL과 같은 엔터프라이즈 보안 도구를 최대한 활용합니다. 자신의 비즈니스 규칙에 따라 데이터 품질을 보장하기 위해 자체 검사를 정의할 수 있습니다.

많은 관리 기능 중에서 특정 시점 복구(PITR)는 핫 백업 및 스냅샷을 생성하고 복구 실패에 대해 복원하는 기능을 제공하는 유연한 고가용성 기능입니다. 그러나 이것이 PostgreSQL의 전부는 아닙니다. 이 프로젝트는 또한 고가용성, 로드 밸런싱, 복제 등을 달성하기 위해 PostgreSQL을 관리하는 여러 가지 방법을 제공하므로 특정 요구 사항에 맞는 기능을 사용할 수 있습니다.

postgresql과 mysql의 차이점

Features MySQL PostgreSQL
Instance MySQL 명령(mysqld)을 실행하여 인스턴스를 시작합니다. 인스턴스는 하나 이상의 데이터베이스를 관리할 수 있습니다. 서버는 여러 개의 mysqld 인스턴스를 실행할 수 있습니다. 인스턴스 관리자는 mysqld의 개별 인스턴스를 모니터링할 수 있습니다.
Postmaster 프로세스(pg_ctl)를 실행하여 인스턴스를 시작합니다. 인스턴스는 클러스터를 형성하는 하나 이상의 데이터베이스를 관리할 수 있습니다. 클러스터는 설치 중에 초기화되는 디스크의 영역으로, 모든 데이터가 저장되는 디렉터리로 구성됩니다. initdb를 사용하여 첫 번째 데이터베이스를 만듭니다. 하나의 머신에서 여러 인스턴스를 시작할 수 있습니다.
데이터베이스 데이터베이스는 인스턴스의 다른 데이터베이스와 별도의 엔터티인 개체의 명명된 컬렉션입니다. MySQL 인스턴스의 모든 데이터베이스는 동일한 시스템 카탈로그를 공유합니다. 데이터베이스는 개체의 명명된 모음이며 각 데이터베이스는 다른 데이터베이스와 별개의 개체입니다. 각 데이터베이스에는 자체 시스템 카탈로그가 있지만 모든 데이터베이스는 pg_databases를 공유합니다.
Data buffer innodb_buffer_pool_size 구성 매개변수를 통해 데이터 버퍼를 설정합니다. 이 매개변수는 InnoDB가 테이블 데이터와 인덱스를 캐시하는 데 사용하는 메모리 버퍼의 바이트 수입니다. 전용 데이터베이스 서버에서 이 매개변수는 머신 물리적 메모리의 최대 80%까지 설정할 수 있습니다. Shared_buffers 캐시. 기본적으로 64개의 버퍼가 할당됩니다. 기본 블록 크기는 8K입니다. postgresql.conf 파일에서 shared_buffers 매개변수를 설정하여 버퍼 캐시를 업데이트할 수 있습니다.
데이터베이스 연결 클라이언트는 CONNECT 또는 USE 문을 사용하여 데이터베이스에 연결해야 하며, 이때 데이터베이스 이름을 지정해야 하며 사용자 ID와 비밀번호도 지정할 수 있습니다. 역할을 사용하여 데이터베이스의 사용자 및 사용자 그룹을 관리합니다. 클라이언트는 연결 문을 사용하여 데이터베이스에 연결합니다. 이때 데이터베이스 이름을 지정해야 하며 사용자 ID와 비밀번호도 지정할 수 있습니다. 역할을 사용하여 데이터베이스의 사용자 및 사용자 그룹을 관리합니다.
Authentication MySQL은 데이터베이스 수준에서 인증을 관리합니다. 기본적으로 비밀번호 인증만 지원됩니다. PostgreSQL은 다양한 인증 방법을 지원합니다: 신뢰 인증, 비밀번호 인증, Kerberos 인증, ID 기반 인증, LDAP 인증, PAM 인증
Encryption 비밀번호는 테이블에서 지정할 수 있습니다. 데이터 암호화 수준을 인증합니다. AES_ENCRYPT 및 AES_DECRYPT 함수를 사용하여 열 데이터를 암호화하고 해독할 수도 있습니다. 네트워크 암호화는 SSL 연결을 통해 달성할 수 있습니다. pgcrypto 라이브러리의 함수를 사용하여 열을 암호화/복호화할 수 있습니다. 네트워크 암호화는 SSL 연결을 통해 달성할 수 있습니다.
Audit 은 쿼리 로그를 grep할 수 있습니다. 감사를 위해 테이블에서 PL/pgSQL 트리거를 사용할 수 있습니다.
백업, 복구 및 로깅 InnoDB는 미리 쓰기 로깅을 사용합니다. 온라인 및 오프라인 전체 백업은 물론 충돌 및 트랜잭션 복구도 지원합니다. 핫 백업을 지원하려면 타사 소프트웨어가 필요합니다. 데이터 디렉터리의 하위 디렉터리에 미리 쓰기 로그를 유지합니다. 온라인 및 오프라인 전체 백업은 물론 충돌, 특정 시점 및 트랜잭션 복구를 지원합니다. 핫 백업을 지원할 수 있습니다.
Constraints 기본 키, 외래 키, 고유 및 null이 아닌 제약 조건을 지원합니다. 검사 제약 조건이 해결되었으나 시행되지는 않습니다. 기본 키, 외래 키, 고유, Null이 아닌 제약 조건 및 검사 제약 조건을 지원합니다.
저장 프로시저 및 사용자 정의 함수 는 CREATE PROCEDURE 및 CREATE FUNCTION 문을 지원합니다. 저장 프로시저는 SQL 및 C++로 작성할 수 있습니다. 사용자 정의 함수는 SQL, C, C++로 작성할 수 있습니다. 별도의 저장 프로시저 없이 모두 함수를 통해 구현됩니다. 사용자 정의 함수는 PL/pgSQL(특수 절차 언어), PL/Tcl, PL/Perl, PL/Python, SQL 및 C로 작성할 수 있습니다.
Trigger 는 행 전 트리거, 행 후 트리거 및 문 트리거를 지원합니다. 트리거 문은 절차적 언어 복합 문으로 작성됩니다. 행 전 트리거, 행 후 트리거, 명령문 트리거를 지원하며 트리거 프로세스는 C로 작성되었습니다.
시스템 구성 파일 my.conf Postgresql.conf
데이터베이스 구성 my.conf Postgresql.conf
클라이언트 연결 파일 my.conf pg_hba.conf
XML 지원 제한된 XML 지원. 제한된 XML 지원.
데이터 액세스 및 관리 서버 OPTIMIZE TABLE - 사용하지 않는 공간을 회수하고 데이터 파일 조각화 제거
myisamchk -analyze - 쿼리 최적화 프로그램(MyISAM 스토리지 엔진)에서 사용하는 통계 업데이트
mysql——명령줄 도구
MySQL Administrator——클라이언트 GUI 도구
Vacuum——사용되지 않은 공간 회수
Analyze——사용된 쿼리 최적화 프로그램 업데이트
psql 통계 - 명령줄 도구
pgAdmin - 클라이언트 GUI 도구
동시성 제어 은 테이블 수준 및 행 수준 잠금을 지원합니다. InnoDB 스토리지 엔진은 READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ 및 SERIALIZABLE을 지원합니다. SET TRANSACTION ISOLATION LEVEL 문을 사용하여 트랜잭션 수준에서 격리 수준을 설정합니다. 테이블 수준 및 행 수준 잠금을 지원합니다. 지원되는 ANSI 격리 수준은 커밋된 읽기(기본값 - 쿼리가 시작될 때 데이터베이스의 스냅샷을 볼 수 있음) 및 직렬화(반복 읽기와 유사 - 트랜잭션이 시작되기 전에 커밋된 결과만 볼 수 있음)입니다. SET TRANSACTION 문을 사용하여 트랜잭션 수준에서 격리 수준을 설정합니다. SET SESSION을 사용하여 세션 수준에서 설정합니다.
지원되는 플랫폼 프로그래밍 언어 지원. 구체화된 뷰데이터 백업 확장성 액세스 방법커뮤니티 지원Security

MySQL에 비해 PostgreSQL의 장점

  • SQL의 표준 구현이 MySQL보다 우수하고 함수 구현이 더 엄격합니다.

  • 저장 프로시저의 기능 지원이 MySQL보다 우수하며 로컬 캐시가 있습니다. 실행 계획 기능;

  • 테이블 연결에 대한 완벽한 지원, 완벽한 최적화 기능, 지원되는 다양한 인덱스 유형 및 강력하고 복잡한 쿼리 기능

  • PG 메인 테이블은 힙 테이블에 저장되며 MySQL은 인덱스를 사용하여 테이블을 구성합니다. .MySQL보다 더 큰 데이터 볼륨을 지원할 수 있습니다.

  • PG의 1차 및 2차 복제는 물리적 복제입니다. MySQL의 binlog 기반 논리적 복제에 비해 데이터 일관성이 더 안정적이고 복제 성능이 더 높으며 호스트 성능에 미치는 영향이 적습니다.

  • MySQL의 스토리지 엔진 플러그인 메커니즘에는 복잡한 잠금 메커니즘이 동시성에 영향을 미치는 문제가 있지만 PG는 존재하지 않습니다.

PG에 비해 MySQL의 장점:

  • innodb의 롤백 세그먼트 기반 MVCC 메커니즘은 PG의 새 데이터와 이전 데이터가 함께 저장되는 XID 기반 MVCC 메커니즘보다 우수합니다. 새로운 데이터와 기존 데이터는 함께 저장되며 VACUUM을 정기적으로 트리거해야 하므로 중복 IO 및 데이터베이스 개체 잠금 오버헤드가 발생하여 데이터베이스의 전체 동시성 기능이 저하됩니다. 게다가 VACUUM이 제때 정리되지 않으면 데이터 확장이 발생할 수 있습니다.

  • MySQL은 인덱스 구성 테이블을 사용합니다. 이 저장 방법은 기본 키 일치를 기반으로 한 쿼리 및 삭제 작업에 매우 적합합니다.

  • MySQL의 최적화 프로그램은 비교적 간단하며 시스템 테이블, 연산자 및 데이터 유형의 구현이 매우 간소화되어 간단한 쿼리 작업에 매우 적합합니다.

  • MySQL 파티션 테이블 구현; 이는 주로 상속 테이블을 기반으로 한 PG의 파티션 구현보다 낫습니다. 이는 파티션 수가 수만 개에 도달할 때 처리 성능의 큰 차이에 반영됩니다.

  • MySQL의 스토리지 엔진 플러그인 메커니즘은 애플리케이션 시나리오를 더욱 광범위하게 만듭니다. 예를 들어 innodb는 트랜잭션 처리 시나리오에 적합할 뿐만 아니라 myisam은 정적 데이터 쿼리 시나리오에도 적합합니다.

【관련 추천: mysql 비디오 튜토리얼

VS PostgreSQL MySQL
Open Source PostgreSQL은 PostgreSQL 라이선스(무료 오픈 소스 라이선스)가 적용되는 무료 오픈 소스 시스템입니다. MySQL은 Oracle의 제품이며 사용자가 사용할 수 있도록 여러 유료 버전을 제공합니다.
Management PostgreSQL은 전 세계 사용자가 개발한 제품입니다. MySQL은 GNU General Public License 및 다양한 독점 계약에 따른 제품입니다. 용어
성능 PostgreSQL은 높은 읽기 및 쓰기 속도가 필요한 대규모 시스템에 사용하기에 적합합니다. MySQL은 주로 데이터 트랜잭션을 위한 데이터베이스만 필요한 웹 애플리케이션에 사용됩니다.
ACID 따르기 PostgreSQL은 처음부터 끝까지 ACID 원칙을 따르고 요구 사항이 충족되도록 보장합니다. MySQL은 InnoDB 및 NDB 클러스터 스토리지 엔진을 사용할 때만 ACID를 준수합니다.
SQL 호환성 "문서에 따르면 PostgreSQL은 대부분의 SQL과 호환됩니다. PostgreSQL은 SQL:2011의 대부분의 기능을 지원합니다. 핵심 일관성에 필요한 179개의 필수 기능 중 PostgreSQL은 최소 160개와 호환됩니다. "문서에 따르면 MySQL은 SQL과 부분적으로 호환됩니다. 이 제품의 주요 목표 중 하나는 SQL 표준의 요구 사항을 충족하기 위해 지속적으로 열심히 노력하는 것입니다. 그러나 속도나 안정성을 희생하지 않습니다. 많은 사용자 기반에서 MySQL 서버의 가용성이 크게 향상된다면 SQL 확장 또는 비SQL 기능에 대한 지원을 추가할 수 있습니다.
Linux, Windows(Win2000 SP4 이상)에서 실행 가능 ), FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, IRIX, Solaris 및 Tu64도 지원합니다. 거대 기술 HP가 개발한 HP-UX OS와 오픈 소스 Unix OS도 지원합니다. MySQL은 Oracle Solaris, Microsoft Windows, Linux Mac OS X에서 실행될 수 있습니다. MySQL은 오픈 소스 FreeBSD OS에 대한 지원을 확장합니다
PostgreSQL은 C 언어로 작성되었으며 여러 프로그래밍 언어, 가장 중요한 C/C++, Delphi, JavaScript, Java, Python, R, Tcl, Go를 지원합니다. , Lisp, Erlang 및 .Net. PostgreSQL은 C 및 C++로 작성되었으며 C/C++, Erlang, PHP, Lisp 및 Go, Perl, Java, Delphi, R 및 Node.js를 지원합니다
PostgreSQL은 구체화된 뷰를 지원합니다 MySQL은 구체화된 뷰를 지원하지 않습니다
PostgreSQL은 기본 및 보조 복제를 지원하며 타사 확장 기능을 구현하여 다른 유형의 복제도 처리할 수 있습니다 MySQL 지원 각 노드가 마스터 노드이고 데이터를 업데이트할 수 있는 권한을 갖는 마스터-대기 복제
PostgreSQL은 확장성이 뛰어나 데이터 유형, 연산자, 인덱스 유형 및 함수 언어를 추가하고 소유할 수 있습니다. MySQL은 확장성을 지원하지 않습니다.
PostgreSQL은 모든 표준을 지원합니다. MySQL은 모든 표준을 지원합니다.
PostgreSQL은 기존 기능을 개선하는 데 도움이 되는 활발한 커뮤니티 지원을 갖추고 있으며, 창의적인 커미터들은 최신 기능과 최대 보안 데이터베이스로 데이터베이스가 최첨단 상태를 유지하도록 열심히 노력하고 있습니다. MySQL에는 대규모 팔로어 커뮤니티도 있습니다. 특히 Oracle에 인수된 후 이러한 커뮤니티 기여자는 주로 일부 새로운 기능에 중점을 두고 기존 기능을 유지합니다.
PostgreSQL은 클라이언트/서버 통신을 암호화하기 위한 연결에 기본 SSL 지원을 제공합니다. PSQL에는 행 수준 보안도 있습니다. MySQL은 매우 안전하며 다양한 보안 기능을 포함합니다.

위 내용은 postgresql과 mysql의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿