当前位置: 首页 > news >正文

Oracle(69)什么是表压缩(Table Compression)?

表压缩(Table Compression)是一种数据库优化技术,用于减少表数据的存储空间和提高I/O性能。通过压缩表数据,可以显著减少存储需求,并在某些情况下提高查询性能,特别是对于只读或主要是读取操作的表。表压缩主要在数据仓库和大数据环境中使用,但在事务处理系统中也有应用。

表压缩的类型

不同的数据库系统支持不同类型的表压缩。例如,在Oracle数据库中,表压缩主要有以下几种类型:

  1. Basic Table Compression:适用于只读或主要是读取操作的表。
  2. Advanced Row Compression(也称为OLTP压缩):适用于事务处理系统,支持频繁的DML操作。
  3. Hybrid Columnar Compression(HCC):主要用于数据仓库环境,提供更高的压缩率。

优势

  1. 节省存储空间:压缩后的数据占用更少的存储空间。
  2. 提高查询性能:减少I/O操作,因为压缩后的数据块可以包含更多的数据。
  3. 降低存储成本:节省存储空间可以降低存储设备的成本。
  4. 减少备份和恢复时间:压缩数据减少了备份和恢复的时间。

示例代码

以下是如何在Oracle数据库中使用表压缩的详细示例。

1. 创建启用Basic Table Compression的表

Basic Table Compression适用于只读或主要是读取操作的表。它在数据插入时进行压缩。

CREATE TABLE employees (emp_id NUMBER PRIMARY KEY,emp_name VARCHAR2(50),emp_description VARCHAR2(100)
) COMPRESS BASIC;

在这个示例中,表employees使用了Basic Table Compression。

2. 插入数据

向表中插入数据,数据将在插入时被压缩。

INSERT INTO employees (emp_id, emp_name, emp_description) VALUES (1, 'John Doe', 'Software Engineer');
INSERT INTO employees (emp_id, emp_name, emp_description) VALUES (2, 'Jane Smith', 'Data Analyst');
COMMIT;
3. 创建启用Advanced Row Compression的表

Advanced Row Compression适用于事务处理系统,支持频繁的DML操作。

CREATE TABLE employees_oltp (emp_id NUMBER PRIMARY KEY,emp_name VARCHAR2(50),emp_description VARCHAR2(100)
) COMPRESS FOR OLTP;

在这个示例中,表employees_oltp使用了Advanced Row Compression(OLTP压缩)。

4. 插入和更新数据

向表中插入数据,并进行更新操作。

INSERT INTO employees_oltp (emp_id, emp_name, emp_description) VALUES (1, 'John Doe', 'Software Engineer');
INSERT INTO employees_oltp (emp_id, emp_name, emp_description) VALUES (2, 'Jane Smith', 'Data Analyst');
COMMIT;UPDATE employees_oltp SET emp_description = 'Senior Software Engineer' WHERE emp_id = 1;
COMMIT;
5. 创建启用Hybrid Columnar Compression的表

Hybrid Columnar Compression(HCC)主要用于数据仓库环境,提供更高的压缩率。有两种模式:QUERYARCHIVE

CREATE TABLE employees_hcc (emp_id NUMBER PRIMARY KEY,emp_name VARCHAR2(50),emp_description VARCHAR2(100)
) COMPRESS FOR QUERY HIGH;

在这个示例中,表employees_hcc使用了Hybrid Columnar Compression的QUERY HIGH模式。

检查压缩效果

可以使用以下SQL语句来检查表的压缩效果和存储信息。

SELECT table_name, compression, compress_for
FROM user_tables
WHERE table_name IN ('EMPLOYEES', 'EMPLOYEES_OLTP', 'EMPLOYEES_HCC');

输出示例:

TABLE_NAME    | COMPRESSION | COMPRESS_FOR
--------------|-------------|--------------
EMPLOYEES     | ENABLED     | BASIC
EMPLOYEES_OLTP| ENABLED     | OLTP
EMPLOYEES_HCC | ENABLED     | QUERY HIGH

总结

表压缩(Table Compression)是一种非常有效的数据优化技术,通过减少数据存储空间和提高I/O性能,可以显著提升数据库系统的整体性能。不同类型的表压缩适用于不同的应用场景,例如只读操作的Basic Table Compression、事务处理系统的Advanced Row Compression以及数据仓库环境的Hybrid Columnar Compression。

示例代码总结

