Oracle(69)什么是表压缩(Table Compression)?
表压缩(Table Compression)是一种数据库优化技术,用于减少表数据的存储空间和提高I/O性能。通过压缩表数据,可以显著减少存储需求,并在某些情况下提高查询性能,特别是对于只读或主要是读取操作的表。表压缩主要在数据仓库和大数据环境中使用,但在事务处理系统中也有应用。
表压缩的类型
不同的数据库系统支持不同类型的表压缩。例如,在Oracle数据库中,表压缩主要有以下几种类型:
- Basic Table Compression:适用于只读或主要是读取操作的表。
- Advanced Row Compression(也称为OLTP压缩):适用于事务处理系统,支持频繁的DML操作。
- Hybrid Columnar Compression(HCC):主要用于数据仓库环境,提供更高的压缩率。
优势
- 节省存储空间:压缩后的数据占用更少的存储空间。
- 提高查询性能:减少I/O操作,因为压缩后的数据块可以包含更多的数据。
- 降低存储成本:节省存储空间可以降低存储设备的成本。
- 减少备份和恢复时间:压缩数据减少了备份和恢复的时间。
示例代码
以下是如何在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)主要用于数据仓库环境,提供更高的压缩率。有两种模式:QUERY
和ARCHIVE
。
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. **原子性问题…...
vue3+element-plus表格分页选中加默认回显选中
1.需求 某个表单需要选择多条数据,点击选择按钮,弹框出来一个分页列表,选择多条数据,外面表单中显示选中的数据,可以删除数据,再次点击按钮,回显当前选中的数据。 2.解决办法 1.el-table加ro…...

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

HarmonyOS Next 系列之列表下拉刷新和触底加载更多数据实现(十一)
系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…...

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

SQLAlchemy 学习笔记
通信类型:AF_INET 协议家族一般是表示TCP通信的SOC_STREAM和UDP通信的SOCK_DGRAM。对于TCP通信,建立socket连接,: s socket.socket(socket.AF_INET, socket.SOCK_STREAM)连接socket, s.connect((host,port))socket通信…...

Linux内核分析(调度类和调度实体)
文章目录 前言一、调度类1. stop_sched_class2. dl_sched_class3. rt_sched_class4. fair_sched_class5. idle_sched_class总结 二、调度类中的操作函数三、调度实体 前言 调度是操作系统内核的一个关键职责,它涉及到如何合理分配CPU时间给不同的进程或线程。在Lin…...
用输入输出流(I/O)流,递归复制和删除多级文件
一、(I/O)流递归复制一个文件 第一种: else if语句过多,看起来冗余,优点:多级文件一次性复制完整 import java.io.*;//数据源:src/main/java/day15_8_13/haha //目标;src/main/java/LaJi pub…...

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

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

Chain of Thought (CoT) 系列论文:大模型思维链,提升 LLM 的推理能力
文章目录 1. COT:Chain of Thought1. 研究背景2. CoT的原理3. CoT Prompt 1. COT:Chain of Thought COT 是 2022.01 由 google 提出的针对提升 LLM 的推理能力的 Prompt Engineering 方法。 paper: Chain-of-Thought Prompting Elicits Re…...
已解决:java.net.BindException: 地址已在使用
1. 问题描述 java.net.BindException: 地址已在使用 是一种常见的网络异常,通常在服务器程序尝试绑定到一个已经被占用的端口或地址时出现。具体的异常信息可能如下: 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介绍: STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。 ARM的含义: 公司名称:ARM公司成立于1990年,全称是Advanced RISC Machines(RISC:Reduced Instruction Set Computer 精简指令集计算机 相对应有C…...

Nginx:高效HTTP服务器与反向代理
Nginx:高效HTTP服务器与反向代理 1、核心特点2、应用场景 💖The Begin💖点点关注,收藏不迷路💖 Nginx,一个开源的HTTP服务器与反向代理工具,因其高性能、低资源消耗而备受推崇。以下是Nginx的几…...
vue3二次封装element-puls
将表单的通用信息给设置出来 如: label 的提示信息 , type 的类型 // 定义表单的配置项 const formConfig{ formItems:[ { type:"input", label:"用户ID", placeholder:"请输入用户ID" } ] } 页面配置如 <template v-for"(it…...
在CentOS 7上安装Apache Tomcat 8的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 介绍 Apache Tomcat 是一个用于提供 Java 应用程序的 Web 服务器和 Servlet 容器。Tomcat 是由 Apache 软件基金会发布的 Java Servlet…...

深入理解分布式事务中的三阶段提交(3PC),什么是3PC,3PC原理是怎样?3PC的优化?
在上一篇文章中,我们详细介绍了分布式事务中的两阶段提交,以及知道了两阶段提交存在一定的问题 深入理解分布式事务中的两阶段提交(2PC),什么是2PC,2PC原理是怎样?2PC有没有什么问题࿱…...

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

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...