Here’s a detailed comparison table between Oracle and MySQL architectures, highlighting components, memory structures, process models, transaction behavior, and other key aspects — tailored for an Oracle DBA transitioning to MySQL.
🏗️ Oracle vs MySQL Architecture (Detailed Comparison Table)
Component / Area | Oracle RDBMS | MySQL (with InnoDB) |
---|---|---|
Architecture Type | Multi-process architecture (background processes) | Single-process, multi-threaded architecture |
Core Daemon Process | Multiple: PMON , SMON , DBWR , LGWR , CKPT , ARCH , etc. | Single daemon: mysqld |
Storage Engine Model | Integrated (Oracle controls all storage) | Pluggable (e.g., InnoDB, MyISAM, MEMORY) — InnoDB is default |
Memory Structures | SGA (shared), PGA (per process) | Buffer Pool (InnoDB), Query Cache (deprecated), Thread buffers |
• Shared Pool | SQL & PL/SQL parsing, dictionary cache | InnoDB uses adaptive hash, no separate “shared pool” |
• Buffer Cache | Caches data blocks (DB_CACHE_SIZE) | InnoDB Buffer Pool (innodb_buffer_pool_size ) |
• Redo Log Buffer | Stores redo before writing to log files | InnoDB log buffer for redo (innodb_log_buffer_size ) |
Process / Threading Model | Dedicated Server Process or Shared Server | Thread-per-connection (within mysqld process) |
Background Processes | Extensive set of helper processes | Mostly handled by internal threads (e.g., IO, flush, purge threads) |
Listener / Network | tnslsnr , TNS listener, service names | Built-in TCP/IP listener (default port 3306) |
Data Dictionary | Stored in shared pool, access via DBA_ , USER_ , V$ views | Stored in information_schema , performance_schema , sys , and mysql databases |
Transaction Model | Full ACID with undo/redo; UNDO tablespace | Full ACID via InnoDB with MVCC and redo logs |
Redo Logs | Online redo logs (redo01.log , etc.) | ib_logfile0 , ib_logfile1 (InnoDB redo logs) |
Undo Management | Separate Undo tablespace | Rollback segments in InnoDB tablespace |
Control Files | Yes (control01.ctl , etc.) | No direct equivalent. Metadata stored in data dictionary |
Datafiles / Tablespaces | Yes (mapped to tablespaces and schema objects) | InnoDB manages tablespace files automatically (or innodb_file_per_table ) |
Temporary Tablespaces | Yes (TEMP ) | Memory or disk-backed temporary tables, no dedicated TEMP tablespace |
Concurrency Control | MVCC + locks + latches | MVCC (via InnoDB), row-level locking |
Lock Granularity | Row, Block, Table, DDL | Row-level (InnoDB), Table-level (MyISAM) |
Job Scheduling | DBMS_SCHEDULER , DBMS_JOB | Event Scheduler (via CREATE EVENT ) |
Replication | Advanced (Data Guard, Streams, GoldenGate) | Built-in replication (async, semi-sync, GTID); also InnoDB Cluster |
Backup Options | RMAN, datapump (expdp/impdp), cold backup | Logical: mysqldump , Physical: xtrabackup , mysqlpump |
Security | Roles, profiles, fine-grained access, auditing | Users + GRANTs; roles introduced in MySQL 8.0 |
High Availability | RAC, Data Guard | Group Replication, MySQL InnoDB Cluster, Galera |
PL/SQL Support | Full support for PL/SQL | Limited stored procedures/functions (no packages, no exception , limited cursors) |
Partitioning | Native, rich (range, list, hash, composite) | Supported in InnoDB (range, list, hash), but less powerful |
Advanced Features | Flashback, Resource Manager, VPD, etc. | Limited. MySQL Enterprise includes Firewall, Audit plugin, etc. |
🔧 Key Observations for Oracle DBAs
- No redo/archive distinction in MySQL — redo-like logging is handled by InnoDB internally.
- No equivalent to control files, listener.ora, tnsnames.ora — simpler networking.
- Monitoring & troubleshooting in MySQL is done via
SHOW
,INFORMATION_SCHEMA
,performance_schema
. - Memory management is mostly global (
innodb_buffer_pool_size
) — no SGA/PGA split. - Background process architecture is simpler, but less tunable compared to Oracle.
- SQL syntax differences: MySQL lacks advanced PL/SQL constructs (like
packages
,exceptions
, etc.).