<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>性能 on BIT &amp; 42</title><link>https://CoderAmedal.github.io/tags/%E6%80%A7%E8%83%BD/</link><description>Recent content in 性能 on BIT &amp; 42</description><generator>Hugo -- 0.160.1</generator><language>zh-CN</language><copyright>2025 Bit &amp;amp; 42. 这是生命、宇宙以及一切的终极版权声明</copyright><lastBuildDate>Sun, 24 Apr 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://CoderAmedal.github.io/tags/%E6%80%A7%E8%83%BD/index.xml" rel="self" type="application/rss+xml"/><item><title>主流关系型数据库的差异及性能分析</title><link>https://CoderAmedal.github.io/posts/rdbms-comparison-performance/</link><pubDate>Sun, 24 Apr 2022 00:00:00 +0000</pubDate><guid>https://CoderAmedal.github.io/posts/rdbms-comparison-performance/</guid><description>&lt;h1 id="主流关系型数据库的差异及性能分析"&gt;主流关系型数据库的差异及性能分析&lt;/h1&gt;
&lt;h2 id="一份中立的对比"&gt;一份中立的对比&lt;/h2&gt;
&lt;p&gt;工作中先后接触过 MySQL、PostgreSQL、Oracle，也用过 SQL Server 和 SQLite。每个数据库都有自己的设计哲学和适用场景。这篇文章整理一下个人理解，不吹不黑，尽量实事求是。&lt;/p&gt;
&lt;h2 id="核心差异速览"&gt;核心差异速览&lt;/h2&gt;
&lt;h3 id="mysql互联网的首选"&gt;MySQL：互联网的首选&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势&lt;/strong&gt;：简单、运维成熟、社区庞大。&lt;/p&gt;
&lt;p&gt;MySQL 的设计哲学是&amp;quot;够用就好&amp;quot;。它不像 PostgreSQL 那样追求 SQL 标准的完备性，而是优先保证简单场景下的性能。InnoDB 存储引擎是绝大多数场景的唯一选择——B+ 树索引、MVCC、行级锁。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;需要注意的点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对复杂查询（窗口函数、CTE）的支持较晚，直到 8.0 才比较完善&lt;/li&gt;
&lt;li&gt;JSON 支持和全文索引够用但不强&lt;/li&gt;
&lt;li&gt;复制架构基于 binlog，GTID 复制在管理上很便利&lt;/li&gt;
&lt;li&gt;幻读问题：InnoDB 在可重复读隔离级别下通过 Next-Key Lock 解决，但实际上还是可能发生（快照读 vs 当前读）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：OLTP、互联网业务、读写分离架构、中小规模数据。&lt;/p&gt;
&lt;h3 id="postgresql功能最完备的开源数据库"&gt;PostgreSQL：功能最完备的开源数据库&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势&lt;/strong&gt;：SQL 标准兼容性最好、扩展性强、适合复杂查询。&lt;/p&gt;
&lt;p&gt;PostgreSQL 是一个&amp;quot;学院派&amp;quot;数据库，它的功能完备程度在某些方面甚至超过商业数据库：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最完整的窗口函数、CTE、递归查询支持&lt;/li&gt;
&lt;li&gt;优秀的 JSON/JSONB 支持（可以当半个文档数据库用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;丰富的索引类型&lt;/strong&gt;：B-Tree、Hash、GiST、SP-GiST、GIN、BRIN&lt;/li&gt;
&lt;li&gt;原生支持地理空间数据（PostGIS）&lt;/li&gt;
&lt;li&gt;外键、触发器、函数等支持非常完整&lt;/li&gt;
&lt;li&gt;MVCC 实现基于多版本行存储，会产生死元组，需要定期 VACUUM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;需要注意的点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;连接开销比 MySQL 大，高并发短连接场景需要连接池（PgBouncer）&lt;/li&gt;
&lt;li&gt;VACUUM 和 ANALYZE 需要关注，否则性能会逐渐下降&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：复杂业务逻辑、数据分析、GIS、需要高度 SQL 标准兼容的场景。&lt;/p&gt;
&lt;h3 id="oracle企业级标杆"&gt;Oracle：企业级标杆&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心优势&lt;/strong&gt;：最成熟的优化器、最完善的高可用方案、最强的硬件利用率。&lt;/p&gt;
&lt;p&gt;Oracle 的核心竞争力在于它的优化器和 RAC（Real Application Clusters）。Oracle 的 CBO 优化器的成熟度是其他数据库难以比拟的——同样的复杂查询，Oracle 往往能选出更优的执行计划。RAC 实现了多节点共享存储的集群架构，提供了极高的可用性。&lt;/p&gt;</description></item></channel></rss>