Postgresql vs MySQL - 哪個更適合連接查詢和寫入數據(插入)
我必須設計一個數據庫,該數據庫最終將在一個表中包含 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 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 通常會在這裡獲勝,因為堆表允許在任何方便的地方進行插入,並且維護的索引更少也會有所幫助。