批量匯入某大張表資料的時候的最佳實踐
批量匯入某大張表資料的時候的最佳實踐:
1、把表上所有的索引都設定為unusable: alter index <index name> unusable;
2、做批量匯入
3、rebuild索引:alter index <index name> rebuild parallel nologging;
演示如下
SQL> create table emp as select * from employees;
Table created.
SQL> create index idx_emp_job on emp(job_id);
Index created.
SQL> select bytes from user_segments where segment_name='IDX_EMP_JOB';
BYTES
----------
65536
SQL> alter index idx_emp_job unusable;
Index altered.
SQL> insert into emp select * from emp;
107 rows created.
SQL> /
214 rows created.
SQL> /
428 rows created.
SQL> /
856 rows created.
SQL> /
1712 rows created.
SQL> /
3424 rows created.
SQL> /
6848 rows created.
SQL> /
13696 rows created.
SQL> /
27392 rows created.
SQL> /
54784 rows created.
SQL>
SQL>
SQL>
SQL> /
109568 rows created.
SQL> commit;
Commit complete.
SQL> select bytes from user_segments where segment_name='IDX_EMP_JOB';
no rows selected
SQL> select status from user_objects where object_name='IDX_EMP_JOB';
STATUS
-------
VALID
SQL> alter index IDX_EMP_JOB rebuild parallel 4 nologging;
Index altered.
SQL> select bytes from user_segments where segment_name='IDX_EMP_JOB';
BYTES
----------
5373952
1、把表上所有的索引都設定為unusable: alter index <index name> unusable;
2、做批量匯入
3、rebuild索引:alter index <index name> rebuild parallel nologging;
演示如下
SQL> create table emp as select * from employees;
Table created.
SQL> create index idx_emp_job on emp(job_id);
Index created.
SQL> select bytes from user_segments where segment_name='IDX_EMP_JOB';
BYTES
----------
65536
SQL> alter index idx_emp_job unusable;
Index altered.
SQL> insert into emp select * from emp;
107 rows created.
SQL> /
214 rows created.
SQL> /
428 rows created.
SQL> /
856 rows created.
SQL> /
1712 rows created.
SQL> /
3424 rows created.
SQL> /
6848 rows created.
SQL> /
13696 rows created.
SQL> /
27392 rows created.
SQL> /
54784 rows created.
SQL>
SQL>
SQL>
SQL> /
109568 rows created.
SQL> commit;
Commit complete.
SQL> select bytes from user_segments where segment_name='IDX_EMP_JOB';
no rows selected
SQL> select status from user_objects where object_name='IDX_EMP_JOB';
STATUS
-------
VALID
SQL> alter index IDX_EMP_JOB rebuild parallel 4 nologging;
Index altered.
SQL> select bytes from user_segments where segment_name='IDX_EMP_JOB';
BYTES
----------
5373952
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2142268/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【最佳實踐】MongoDB匯出匯入資料MongoDB
- Redis批量匯入文字資料Redis
- Progress資料表的匯入匯出
- MySQL匯入百萬資料實踐MySql
- Nebula Importer 資料匯入實踐Import
- 使用csv批量匯入、匯出資料的需求處理
- SQL 匯入匯出的時候資料庫表的主鍵和自動編號丟失的解決辦法SQL資料庫
- sqlldr批量匯入匯出資料測試SQL
- MySQL 批量匯入資料優化MySql優化
- PostgreSQL資料庫匯入大量資料時如何最佳化SQL資料庫
- mysqldump 備份匯出資料排除某張表或多張表MySql
- 使用Mybatis批量插入大量資料的實踐MyBatis
- MYSQL 匯出資料庫中某張表的部分數…MySql資料庫
- mysqldump匯入匯出表資料MySql
- 資料泵匯出匯入表
- truncate表後impdp匯入該表時加exclude=index引數並不能排除索引資料的匯入Index索引
- elasticsearch bulk資料--ES批量匯入json資料ElasticsearchJSON
- 將資料匯入kudu表(建立臨時hive表,從hive匯入kudu)步驟Hive
- Excel 表匯入資料Excel
- 匯入一張18億條300G資料檔案的表經驗
- Elasticsearch批量匯入資料指令碼(python)Elasticsearch指令碼Python
- Oracle:從SQL檔案批量匯入資料OracleSQL
- SQL Server Bulk Insert批量資料匯入SQLServer
- 物件及資料存在時的資料匯入(imp)物件
- 資料庫優化的最佳實踐資料庫優化
- Mysql實現定時清空一張表的舊資料並保留幾條資料MySql
- MySQL表資料匯入與匯出MySql
- 在 Spark 資料匯入中的一些實踐細節Spark
- 資料治理:管理資料資產的最佳實踐框架框架
- DBeaver 資料匯入SQL時的問題SQL
- 微服務的【資料庫管理】最佳實踐微服務資料庫
- MySQL資料庫優化的最佳實踐MySql資料庫優化
- 把資料匯入到不同的表空間
- 如何把資料匯入不同的表空間
- 從 Neo4j 匯入 Nebula Graph 實踐見 SPark 資料匯入原理Spark
- ClickHouse 資料表匯出和匯入(qbit)
- 匯入匯出 Oracle 分割槽表資料Oracle
- Oracle使用資料泵匯出匯入表Oracle