Why is Oracle expdp faster than exp? What is the principle?
First read the official oracle 10g documentation:
Database Utilities
Data Performance Improvements for Data Pump Export and Import
The improved performance of the Data Pump Export and Import utilities is attributable to several factors, including the following:
Multiple worker processes can perform intertable and interpartition parallelism to load and unload tables in multiple, parallel, direct-path streams.
-- Parallel and direct path reading for multiple processes
For very large tables and partitions, single worker processes can choose intrapartition parallelism through multiple parallel queries and parallel dml I/O server processes when the external tables method is used to access data.
Data Pump uses parallelism to build indexes and load package bodies.
-- Index and package creation in parallel
Dump files are read and written directly by the server and, therefore, do not require any data movement to the client.
-- Operate on the server without returning data to the client.
The dump file storage format is the internal stream format of the direct path API. this format is very similar to the format stored in Oracle database datafiles inside of tablespaces. therefore, no client-side conversion to INSERT statement bind variables is saved med.
-- The exported data file is in block format, not an exp SQL statement.
The supported data access methods, direct path and external tables, are faster than conventional SQL. the direct path API provides the fastest single-stream performance. the external tables feature makes efficient use of the parallel queries and parallel DML capabilities of the Oracle database.
-- Supports direct path reading, which is faster than converting to SQL
Metadata and data extraction can be overlapped during export.
-- Metadata and data extraction can be performed simultaneously
The translation is not good. The summary is as follows:
1. expdp is a server program, exp is a client program, exp also needs to be transmitted over the network, which affects the speed.
2. expdp reads data blocks, and exp converts data to SQL.
3. expdp can export data, metadata, index creation, and packages in parallel. exp is not supported.
4. expdp uses direct path reading and exp uses SGA.