Perbandingan Database Engine: MySQL vs PostgreSQL vs Oracle vs Microsoft SQL Server

Saat ini sedang mikir-mikir database mana yang paling cocok dengan aplikasi yang akan saya buat. Kebutuhan saya adalah: skalabilitas, biaya, dan performa. Skalabilitas menjadi prioritas pertama mengingat database aplikasi tersebut kemungkinan besar akan tumbuh pesat seiring pengguna dan data yang disimpan di dalamnya.

Setelah mengumpulkan dari berbagai sumber, berikut ini rangkuman yang dapat saya peroleh:

Operating System yang bisa menjalankan:

RDBMS Windows Mac OS X Linux BSD Unix
Microsoft SQL Server Ya
MySQL Ya Ya Ya Ya Ya
Oracle Ya Ya Ya Ya
PostgreSQL Ya Ya Ya Ya Ya

 

Lisensi

RDBMS Maintainer Lisensi
Microsoft SQL Server Microsoft Proprietary
MySQL Sun Microsystems (sekarang dibeli Oracle Corporation) GPL dan Proprietary
Oracle Oracle Corporation Proprietary
PostgreSQL PostgreSQL Global Development Group PostgreSQL licence (Free and Open Source)

 

Limitasi

RDBMS Max DB Size Max Table Size Max Row Size Max Column per Row Max Blob/Clob Size Max Char Size Max Number Size Min Date Value Max Date Value Max Column Name Size
Microsoft SQL Server 524 258 TB (32 767 files * 16 TB max file size) 524 258 TB Unlimited 30000 2 GB 2 GB 126 bits 0001 9999 128
MySQL Unlimited MyISAM storage limits: 256 TB; Innodb storage limits: 64 TB 64 kB 4096 4 GB (longtext, longblob) 64 kB (text) 64 bits 1000 9999 64
Oracle Unlimited (4 GB * block size per tablespace) 4 GB * block size (with BIGFILE tablespace) 8 kB 1000 Unlimited 4000 B 126 bits -4712 9999 30
PostgreSQL Unlimited 32 TB 1.6 TB 250-1600 depending on type 1 GB (text, bytea) – stored inline or 2 GB (stored in pg_largeobject) 1 GB Unlimited -4713 5874897 63

Setelah melihat rangkuman di atas, Microsoft SQL Server mempunyai limitasi yang lebih baik, namun sayang harus dijalankan di Windows dan ada biaya lisensi. Oracle sebenarnya skalable, namun  Max Row Size hanya 8kB. Saya belum tahu apa aja yang dihitung dalam max row size oracle ini. Mysql cukup menjanjikan walaupun hanya mempunyai max row size 64kB, namun seperti dalam dokumentasinya text dan blob disimpan terpisah sehingga tidak dalam perhitungan max row size tersebut.

Mysql lebih unggul 2 kali lipat dari PostgresSQL untuk max table size. namun PostgreSQL sepertinya lebih baik dari sisi performa dibanding MySQL jika mengelola database yang besar dan diakses oleh user yang banyak secara stimultan. Ini PR berikutnya untuk memutuskan apakah memakai MySQL atau PostgreSQL. Pencarian belum berakhir…

 

[UPDATE]

Saya mempunyai database MySQL dan Postgre yang sama- sama besar, kira-kira 10GB filesize nya. Dari sisi performance Postgres lebih stabil, sedangkan MySQL sering kehabisan memory. Untuk MySQL saya kasih solusi instan dengan menambah 2 Server masing-masing dengan 64GB RAM. Saya buat replikasi ke dua server tersebut, sehingga untuk baca (SELECT) bisa ditangani di replika. Sudah terlanjur pakai MySQL dan males merubah ke Postgres (karena bukan saya yg bikin aplikasinya, hehehe)

Setelah saya selidiki dari lognya (dengan mencatat slow query ke dalam log) terlihat bahwa MySQL sangat tidak optimized dalam query yang melibatkan subquery atau join pada tabel yang isinya banyak (sebuah tabel saya bisa berisi jutaan rows).

Sedangkan Postgres dengan RAM 16 GB masih anteng2 aja, padahal di server tersebut banyak sekali aplikasi macem-macem.

 

6 thoughts on “Perbandingan Database Engine: MySQL vs PostgreSQL vs Oracle vs Microsoft SQL Server”

  1. The conclusion:

    Postgres = For application with intensive join, subquery, transaction

    MySQL = For apllication with standard query

    Please check my [UPDATE]

Leave a Reply

Your email address will not be published. Required fields are marked *