MySQL có tốt hơn PostgreSQL không?


8

Tôi biết câu hỏi nghe có vẻ khiêu khích, nhưng thực sự không phải vậy. Gần đây tôi thấy MySQL bị giới hạn trong rất nhiều lĩnh vực và ngày càng thích PostgreSQL. Nó có quy mô tốt hơn rất nhiều và nó tôn trọng các tiêu chuẩn SQL hơn rất nhiều so với MySQL.

Mặc dù vậy, tôi vẫn chưa quen với thế giới PostgreQuery và vì tôi sẵn sàng rời khỏi MySQL cho tất cả các dự án trong tương lai của tôi, điều tôi muốn biết là: có bất kỳ tính năng cụ thể nào của MySQL mà nó được thực hiện tốt hơn không hiệu suất cao hoặc thân thiện với người dùng hơn, v.v.) so với PostgreSQL?

Tôi đang tự hỏi những gì tôi sẽ bỏ lỡ từ MySQL. Tôi đã thấy rằng các trường AUTO_INCREMENT trong MySQL tiện dụng hơn SEQUENCES trong PostgreQuery và việc triển khai trong Windows trước đây có vấn đề (không còn là vấn đề nữa. Không bao giờ là vấn đề đối với tôi).

Còn gì nữa không


Đây là một sự tò mò của các loại: stackoverflow.com/questions/2221787/ từ
Paul


Tôi ghét mysql, nhưng nó làm MERGE / UPSERT dễ dàng hơn PG và tôi thấy các trường phân biệt chữ hoa chữ thường gây khó chịu
Neil McGuigan

Câu trả lời:


3

Bạn rõ ràng đang tiếp cận điều này từ góc độ nhà phát triển, vì vậy bạn có thể tìm thấy nhiều câu trả lời hữu ích hơn tại SO.

Từ góc độ quản trị:
- Sao chép (HA)
- Sao chép (Thu nhỏ *)
- Sao chép (Sao lưu)
- Hỗ trợ ứng dụng
- Kích thước và độ sâu của cộng đồng (Tài liệu, Hỗ trợ)
- Cơ sở hiện có / công việc có sẵn

* Lưu ý bạn đề cập đến postgrestỷ lệ tốt hơn. chia tỷ lệ có nghĩa là một cái gì đó khác với mọi người, nhưng như một quy tắc chung, những thứ có đường dẫn để truyền tải trên nhiều máy chủ có quy mô tốt hơn những thứ không có.


Tôi cũng quan tâm đến các khía cạnh hành chính. Tôi không chắc chắn nơi để đăng này. BTW bạn đúng về quy mô. Theo quy mô tốt hơn tôi thực sự có nghĩa là, trên một máy duy nhất, không phải trên cụm. MySQL có rất ít hiệu suất đạt được trên các hệ thống đa lõi và ngày nay đa lõi là chuẩn mực. Ngoài ra, tôi đã thấy MySQL chuyển từ hiệu năng tốt sang gần như vô dụng khi khối lượng công việc tăng lên và ấn tượng là postgresql sẽ xử lý tải tốt hơn, nhưng tôi hiểu điều này có thể gỡ lỗi và nên được hỏi tốt hơn. BTW, các đối số nhân rộng là giá trị được xem xét.
Massimiliano Torromeo

1
MySQL từng có rất ít mức tăng hoàn hảo trên đa lõi, nhưng nếu bạn đang chạy bản dựng 5.0 được vá tốt, gần như mọi bản dựng 5.1, bản dựng innodb-plugin (/ xtradb) hoặc bản dựng 5.4 không còn đúng nữa. Không cố gắng để đối đầu nhưng sự chậm chạp của mysecececec của bạn gần như chắc chắn đã được giải quyết, và các postgres "ấn tượng" của bạn sẽ xử lý nó tốt hơn là một giả định trần trụi. Điểm mấu chốt ở đây là, postgres so với mysql là thứ bạn có thể nói rất nhiều về quan điểm phát triển - ngụy biện, nhưng từ góc độ hoạt động / kinh doanh, vụ việc đã bị đóng cửa nhiều năm trước.
cagenut

Tất nhiên, tôi đã chỉ định đó chỉ là một ấn tượng bởi vì nếu tôi không thực sự thử phục vụ cùng một dữ liệu trong cùng một tải thì tôi không thể chắc chắn, và tôi biết tôi không thực sự chứng minh điều gì. Cảm ơn đã làm rõ những lợi ích mới nhất của MySQL.
Massimiliano Torromeo

Tôi chỉ luôn luôn sử dụng loại "nối tiếp" trong postgres, tôi thấy nó xử lý tốt hơn "số nguyên auto_increment". Hay có lẽ bạn có ý gì khác?
ptman

3

COUNT (*) cũng chậm hơn nhiều với PSQL. Bạn phải tạo ra các kích hoạt cho loại chức năng này.


1
Thật thú vị, nhưng theo như tôi đã hiểu, điều này chỉ áp dụng cho các truy vấn COUNT (*) KHÔNG CÓ mệnh đề where trên công cụ MyISAM. Ngoài ra, nó thực hiện tương tự. Hoặc postgresql vẫn chậm hơn thậm chí so với InnoDB và MyISAM với mệnh đề where?
Massimiliano Torromeo

