MySQL vs. PostgreSQL vs. MS SQL

MySQL vs. PostgreSQL vs. MS SQL

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, izolace do REPEATABLE READ (default), gap locks pro konzistenci.
  • PostgreSQL: Čisté MVCC s verzemi řádků ukládanými přímo v tabulce; vyžaduje VACUUM/AUTOVACUUM pro úklid mrtvých tuple. Velmi robustní transakční vrstvy, savepointy a bohaté locking režimy.
  • MS SQL Server: Implementuje row-versioning pro snížené blokace (RCSI/SI), tradičně READ COMMITTED jako default. 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 SQL/PSM-like syntaxi, triggery a events.
  • PostgreSQL: Nejblíže ANSI SQL, bohaté CTE (rekurzivní), window functions, full-text, range types. Extenze (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é analytic functions), CLR integrace a agent pro úlohy. Š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 přes 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. Cost-based optimalizátor, per-table statistiky. InnoDB má clustered PK.
  • PostgreSQL: B-tree, GIN, GiST, SP-GiST, BRIN (pro velká časoprostorová data), partial a expression indexy, multikolumnové statistiky. Velmi vyspělý plánovač a 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 partitioning na úrovni tabulek; paralelismus spíše omezený (per-query), replikace pro scale-out čtení.
  • PostgreSQL: Deklarativní partitioning (range/list/hash), paralelní query/execution, FDW pro sharding a federace; rozšíření (Citus) pro distribuované workloady.
  • MS SQL: Nativní partitioning s partition functions/schemes, paralelní plány, PolyBase/externí tabulky. V edicích Enterprise bohatý scale-up i scale-out ekosystém.

Replikace, vysoká dostupnost a zotavení

  • MySQL: Asynchronní a semi-sync 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í/async, read-only sekundáry), Failover Cluster Instance, log shipping, replication (snapshot/transactional/merge).

Zabezpečení, compliance a audit

  • MySQL: Role, definer práva 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; bohatá 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á přes poskytovatele (EDB apod.).
  • MS SQL: Edice Express/Developer zdarma (omezení), Standard/Enterprise na jádra s SA; 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/HA.
  • MS SQL: Azure SQL Database/Managed Instance, SQL v 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 binlog re-play.
  • PostgreSQL: pg_dump/pg_restore, base backup + WAL archivy, pgBackRest, barman; přesná obnova do bodu v čase (PITR).
  • MS SQL: Full/differential/log backup, tail-log restore, Recovery Models (Full/Bulk-Logged/Simple), DBCC pro integritu.

Výkonové charakteristiky a typické workloady

  • MySQL: Exceluje v čtecích OLTP s jednoduchými schématy a krátkými transakcemi; široká adopce v LAMP a e-commerce.
  • PostgreSQL: Univerzální motor pro OLTP i pokročilejší analytiku na transakční bázi (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 stackem (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/ MySQL dostupné dle edice/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í/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).
  • Performance testing: 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 read-heavy provozem, jednoduché schéma a binlog replikace.
  • PostgreSQL: Fintech, GIS, analytické OLTP, domény s komplexními datovými typy, datová platforma s extenzemi.
  • MS SQL: Enterprise aplikace na .NET, ERP/CRM, hybridní OLTP/OLAP, potřeba columnstore a těsné integrace s BI na 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 ↔ MySQL: Odlišné datové typy (DATETIME2, NVARCHAR), chování transakcí a izolací; nutné přemapování funkcí.

Výběrové kritérium: jak zvolit správnou databázi

  1. Požadavky na SLA a HA: Potřebuji synchronní replikaci, multi-region, zero-RPO/RTO?
  2. Typ workloadu: OLTP vs. HTAP/analytika; JSON/geo/časové řady; požadavky na okna/CTE.
  3. Ekosystém a dovednosti: Tým (.NET/Power BI → MS SQL; GIS/extenze → PostgreSQL; LAMP → MySQL).
  4. Licencování/TCO: Open-source vs. Enterprise funkce; náklady podpory.
  5. Cloud strategie: Preferované managed služby (Aurora, Azure SQL, AlloyDB) a jejich limity.

Doporučení podle priorit

  • Maximální flexibilita a otevřenost: PostgreSQL díky rozsáhlé rozšiřitelnosti a standardnímu SQL.
  • Jednoduchost a rychlý start webových aplikací: MySQL (nebo MariaDB) s dobře známou replikací a nízkým overheadem.
  • Enterprise integrace, analytika a governance: MS SQL Server s columnstore, RLS/DDM a nástroji správy.

Závěr

MySQL, PostgreSQL a MS SQL Server poskytují spolehlivé jádro pro relační data, ale liší se v architektuře, míře standardizace, rozšiřitelnosti a provozních vlastnostech. Volbu by měla řídit kombinace obchodních požadavků (SLA, TCO), technických nároků (typ dat, analytika, škálování) a dostupných kompetencí v týmu. V praxi se často uplatní hybridní strategie: například PostgreSQL pro komplexní OLTP/analytiku, MySQL pro jednodušší webové služby a MS SQL pro aplikace v ekosystému Microsoft a náročné enterprise scénáře.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *