Logo Logo Comparison: Neon vs Oracle

Modified date: Monday, June 30, 2025

Table of Contents

General

FeatureNeonOracleDefinition
introNeon is a serverless open-source alternative to AWS Aurora Postgres. It separates storage and compute and substitutes the PostgreSQL storage layer by redistributing data across a cluster of nodes.Oracle Database is a DBMS developed by Oracle Corporation.in their own words - but I reserved the rights to remove some bold claims like "the best", unless it is widely recognized.
vendorDatabricksOracle
initial release20211980
latested version871723aiWe don't put a release date here as the software is patching frequently. So tracking it is not much useful.
supported platforms

Linux and OSX

Databricks acqured Neon on 05/2025
Windows, Linux, Solaris, HP-UX, AIX, z/OSsupported OS/CPU platforms
db-engines rankingno ranking1ranks from https://db-engines.com/en/ranking (06/25)
relational?yes

yes

Oracle also has an open source nosql database.
Is it a relational database? (1) Most database are actually with some extensions, for example, nested data types, graph support, etc, which we usually called "multi-model". (2) Some of them are product family, meaning they have more than one database. Here we focus on the main one but explain others when needed.
open source?yesnomainly the engine code
licenseApachecommercial
cloud offeringcloud vendorsOracle Cloud and other cloud vendors
technical dochttps://neon.com/docs/introductionhttps://docs.oracle.com/en/database/
on-premise offeringyesif no means you can't buy "box" software from them

Data Types

FeatureNeonOracleDefinition
int: signesssigned onlyif differentiate signed and unsigned int
int: 1-bytes int namen.a.
int: 2-bytes int namesmallint
int: 3-bytes int namen.a.
int: 4-bytes int nameintint
int: 8-bytes int namebigint
decimal: storage sizevariable
decimal: rangeup to 131072 digits before the decimal point; up to 16383 digits after the decimal pointalso called number, numeric in different systems
char(n): max bytes10,485,7602000
text: max bytes1G
BLOB: max size

(4B-1) * pages

Page size is defined by DB_BLOCK_SIZE in Oracle, which is ranging from 2K to 32K. This gives BLOB size from 8T to 128TB.
JSON: max size32MB
Literal: max size4000characters or numbers in SQL or PL/SQL

SQL

FeatureNeonOracleDefinition
basePostgreSQL
SQL: standard complaincehighhigh
max SQL length

undefined

same as PostgreSQL with "StringInfo" container

undefined

The actual limit may depends on limits of the SUT, for example, its memory/system swap settings: Oracle internally must use a malloc'ed buffer to hold the SQL string.
maximal SQL statement length
PL: mainSQL + PL/PgSQLSQL + PL/SQLmain programming lanage: most database suports SQL because SQL is a well established standard. However, each database would like to extend SQL more or less.
PL: other language supportyesyesPL lanaguage other than PL/SQL, like PL/Java, PL/Rust etc
SP: max parameters100
UDF: max parameters100
SQL: max parameters65535number of parameters in a PREPARED query
SQL: query hintsGUC onlycompleteif it allows use query hints to guide the optimizer
SQL: explicit lockingyes: row, page, table levelyesLocking is usually an internal matter - so does it allow explicit locking? What levels do they support?
Triggers?yesyesIf support triggers
Triggers: scopetables, views, foreign tablesWhat objects can have triggers
Triggers: typeBEFORE, AFTER, INSTEAD OFTypes of triggers supported
Object-Relational?yessome
Extension MechanismC programming, link with engine
vector searchno nativedoes it support vector search

Storage and System

FeatureNeonOracleDefinition
arch: serverC/S

C/S

Oracle has a family of databases, even with nonsql one.
Embedded or traditional C/S?
arch: run in browser?nonoIt also known as a client-side database, is a database that is stored and managed within a user's web browser, rather than on a remote server.
arch: in-memory supportnoOracle Database In-Memory option
arch: Multi-master support?noyesif multi-master support?
Neon is based on PostgreSQL with storage and compute separation enhancement for native cloud DB.
arch: primary/read replica?yesyesif primary + mulitiple read replica supported
replication: sync/asyncbothbothCan commits wait or w/o wait for replicas to acknowledge
replication: WAL shippingyesyesUses write-ahead log (WAL) shipping for replication
arch: clustering/HARAC, Data Guard
sessions: max262143
tables: max number per databaseundefined
tables: max number of columns4096Max number of columns per table
contraints: max per columnundefined
partitions: methodsRange, List, Hash, Composite (sub-partitions supported).Supported partitioning strategies (range, list, hash, etc.).
partitions: global indexyesindex across partitions
constraints: max per database4,294,967,293
rows: max rows per tableundefinedThe actual number depends on storage etc
index: max allowed indexundefinedMax number of indices allowed per table
index: max allowable size6400Max index record size (bytes). This constraint is mainly coming from the fact of the database page size: if we exclude blob data types, database engine usally do not allow a record expand more than one page.
index: max number of fields32Max number of columns allowed in one index
partition: max allowed partitions1M-1Meta data challenge: 1M partitions just like 1M tables, system have to hold them in memory. Optimizer challenge: O(N) algorithm may lead to very long planning time if there are excessive partitions.
partition: max allowed key columns16
partition: max number of subpartitions1M-1
ACIDyes/yesfor DML and DDL
ACID: max isolation level

SI

The Snapshot Isolation (SI) implemented by Oracle allows some anomalies, including write skew. But the SI does satisfies ANSI's serializable definition.
ACID: max ANSI isolation levelSerializable
ACID: durabilityyes
Materialized View: support?yes

Benchmarking

FeatureNeonOracleDefinition
any official TPC benchmarks?noyesThe TPC benchmark includes a set of tests simulating real-world scenarios to evaluate database performance.
TPCC: most recent tpmC

8,552,523

System cost: 4,663,073 USD
TPCC: most recent submit date3/26/2013
TPCC: most recent per thread perf8352
TPCC: best tpmC

30,249,688

System cost: 30,528,863 USD
TPCC: best perf submit date12/2/2010
TPCC: best perf per thread perf2188

Tools

FeatureNeonOracleDefinition
command line clientpsqlit means "sql client" for database supporting SQL. For embedded atabase, the client includes the server together.
admin(GUI)pgAdmin

Export Regulations

FeatureNeonOracleDefinition
JurisdictionUSUSWhich country controls export
ECCNNone5D992.cAn Export Control Classification Number (ECCN) is a five-character alphanumeric code used to categorize items on the Commerce Control List (CCL) for export control purposes. Most database may fall into 5D992.c category, "mass market encryption", which means it has some ordinary encryption related code, for example, the SSL connection code.
Eligible License Exception / CCATSNot required

NLR

NLR essentially means that a commodity has been classified within the Commodity Classification Automated Tracking System and determined to not require a BIS export license for its export.
A License Exception is an authorization that allows you to export or reexport items subject to the EAR without needing to obtain a specific export license, provided certain conditions are met. CCATS stands for Commodity Classification Automated Tracking System. The BIS assigns a CCATS number to products that it has classified under the Commerce Control List (CCL).
Encryption ComponentsSSLTDE, SSLCrypto functionality that triggers control

Internal

FeatureNeonOracleDefinition
concurrency controlMVCCMVCC
MVCC: implemented?yesyesif implement MVCC for concurrency control
Implementation languageRustCA DBMS may use mulitple programming languages, for example, supports its stored procedure. The major programming language used to implement the engine.
MVCC: rollback segmentyesif uses rollback segment (RS) to store old versions. Without RS, old versions and new versions are mixed stored, then the database engine has to find a way to efficiently drop the old versions at certain point.

Internal - Optimizer

FeatureNeonOracleDefinition
CBO?yesyesif it employees a cost based optimizer
frameworkSystem-RSystem-RSystem-R is more like a dynamic programming, bottom up optimizer, while Cascades/Volcano gebaseerd optimizer is more like top-down optimizer.
join order search

dynamic programming + Generic Algorithm (GEQO)

reuse PostgreSQL's optimizer
How join order permutations are explored during plan generation.
stats: multi columnyesMulti-column stats may cause storage space bloat: for example, if one dimension has 100 buckets, then three dimensions will require 1M buckets - but reducing the total number of buckets will result in reduced accuracy.
query hints?GUC onlycompleteif it allows use query hints to guide the optimizer
plan guide?noCan we use plan guide to correct the plan? This is a more systematic and accurate way to repair the plan than plan hints. Especially during system upgrades, if the plan becomes worse, we can use plan guide to force a query to use a previous plan.

Internal - Runtime

FeatureNeonOracleDefinition
resource managementsimple: work_mem controls per-operator memory usecompleteHow execution memory is allocated and limited.
spilling supportyes"spilling" refers to the process of writing temporary data or intermediate results of a query to disk when the available memory is exhausted. This is crucial for handling large datasets or complex queries that require more memory than available.
modelVolcano + push for parallel runThe operator scheduling model: pull-gebaseerd (Volcano), push etc.
support intra-parallel query?yesyesmeaning a single query can utilize multi hardware threads to run it
adaptive execution (AQP)?noTraditionally, after the optimizer determines the plan, the runtime must execute it completely without any room for adjustment, such as which of the two tables should be built. The adaptive method allows the runtime to make some adjustments based on the actual situation, and the optimizer must also prepare for this uncertainty, such as preparing an alternative plan.
vectorizationno nativeyesSpeed ​​up OLAP queries using vectorized execution. A vectorized runtime exchange a bunch of rows between iterators, and these rows are physically sotre with column-oriented order.
iterator: join methodsall 3all 3Hash Join (HJ), Sort-Merge Join (MJ) and Nested loop Join (NLJ) are 3 major ones
Error: out-of-range and overflowabort the transactionTo maintain atomic requirement of ACID, database engine usually fail the statement and abort the transaction.

Internal - Storage Engine

FeatureNeonOracleDefinition
Page Size2K-32KThe physical disk block size for storage and I/O.
partition tablecompletePartitioning capabilities for large tables.
partition table: prunningbothAbility to eliminate partitions at query compile time and runtime
ACID: durability mechanismWALHow is it implements durability. Database's classic way is write ahead logging (WAL).