Proč srovnávat MySQL, PostgreSQL a Microsoft SQL Server
MySQL, PostgreSQL a Microsoft SQL Server (MS SQL) patří mezi nejrozšířenější relační databázové systémy. Každý z nich má odlišnou filozofii, licenční model, rozsah funkcí a provozní nároky. Následující srovnání se zaměřuje na architekturu, výkon, škálování, bezpečnost, nástroje a typické scénáře použití tak, aby bylo možné kvalifikovaně zvolit technologii pro konkrétní projekt či organizaci.
Architektura, transakce a MVCC
- MySQL: Standardem je InnoDB s MVCC, redo/undo logy a clustered indexem na primárním klíči. Podporuje transakční ACID, izolaci až do REPEATABLE READ (výchozí), gap zámky pro konzistenci.
- PostgreSQL: Čisté MVCC s verzemi řádků ukládanými přímo v tabulce; vyžaduje VACUUM/AUTOVACUUM pro úklid mrtvých záznamů (tuples). Velmi robustní transakční vrstva, savepointy a bohaté režimy zamykání.
- MS SQL Server: Implementuje row-versioning pro snížené blokace (RCSI/SI), tradičně READ COMMITTED jako výchozí izolaci. Silná integrace s tempdb a propracované řízení zdrojů (Resource Governor).
SQL kompatibilita, dialekty a rozšiřitelnost
- MySQL: SQL dialekt s některými historickými odchylkami; solidní podpora window functions, CTE a JSON funkcí. Procedury v syntaxi podobné SQL/PSM, triggery a events.
- PostgreSQL: Nejblíže ANSI SQL, bohaté CTE (rekurzivní), window functions, full-textové vyhledávání, range types. Rozšíření (PostGIS, TimescaleDB, pg_stat_statements, pgvector) a uživatelské typy/funkce v PL/pgSQL, PL/Python atd.
- MS SQL: Silný T-SQL (okna, pivot/unpivot, bohaté analytické funkce), CLR integrace a agent pro plánování úloh. Široké enterprise funkce (partitioned views, temporal tables).
Datové typy, JSON a nestrukturovaná data
- MySQL: Nativní JSON typ s indexací přes generated columns a functional indexes. Geodata přes MySQL Spatial (OpenGIS).
- PostgreSQL: JSONB s GIN/GiST indexy, operátory a bohatými funkcemi; hstore. Špičkový geospatial stack díky PostGIS.
- MS SQL: JSON v NVARCHAR s funkcemi (OPENJSON, JSON_VALUE), XML s XQuery, silná spatial podpora (geography/geometry) s pokročilými operacemi.
Indexy a optimalizátor dotazů
- MySQL: B-tree, hash (Memory), invisible indexes, covering indexy, histograms. Nákladový optimalizátor, per-table statistiky. InnoDB má clustered primární klíč.
- PostgreSQL: B-tree, GIN, GiST, SP-GiST, BRIN (pro velká časoprostorová data), partial a expression indexy, multikolumnové statistiky. Velmi vyspělý plánovač s EXPLAIN/ANALYZE.
- MS SQL: B-tree, columnstore (clustered/nonclustered) pro analytiku, filtered indexes, included columns. Špičkový optimalizátor, Query Store a adaptivní plány.
Particionace, škálování a paralelismus
- MySQL: Range/list/hash particionování na úrovni tabulek; paralelismus spíše omezený (per-query), replikace pro škálování čtení.
- PostgreSQL: Deklarativní particionování (range/list/hash), paralelní dotazy a vykonávání, FDW pro sharding a federaci; rozšíření (Citus) pro distribuované workloady.
- MS SQL: Nativní particionování s partition functions/schemes, paralelní plány, PolyBase/externí tabulky. V Enterprise edicích bohatý scale-up a scale-out ekosystém.
Replikace, vysoká dostupnost a zotavení
- MySQL: Asynchronní a semi-synchronní replikace (binlog), group replication/InnoDB Cluster, MySQL Router. GTID pro zjednodušení failoveru.
- PostgreSQL: WAL shipping, streaming replikace (sync/async), logical replication pro selektivní změny; řešení jako Patroni, pgPool-II, repmgr. Point-in-Time Recovery přes WAL archivy.
- MS SQL: Always On Availability Groups (synchronní/asynchronní, read-only sekundáry), Failover Cluster Instance, log shipping, replikace (snapshot/transactional/merge).
Zabezpečení, compliance a audit
- MySQL: Role, práva definované definer pro procedury, Transparent Data Encryption v placených edicích (MySQL Enterprise), audit log.
- PostgreSQL: Role a Row-Level Security, pgcrypto, nativní SASL/SCRAM autentizace, citlivá nastavení přes pg_hba.conf. Audit přes rozšíření (pgaudit).
- MS SQL: TDE, Always Encrypted, Dynamic Data Masking, Row-Level Security, certifikace FIPS/DoD v Enterprise prostředích, granulární audit a Policy-Based Management.
Nástroje, správa a ekosystém
- MySQL: MySQL Shell, Workbench; rozsáhlá komunita (Percona, MariaDB kompatibilita s odchylkami). Monitoring: PMM, VividCortex aj.
- PostgreSQL: psql, pgAdmin, psqlODBC, rozsáhlé open-source nástroje (Timescale, PostGIS, Patroni). Velmi aktivní rozšiřitelnost a standardní ovladače.
- MS SQL: SQL Server Management Studio (SSMS), Azure Data Studio, Agent, Profiler/Extended Events, integrované SSIS/SSAS/SSRS (on-prem).
Licencování a celkové náklady
- MySQL: Komunitní edice (GPLv2), Enterprise s placenou podporou a funkcemi (TDE, firewall, audit). Často nízký vstupní CAPEX.
- PostgreSQL: 100% open-source (PostgreSQL License, podobná BSD/MIT). Komerční podpora dostupná u poskytovatelů (EDB apod.).
- MS SQL: Edice Express/Developer zdarma (s omezeními), Standard/Enterprise na jádra s Software Assurance; vysoký CAPEX/OPEX, ale bohaté enterprise funkce a integrace.
Cloudové služby a provoz v cloudu
- MySQL: Managed varianty (Amazon RDS/Aurora MySQL, Azure Database for MySQL, Google Cloud SQL). Aurora přináší sdílené úložiště a rychlý failover.
- PostgreSQL: Amazon RDS/Aurora PostgreSQL, Azure Database for PostgreSQL (Flex Server), Google Cloud SQL/AlloyDB. AlloyDB a Aurora rozšiřují výkon a vysokou dostupnost.
- MS SQL: Azure SQL Database/Managed Instance, SQL na Azure VMs; bohaté PaaS funkce (automatické zálohy, škálování, Hyperscale).
Zálohování a obnova
- MySQL: mysqldump, mysqlpump, MySQL Enterprise Backup, fyzické snapshoty (LVM/ZFS). Obnova k času přes opětovné přehrání binlogu.
- PostgreSQL: pg_dump/pg_restore, základní záloha + WAL archivy, pgBackRest, barman; přesná obnova do bodu v čase (PITR).
- MS SQL: Full/diferenciální/log zálohy, tail-log restore, Recovery Models (Full/Bulk-Logged/Simple), DBCC pro integritu databáze.
Výkonové charakteristiky a typické workloady
- MySQL: Exceluje v čtecích OLTP s jednoduchými schématy a krátkými transakcemi; široce používaný v LAMP a e-commerce.
- PostgreSQL: Univerzální systém pro OLTP i pokročilejší analytiku založenou na transakcích (okna, CTE, JSONB, geografická data). Dobrá volba pro datově náročnější domény a rozšíření.
- MS SQL: Silný v enterprise OLTP/OLAP kombinaci; columnstore a integrace s Microsoft ekosystémem (Power BI, SSIS/SSAS) pro smíšené workloady.
Tabulkové srovnání klíčových vlastností
| Oblast | MySQL | PostgreSQL | MS SQL Server |
|---|---|---|---|
| Transakce/MVCC | InnoDB, REPEATABLE READ, gap locks | Čisté MVCC, AUTOVACUUM | RCSI/SI, robustní locking |
| Pokročilé SQL | CTE, okna (novější), JSON funkce | Široká podpora, rekurzivní CTE, rozšíření | Silný T-SQL, analytické funkce |
| Indexy | B-tree, invisible, histograms | B-tree, GIN/GiST/BRIN, partial/expression | B-tree, columnstore, filtered |
| Particionace | Tabulková (range/list/hash) | Deklarativní, bohatá | Enterprise-grade, schemes/functions |
| Replikace/HA | Async/semi, Group Replication | Streaming (sync/async), logical, Patroni | Always On AG, FCI, log shipping |
| JSON/NoSQL prvky | JSON typ, generated columns | JSONB + GIN, hstore | JSON v textu + funkce |
| Rozšiřitelnost | Omezenější | Velmi vysoká (extenze, typy, jazyky) | CLR, integrace MS stacku |
| Licencování | GPL (Community) / komerční (Enterprise) | Open-source (PostgreSQL License) | Komerční (per core), Express/Dev zdarma |
| Analytika | Základní (bez columnstore) | Pokročilé okna, extenze (Timescale) | Columnstore, SSAS/Power BI |
Bezpečnostní a provozní standardy
- Šifrování: Všechny tři podporují TLS; TDE je nejpohodlnější v MS SQL (nativně), v PostgreSQL a MySQL dostupné dle edice či nástrojů.
- RLS a maskování: PostgreSQL (RLS) a MS SQL (RLS + DDM) nabízejí granulární kontrolu; MySQL řeší většinou aplikačně nebo přes role a pohledy.
- Audit: MS SQL má detailní nativní audit; PostgreSQL a MySQL používají rozšíření či enterprise funkce.
DevOps, CI/CD a pozorovatelnost
- Automatizace schémat: Migrační nástroje (Flyway, Liquibase) podporují všechny tři; MS SQL navíc SSDT/DACPAC.
- Monitoring: PostgreSQL (pg_stat_* pohledy, Prometheus exportéry), MySQL (performance_schema, sys), MS SQL (DMV, Query Store, Extended Events).
- Testování výkonu: pgbench, sysbench, Replay nástroje pro MS SQL; doporučeno testovat s reálnými dotazy a daty.
Typické scénáře použití
- MySQL: Webové aplikace, e-commerce, CMS, mikroslužby s převahou čtení, jednoduché schéma a binlog replikace.
- PostgreSQL: Fintech, GIS, analytické OLTP, domény s komplexními datovými typy, datová platforma s rozšířeními.
- MS SQL: Enterprise aplikace na .NET, ERP/CRM, hybridní OLTP/OLAP, potřeba columnstore a těsné integrace s BI v Microsoft stacku.
Migrační poznámky a kompatibilita
- MySQL ↔ PostgreSQL: Rozdíly v typech (SERIAL vs. IDENTITY/GENERATED), funkcích a chování NULL. Pomůcky: pgloader, ora2pg (často i pro MySQL), vlastní skripty.
- MS SQL ↔ PostgreSQL: Odlišnosti T-SQL vs. PL/pgSQL, TOP vs. LIMIT, identita a sekvence; pomáhají migrační asistenti a FDW bridge.
- MS SQL ↔ My



