创建启用Basic Table Compression的表
CREATE TABLE employees (emp_id NUMBER PRIMARY KEY,emp_name VARCHAR2(50),emp_description VARCHAR2(100)
) COMPRESS BASIC;
插入数据
INSERT INTO employees (emp_id, emp_name, emp_description) VALUES (1, 'John Doe', 'Software Engineer');
INSERT INTO employees (emp_id, emp_name, emp_description) VALUES (2, 'Jane Smith', 'Data Analyst');
COMMIT;
创建启用Advanced Row Compression的表
CREATE TABLE employees_oltp (emp_id NUMBER PRIMARY KEY,emp_name VARCHAR2(50),emp_description VARCHAR2(100)
) COMPRESS FOR OLTP;
插入和更新数据
INSERT INTO employees_oltp (emp_id, emp_name, emp_description) VALUES (1, 'John Doe', 'Software Engineer');
INSERT INTO employees_oltp (emp_id, emp_name, emp_description) VALUES (2, 'Jane Smith', 'Data Analyst');
COMMIT;UPDATE employees_oltp SET emp_description = 'Senior Software Engineer' WHERE emp_id = 1;
COMMIT;
创建启用Hybrid Columnar Compression的表
CREATE TABLE employees_hcc (emp_id NUMBER PRIMARY KEY,emp_name VARCHAR2(50),emp_description VARCHAR2(100)
) COMPRESS FOR QUERY HIGH;
检查压缩效果
SELECT table_name, compression, compress_for
FROM user_tables
WHERE table_name IN ('EMPLOYEES', 'EMPLOYEES_OLTP', 'EMPLOYEES_HCC');

相关文章:

Oracle(69)什么是表压缩(Table Compression)?

表压缩(Table Compression)是一种数据库优化技术,用于减少表数据的存储空间和提高I/O性能。通过压缩表数据,可以显著减少存储需求,并在某些情况下提高查询性能,特别是对于只读或主要是读取操作的表。表压缩…...

java JUC编程

Java并发工具包(JUC),全称Java Util Concurrent,是Java提供的一个用于构建多线程应用程序的工具包,位于java.util.concurrent包及其子包中。 并发编程主要解决以下三个经典问题: 1. **原子性问题&#xf…...

vue3+element-plus表格分页选中加默认回显选中

1.需求 某个表单需要选择多条数据,点击选择按钮,弹框出来一个分页列表,选择多条数据,外面表单中显示选中的数据,可以删除数据,再次点击按钮,回显当前选中的数据。 2.解决办法 1.el-table加ro…...

Erupt 项目搭建

创建Spring Boot项目 Maven依赖 Spring Boot版本为 2.7.10&#xff0c;erupt版本为 1.12.14 erupt版本要与Spring Boot版本适配&#xff0c;3.x.x版本Spring Boot暂不适用说是 <properties><erupt.version>1.12.14</erupt.version></properties> <…...

HarmonyOS Next 系列之列表下拉刷新和触底加载更多数据实现(十一)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现&#xff08;一&#xff09; HarmonyOS Next 系列之验证码输入组件实现&#xff08;二&#xff09; HarmonyOS Next 系列之底部标签栏TabBar实现&#xff08;三&#xff09; HarmonyOS Next 系列之HTTP请求封装和Token…...

比特位的计算

给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --> …...

SQLAlchemy 学习笔记

通信类型&#xff1a;AF_INET 协议家族一般是表示TCP通信的SOC_STREAM和UDP通信的SOCK_DGRAM。对于TCP通信&#xff0c;建立socket连接&#xff0c;&#xff1a; s socket.socket(socket.AF_INET, socket.SOCK_STREAM)连接socket&#xff0c; s.connect((host,port))socket通信…...

Linux内核分析(调度类和调度实体)

文章目录 前言一、调度类1. stop_sched_class2. dl_sched_class3. rt_sched_class4. fair_sched_class5. idle_sched_class总结 二、调度类中的操作函数三、调度实体 前言 调度是操作系统内核的一个关键职责&#xff0c;它涉及到如何合理分配CPU时间给不同的进程或线程。在Lin…...

用输入输出流(I/O)流,递归复制和删除多级文件

一、&#xff08;I/O&#xff09;流递归复制一个文件 第一种&#xff1a; else if语句过多&#xff0c;看起来冗余&#xff0c;优点&#xff1a;多级文件一次性复制完整 import java.io.*;//数据源&#xff1a;src/main/java/day15_8_13/haha //目标;src/main/java/LaJi pub…...

