Mysql

Postgresql vs MySQL - 哪個更適合連接查詢和寫入數據(插入)

  • September 4, 2013

我必須設計一個數據庫,該數據庫最終將在一個表中包含 50M 條記錄(會有其他記錄較少的表)。我更關心連接查詢和將數據(插入)寫入數據庫。將有更少的更新和刪除查詢。

我已經閱讀了這篇關於 Postgresql 與 MySQL 的性能比較的文章。

我也瀏覽了以下連結。

https://stackoverflow.com/questions/8181604/postgres-9-1-vs-mysql-5-6-innodb

https://stackoverflow.com/questions/110927/would-you-recommend-postgresql-over-mysql

https://stackoverflow.com/questions/724867/how-different-is-postgresql-to-mysql

MySQL 與 PostgreSQL 維基

MySQL vs PostgreSQL:為什麼 MySQL 優於 PostgreSQL

我的問題是stackoverflow上的一些連結已經過時了。有些人說Mysql更好,反之亦然。

由於我更關心連接查詢和將數據寫入數據庫,這對我來說更好嗎?Postgresql vs MySQL?我應該採取什麼方法來設計這樣的數據庫?

鑑於此,請不要將其視為另一個 Postgresql vs MySQL 問題。我已經完成了我的研究,我只關心連接查詢和將數據寫入數據庫場景。我還了解到 PostgreSQL 更適合 GIS 數據。.

數據庫不同。一般來說,答案很大程度上取決於您的具體查詢。就一般案例而言,出於幾個原因,我希望 PostgreSQL 性能更好,但在某些情況下,我希望 MySQL 性能更好。

在 PostgreSQL 中,所有表都是堆表。在 MySQL 中,所有 innodb 表都是 btree 索引,有效負載中包含元組。這意味著主鍵查找在 MySQL 上更快,但在 PostgreSQL 上一般查詢更快。這也意味著您通常需要在 MySQL 上使用更多索引,這會減慢寫入速度。

例如,我希望以下查詢在 MySQL 上比在 PostgreSQL 上執行得更好:

SELECT u.username, p.* 
 FROM users u
 JOIN preferences p ON u.id = p.user_id
WHERE u.id = 123;

如果兩個表共享相同的主鍵(u.id 和 p.user_id),那麼兩個表中都有數千行,依此類推。

另一方面,我希望以下查詢在 PostgreSQL 上比 MySQL 在一個太大而無法放入記憶體、非記憶體數據、正確索引、合適大小的表等的數據庫中執行得更好:

SELECT c.legal_name, a.*
 FROM company c
 JOIN address a on a.company_id = c.id
WHERE a.zip_code like '95%' and country = 'us';

在這種情況下,您必須使用其他索引,這意味著 MySQL 上有大量額外的隨機磁碟 I/O。

我期望的第二個問題是寫入性能。我希望 PostgreSQL 通常會在這裡獲勝,因為堆表允許在任何方便的地方進行插入,並且維護的索引更少也會有所幫助。

引用自:https://dba.stackexchange.com/questions/49232