10G的CSV倒入Oracle数据库会占用多少空间?

2024-02-04 12:32

本文主要是介绍10G的CSV倒入Oracle数据库会占用多少空间?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用Oracle示例Schema中的sh.sales表,导出为csv文件。

建立外部表sales_ext,对应此csv文件:

CREATE TABLE sales_ext ("PROD_ID"        NUMBER,"CUST_ID"        NUMBER,"TIME_ID"        DATE,"CHANNEL_ID"     NUMBER,"PROMO_ID"       NUMBER,"QUANTITY_SOLD"  NUMBER(10, 2),"AMOUNT_SOLD"    NUMBER(10, 2)
)
ORGANIZATION EXTERNAL (TYPE ORACLE_LOADERDEFAULT DIRECTORY default_dir ACCESS PARAMETERS ()LOCATION ( 'SALES_DATA_TABLE.csv' )
);

最初的csv文件只有20MB,使用类似以下脚本放大到10G:

for i in {1..6}; do cat SALES_DATA_TABLE.csv >> /u01/tmp/SALES_DATA_TABLE.csv
done

查看文件:

$ ls -l /u01/tmp/SALES_DATA_TABLE.csv
-rw-r--r-- 1 oracle oinstall 10886524012 Jul 16 06:36 /u01/tmp/SALES_DATA_TABLE.csv

查询外部表的行数:

SQL> select count(*) from sales_ext;COUNT(*)
----------334458852

从外部表创建实体表:

set timing on
create table sales nologging as select * from sales_ext;

创建表耗时:

Elapsed: 00:22:49.06

表占用的空间:

SQL> set numformat 999,999,999,999
SQL> select bytes, blocks from user_segments where segment_name = 'SALES';BYTES           BLOCKS
---------------- ----------------13,237,223,424        1,615,872

这个比CSV文件多了2G,多了20%的开销:

SQL> select 13237223424 - 10886524012 from dual;13237223424-10886524012
-----------------------2350699412SQL> select 13237223424/10886524012 from dual;13237223424/10886524012
-----------------------1.21592745

启用压缩:

SQL> set timing on
SQL> alter table sales move compress;

启用压缩耗时:

Elapsed: 00:18:57.82

只用到4G了,压缩效果不错:

SQL> set numformat 999,999,999,999
SQL> select bytes, blocks from user_segments where segment_name = 'SALES';BYTES           BLOCKS
---------------- ----------------4,429,185,024          540,672

查询性能。:

SQL> select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:23.75
SQL> select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:46.51
SQL> select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:18.04
SQL> select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:21.23
SQL>  select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:19.30
SQL>  select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:18.65

去除压缩:

alter table sales move nocompress;

空间占用:

SQL>  select bytes, blocks from user_segments where segment_name = 'SALES';BYTES           BLOCKS
---------------- ----------------11,904,483,328        1,453,184

有个奇怪的问题,就是解压后的空间和最初未压缩时的空间不一致,要小些。

查询时间:

SQL> select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:15.14
SQL> select count(*) from sales;COUNT(*)
----------334458852Elapsed: 00:02:40.84
SQL> select count(*) from sales;COUNT(*)
----------------334,458,852Elapsed: 00:02:19.90
SQL> select count(*) from sales;COUNT(*)
----------------334,458,852Elapsed: 00:02:19.68
SQL> select count(*) from sales;COUNT(*)
----------------334,458,852Elapsed: 00:02:19.38

这篇关于10G的CSV倒入Oracle数据库会占用多少空间?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677519

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.