kafka监控工具EFAK

kafka监控工具&#xff08;EFAK&#xff09; 1、下载2、解压3、配置3.1、安装数据库&#xff0c;需要mysql是&#xff0c;并创建ke数据库3.2、修改配置文件 4、启动4.1、启动zookeeper4.2、启动kafka4.3、启动EFAK 5、访问http://ip:8048 github地址&#xff1a;https://github…...

Page与自定义Components生命周期

自定义组件 自定义组件一般可以用component,装饰&#xff0c;在结构体里面用build方法定义UI,或者用builder装饰一个方法&#xff0c;来作为自定义组件的构造方法 而页面page一般用Entry,和component结合起来使用 页面生命周期方法: onPageShow:页面每次显示时触发 onPageHid…...

Chain of Thought (CoT) 系列论文:大模型思维链,提升 LLM 的推理能力

文章目录 1. COT&#xff1a;Chain of Thought1. 研究背景2. CoT的原理3. CoT Prompt 1. COT&#xff1a;Chain of Thought COT 是 2022.01 由 google 提出的针对提升 LLM 的推理能力的 Prompt Engineering 方法。 paper&#xff1a; Chain-of-Thought Prompting Elicits Re…...

已解决:java.net.BindException: 地址已在使用

1. 问题描述 java.net.BindException: 地址已在使用 是一种常见的网络异常&#xff0c;通常在服务器程序尝试绑定到一个已经被占用的端口或地址时出现。具体的异常信息可能如下&#xff1a; java.net.BindException: Address already in use: JVM_Bind或 java.net.BindExcep…...

看书标记【数据科学:R语言实战 8】

看书标记——R语言 Chapter 8 数据可视化——绘图8.1 功能包8.2 散点图8.2.1 回归线8.2.2 lowess线条8.2.3 scatterplot函数8.2.4 Scatterplot矩阵1.splom——展示矩阵数据2.cpairs——绘图矩阵图 8.2.5 密度散点图 8.3 直方图和条形图8.3.1 条形图8.3.2 直方图 8.3.3 ggplot28…...

STM32标准库学习笔记-1.基础知识

STM32介绍&#xff1a; STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。 ARM的含义&#xff1a; 公司名称&#xff1a;ARM公司成立于1990年&#xff0c;全称是Advanced RISC Machines&#xff08;RISC:Reduced Instruction Set Computer 精简指令集计算机 相对应有C…...

Nginx:高效HTTP服务器与反向代理

Nginx&#xff1a;高效HTTP服务器与反向代理 1、核心特点2、应用场景 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Nginx&#xff0c;一个开源的HTTP服务器与反向代理工具&#xff0c;因其高性能、低资源消耗而备受推崇。以下是Nginx的几…...

vue3二次封装element-puls

将表单的通用信息给设置出来 如: label 的提示信息 , type 的类型 // 定义表单的配置项 const formConfig{ formItems:[ { type:"input", label:"用户ID", placeholder:"请输入用户ID" } ] } 页面配置如 <template v-for"(it…...

在CentOS 7上安装Apache Tomcat 8的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Apache Tomcat 是一个用于提供 Java 应用程序的 Web 服务器和 Servlet 容器。Tomcat 是由 Apache 软件基金会发布的 Java Servlet…...

深入理解分布式事务中的三阶段提交(3PC),什么是3PC,3PC原理是怎样?3PC的优化?

在上一篇文章中&#xff0c;我们详细介绍了分布式事务中的两阶段提交&#xff0c;以及知道了两阶段提交存在一定的问题 深入理解分布式事务中的两阶段提交&#xff08;2PC&#xff09;&#xff0c;什么是2PC&#xff0c;2PC原理是怎样&#xff1f;2PC有没有什么问题&#xff1…...

这款新的 AI 工具会消灭 ChatGPT 吗?

随着大型语言模型 (LLM) 的出现&#xff0c;ChatGPT迅速成为全球计算机用户的家喻户晓的名字。这款由 OpenAI 设计的深度学习聊天机器人以知识宝库而闻名——一部互联网百科全书。 继ChatGPT的脚步之后&#xff0c;许多其他生成式AI工具也纷纷涌现。 2023 年 3 月&#xff0c;一…...

前端新手入门:跟快马AI学用localStorage实现视频续播功能

