2011年9月12日 星期一

MySQL vs. PostgreSQL

去年的隨手心得, 記在這備忘。主要是參考《MySQL vs PostgreSQL - WikiVS》 2010-09 的版本, 後來情況應該也有些變化。另外, 很多東西還是要自己測過才準, 後來和一些很熟 DB 的前輩聊, 發覺實際情況還是和看到的有些出入。需求不同, 又有太多細節可以調整了。

後來覺得選用 MySQL 的好處是:

  • 資源最豐富, 有書有文件, 也有一堆顧問公司 (如 Percona)
  • 有許多大公司實際執行到海量的實例, 不用擔心會流量會卡住 (雖說大部份時候應該要先擔心服務不夠好, 流量太小)
  • 有些 syntax sugar 或特制功能很好用, 像是 insert ... on duplicate update , 或 insert ignore
  • 有趣的是, 該文認為 MySQL 比 PostgreSQL 流行的原因之一, 是因為 PostgreSQL 沒法限制各個 database 的大小, 對於商用服務來說, 這點很重要 (商用服務會在意限制資源、管理權限等, open source 專案先以個人需求為主, 一開始大概都不會重視這些吧)

備忘

fcamel 2010-09-01 19:54:43
MySQL vs. PostgreSQL, 有這種對照文真不錯, 書上有看過的相關觀念可以重新消化一次, 之前沒看過的....在這也有看沒感覺
MySQL vs PostgreSQL - WikiVS
MySQL vs PostgreSQLFrom WikiVS, the open comparison websiteJump to: navigation, search MySQL Postgr
發表回應
1

fcamel 2010-09-01 19:55:43
PostgreSQL 只有一個 engine, 一般來說在大量同時寫入下會比 MySQL 搭各種 engine 快
2

fcamel 2010-09-01 19:56:36
PostgreSQL 比較穩, RDBMS 功能較齊全, 這點在 stackoverflow 上可找出一卡車支持者。也可找出一卡車 MySQL 使用者說他們遇到 DB 炸了多少次
3

fcamel 2010-09-01 19:57:24
MySQL + MyISAM 有無敵快的 count, 因為它沒 MVCC, 可以視情況直接 count index 而不用取 data rows。又因為沒 MVCC, 可以安心地 cache count
4

fcamel 2010-09-01 19:58:58
8.x 的 PostgreSQL 沒有 Insert Ignore / Replace
5

fcamel 2010-09-01 20:00:31
MySQL + MyISAM 在 read-only 或低頻率寫入的情況下是超級快, 因為它沒 constraint, 沒 MVCC。無賴戰法: 我就什麼功能都沒有, 但是只讀不寫的話, 我超快的哦!!
6

fcamel 2010-09-01 20:00:49
剛好我們現在正好只需要這種無賴戰法 XD
7

fcamel 2010-09-01 20:06:12
mysql 內建 replication 機制, 效率比 PostgreSQL 好 (?)
8

fcamel 2010-09-01 20:07:41
Ubuntu 8.04 的 mysql 版本有點舊, 只到 5.0.51a, 之後有幾版大幅提昇速度, 5.1 又有多 sharding 的樣子。
9

fcamel 2010-09-01 20:10:56
PostgrelSQL 有 Bitmap Indexes, 可以合併兩個以上的 indexes, 之後來看看這是啥。一直很好奇怎麼做才能同時用兩個 indexes
10

fcamel 2010-09-01 20:13:45
MySQL 有 covering index, 而 PostgrelSQL 沒有, 令我滿意外的, 原以為 index 那區 MySQL 會兵敗如山倒
11

fcamel 2010-09-01 20:15:14
PostgreSQL 支援 expression indexes, 意思是也可以查 "%keyword%" 嗎? 太神奇了! 之後來查查這是啥
12

fcamel 2010-09-01 20:19:32
這個有意思: "In PostgreSQL there is no built-in mechanism for limiting database size. This is the main reason why the most of the web hosting companies are using MySQL. Also, PostgreSQL doesn't have scheduled procedures. "
13

fcamel 2010-09-01 20:20:32
結果 PostgreSQL 無法流行的主因是沒做這種看似不重要的功能嗎? XD
14

fcamel 2010-09-01 20:23:40
天啊...., 難怪有人提到他比較喜歡 PostgreSQL 的 license, MySQL client library 是 GPL 非 LGPL!! 若沒和 Sun (現在是 Oracle?) 買授權, 就得 open source, 太可怕了...
15

fcamel 2010-09-01 20:30:10
看完兩者的討論後還真想用 PostgreSQL 啊, 考量現況還是繼續用 MySQL 比較務實 Orz
16

fcamel 2010-09-01 20:41:29
stackoverflow 有人提到用 PostgreSQL 加 column 似乎不用鎖住 table, 他們之前用 mysql + replication 的結果, 就不敢加 column, 只好另開 table 用 join 取資料
17

榮尼王 2010-09-01 20:53:54
mysql 加上 master-master 架構的話,alter table 就隨便了啊
18

fcamel 2010-09-01 21:04:56
soga, 還沒看深, 果然各種問題都有一定的配套解法, 謝啦。
 回應

沒有留言:

張貼留言

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...