Ý bạn là như thế nào ? chọn tính ( ) từ foo; không hoạt động trong pssql? Mặc dù sự thật là Count ( ) chậm hơn trong postgres so với mysql, nhưng có một lý do cho điều đó và một cách giải quyết. Một cái nhìn tổng quan tốt có thể được tìm thấy tại wikivs.com/wiki/MySQL_vs_PostgreSQL
Sibster

1
Nó chậm hơn vì lý do tương tự như InnoDB của MySQL, đọc thêm tại đây: wikivs.com/wiki/MyQuery_vs_PostgreQuery#COUNT.28.2A.29
EarthMind

3
COUNT (*) chậm hơn do triển khai MVCC. Bạn đạt được về mặt hiệu suất đọc / ghi nhưng vì các giao dịch có thể ở nhiều trạng thái khác nhau, nên việc xác định số "thật" là gì trở nên khó khăn.
Avery Payne

2

Bởi vì Postgres thực hiện sao chép một cách hiệu quả cho mỗi bản cập nhật (để nó có thể xử lý các giao dịch), nếu bạn không cần giao dịch và thực hiện nhiều thao tác ghi liên quan đến việc đọc, MySQL sẽ không có chi phí mà PostgreS phải trả sẽ. (mỗi bản ghi cập nhật cần viết thêm, cập nhật chỉ mục, v.v.)


1
Tôi nghĩ bạn nên đủ điều kiện chỉ là một chút. Vâng, nó sẽ nhanh hơn, nhưng sẽ không có gì đảm bảo tính nhất quán trong dữ liệu của bạn. Điều này là hoàn toàn tốt cho một số tình huống (viết bình luận của người dùng từ một trang web) nhưng có thể gây ra vấn đề ở những người khác (đặt hàng "giỏ hàng" trực tuyến).
Avery Payne

1

Tôi có thể nghĩ về một điều còn thiếu từ PostgreSQL:

Tôi nghĩ rằng có một cái gì đó cũng với việc chặn, chèn hoặc cập nhật. Nhưng tôi dường như không thể nhớ nó thực sự là gì. :S


1

Trường auto_increment là 'tiện dụng' không liên quan lắm phải không? Oracle có trình tự và chắc chắn là cơ sở dữ liệu thương mại được sử dụng rộng rãi nhất trên thế giới.

Đây là một lượng thông tin khổng lồ được tìm thấy về cách PostgreSQL nếu có nhiều sự cố an toàn hơn, v.v. Tôi chỉ sẽ chỉ cho bạn này trang trên wiki PostgreSQL (không có nghi ngờ một ý kiến có màu, nhưng đó là những gì bạn đang tìm kiếm anyway).

Rất nhiều người đang đề cập trên trang này rằng MySQL thân thiện hơn với người mới. Vì thế? Giải thích cho tôi làm thế nào điều đó quan trọng trong một môi trường quan trọng sứ mệnh.


Theo trình tự, cách tiếp cận được sử dụng rộng rãi nhất không làm cho các trường auto_increment trở nên ít 'tiện dụng' hơn và nó có liên quan đến tôi vì tôi đang hỏi về sự khác biệt giữa 2 dbms trong câu hỏi. Nhưng điều này không ngăn cản tôi chuyển sang pssql nên tôi đồng ý rằng đó không phải là vấn đề thực sự.
Massimiliano Torromeo

1

MySQL thường được gọi là grep SQL . Đối với tôi (bây giờ tại thời điểm viết bài) nó trông khá giống PHP - khá vụng về, nhưng phổ biến.

Tôi đang tự hỏi những gì tôi sẽ bỏ lỡ từ MySQL.

Hãy thử đổi tên cơ sở dữ liệu ngay từ đầu. ;) Sau đó thêm (thiếu) các chỉ số có điều kiện.

PS Tôi có thể chỉ ra ít nhất một tính năng tốt không thể tranh cãi mà MySQL có - nó hỗ trợ các kiểu dữ liệu bảo tồn không gian khá nhỏ như byte (không dấu) chẳng hạn. Điều này có thể tiết kiệm rất nhiều RAM và dung lượng đĩa khi được sử dụng tương ứng. Nhưng có khá ít điều tốt đẹp để đề cập thêm, than ôi. Và so sánh trên các liên kết bạn đã được đưa ra là thực sự tiện lợi.


0

auto_increment rất tiện dụng cho đến khi bạn nhận ra rằng chúng hút các bảng có độ đồng thời chèn cực cao, tại thời điểm đó chúng trở thành cổ chai và bạn buộc phải thực hiện một chuỗi bằng bảng MyISAM.

Dù sao, để trả lời câu hỏi của bạn, điều lớn nhất mà MySQL đã có đối với nó là dễ dàng thiết lập sao chép cho phép nhân rộng chuỗi và đọc nô lệ. Tuy nhiên, Postgres sẽ có trong phiên bản tiếp theo, 9.0 (đã hết trạng thái alpha).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.