今天想和大家分享一个特别适合前端新手练手的小项目&#xff1a;用localStorage实现视频续播功能。这个功能我们平时在各大视频网站都能见到&#xff0c;比如"继续观看"的提示&#xff0c;其实实现起来并不复杂&#xff0c;但涉及了前端开发中几个非常实用的知识点。…...

避坑指南:glmnet做lasso回归时分类变量的3个常见错误及解决方法

避坑指南&#xff1a;glmnet做lasso回归时分类变量的3个常见错误及解决方法 在生物信息学和临床数据分析领域&#xff0c;lasso回归因其出色的变量选择能力而广受欢迎。R语言中的glmnet包是实现lasso回归的利器&#xff0c;但许多初学者在处理分类变量时频频踩坑。本文将揭示三…...

2026年3月26隔夜暗盘挂单排行榜

推荐好文:每年节约五六千交易费不香吗如何获取龙虎榜是否有量化参与如何获取股东减持信息大A有5400多只股票, 这里面只有不到10%, 约500只由资金投票, 剩余的都是杂毛, 炒股看龙头找主线. 从隔夜挂单里选择, 再叠加我们之前分享的如何判断是否有大股东减持, 是否有融资融券参与…...

【深度学习】RoBERTa:BERT的优化升级与实战应用

1. RoBERTa&#xff1a;BERT的全面进化 第一次接触RoBERTa时&#xff0c;我正为一个电商评论情感分析项目发愁。当时用BERT模型效果总是不稳定&#xff0c;直到尝试了RoBERTa&#xff0c;准确率直接提升了5个百分点。这个经历让我意识到&#xff0c;看似细微的技术改进在实际应…...

提升arduino开发效率:用快马平台一键生成常用工具模块代码

作为一名经常折腾Arduino的开发者&#xff0c;我发现在项目开发中&#xff0c;总有些重复性的代码需要反复编写。最近尝试用InsCode(快马)平台来生成这些常用工具模块&#xff0c;效率提升非常明显。今天就把我的实践心得分享给大家。 I2C设备扫描功能 在连接多个I2C设备时&…...

Phi-3 Forest Lab快速部署:使用Podman替代Docker的无root安全运行方案

Phi-3 Forest Lab快速部署&#xff1a;使用Podman替代Docker的无root安全运行方案 1. 项目概述 Phi-3 Forest Lab是一个基于微软Phi-3 Mini 128K Instruct模型构建的极简主义AI对话终端&#xff0c;旨在为用户提供一个静谧、高效且富有逻辑的思考空间。与传统AI终端不同&…...

从brpc的IOBuf到Protobuf零拷贝:一次网络序列化的‘无缝’对接实战

从brpc的IOBuf到Protobuf零拷贝&#xff1a;一次网络序列化的‘无缝’对接实战 在构建高性能RPC服务时&#xff0c;数据传输效率往往是决定系统吞吐量的关键瓶颈之一。传统序列化过程中频繁的内存拷贝不仅消耗CPU资源&#xff0c;还会增加GC压力&#xff0c;这在处理大附件或复…...

利用快马平台快速构建openclaw网页抓取原型,十分钟验证技术方案

最近在做一个数据采集相关的项目&#xff0c;需要快速验证网页抓取方案的可行性。经过调研发现openclaw这个Python库很适合做轻量级的网页抓取&#xff0c;但搭建完整的开发环境太费时间。后来在InsCode(快马)平台上尝试了一下&#xff0c;没想到十分钟就搞定了原型验证。这里分…...

告别局域网限制:用C-Lodop插件实现前端跨网段远程打印(保姆级配置指南)

突破物理边界&#xff1a;C-Lodop实现跨地域打印的工程实践 想象一下这样的场景&#xff1a;上海分公司的财务人员需要紧急打印一份合同&#xff0c;而唯一具备公章权限的打印机在北京总部。传统方案可能需要邮件转发、本地打印再扫描&#xff0c;或者依赖复杂的VPN配置——但现…...

复古玩法:OpenClaw+Qwen3.5-9B模拟操作Windows 98怀旧游戏

复古玩法&#xff1a;OpenClawQwen3.5-9B模拟操作Windows 98怀旧游戏 1. 为什么选择Windows 98游戏作为测试场景 最近在整理旧硬盘时&#xff0c;偶然发现了一批Windows 98时代的经典游戏安装包。这些20年前的老游戏不仅界面风格复古&#xff0c;操作方式也与现代软件大相径庭…...