我的编程空间,编程开发者的网络收藏夹
学习永远不晚

数据库中如何实现表压缩

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

数据库中如何实现表压缩

这篇文章给大家分享的是有关数据库中如何实现表压缩的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

alter table table_name COMPRESS; --不管多大的表执行这句都很快
alter table table_name COMPRESS FOR OLTP;--不管多大的表执行这句都很快
alter table table_name move COMPRESS FOR OLTP;--大表时执行很慢
alter table table_name move NOCOMPRESS;--大表执行很慢
alter table table_name move COMPRESS;--大表执行很慢

You can enable compression for an existing table by using these clauses in an ALTER TABLE statement. In this case, only data that is inserted or updated after compression is enabled is compressed
您可以通过在ALTER TABLE语句中使用这些子句来启用现有表的压缩。 在这种情况下,只有在启用压缩后插入或更新的数据才被压缩
以上应该指ALTER TABLE TABLENAME COMPRESS [BASIC|FOR OLTP|FOR QUERY|FOR ARCHIVE]这样的操作,这些操作之后更新的数据才被压缩。但是咱们可以使用ALTER TABLE TABLENAME MOVE COMPRESS [BASIC|FOR OLTP|FOR QUERY|FOR ARCHIVE]来对现有表的现有数据和以后更新的数据都进行压缩,如果是大表的话执行会耗时很长。

Determining If a Table Is Compressed
In the *_TABLES data dictionary views, compressed tables have ENABLED in the COMPRESSION column. For partitioned tables, this column is null, and the COMPRESSION column of the *_TAB_PARTITIONS views indicates the partitions that are compressed. In addition, the COMPRESS_FOR column indicates the compression method in use for the table or partition.
确定表是否被压缩
在* _TABLES数据字典视图中,压缩表在COMPRESSION列中已启用。 对于分区表,此列为空,并且* _TAB_PARTITIONS视图的COMPRESSION列表示被压缩的分区。 此外,COMPRESS_FOR列表示用于表或分区的压缩方法。



COMPRESS [BASIC]
Rows inserted without using direct-path insert and updated rows are uncompressed.
不使用直接路径插入和更新的行插入的行是未压缩的。

COMPRESS FOR OLTP
Rows inserted without using direct-path insert and updated rows are compressed using OLTP compression.
不使用直接路径插入和更新行插入的行将使用OLTP压缩进行压缩。

COMPRESS FOR QUERY [LOW|HIGH]
Updated rows and rows inserted without using direct-path insert are stored in row format instead of column format, and thus have a lower compression level.
不使用直接路径插入插入的更新的行和行以行格式而不是列格式存储,因此具有较低的压缩级别。

COMPRESS FOR ARCHIVE [LOW|HIGH]
Updated rows and rows inserted without using direct-path insert are stored in row format instead of column format, and thus have a lower compression level.
不使用直接路径插入插入的更新的行和行以行格式而不是列格式存储,因此具有较低的压缩级别。



As your database grows in size, consider using table compression. Compression saves disk space, reduces memory use in the database buffer cache, and can significantly speed query execution during reads. Compression has a cost in CPU overhead for data loading and DML. However, this cost might be offset by reduced I/O requirements.
Table compression is completely transparent to applications. It is useful in decision support systems (DSS), online transaction processing (OLTP) systems, and archival systems.
You can specify compression for a tablespace, a table, or a partition. If specified at the tablespace level, then all tables created in that tablespace are compressed by default.
Compression can occur while data is being inserted, updated, or bulk loaded into a table. Operations that permit compression include:
Single-row or array inserts and updates
The following direct-path INSERT methods:
Direct path SQL*Loader
CREATE TABLE AS SELECT statements
Parallel INSERT statements
INSERT statements with an APPEND or APPEND_VALUES hint
随着数据库的大小增加,请考虑使用表压缩。 压缩可节省磁盘空间,减少数据库缓冲区高速缓存中的内存使用,并可以显着提高读取期间的查询执行速度。 压缩在数据加载和DML的CPU开销方面具有成本。 然而,这种成本可能被减少的I / O要求所抵消。
表压缩对于应用程序是完全透明的。 它在决策支持系统(DSS),在线交易处理(OLTP)系统和归档系统中很有用。
您可以为表空间,表或分区指定压缩。 如果在表空间级别指定,那么在该表空间中创建的所有表都默认是压缩的。
当数据被插入,更新或批量加载到表中时,可能会发生压缩。 允许压缩的操作包括:
单行或数组插入和更新
以下直接路径INSERT方法:
直接路径SQL * Loader
CREATE TABLE作为SELECT语句
并行INSERT语句
带有APPEND或APPEND_VALUES提示的INSERT语句


When you use basic compression, warehouse compression, or archive compression, compression only occurs when data is bulk loaded into a table.
When you use OLTP compression, compression occurs while data is being inserted, updated, or bulk loaded into a table. Operations that permit compression include:
Single-row or array inserts and updates
Inserts and updates are not compressed immediately. When updating an already compressed block, any columns that are not updated usually remain compressed. Updated columns are stored in an uncompressed format similar to any uncompressed block. The updated values are re-compressed when the block reaches a database-controlled threshold. Inserted data is also compressed when the data in the block reaches a database-controlled threshold.
The following direct-path INSERT methods:
Direct path SQL*Loader
CREATE TABLE AS SELECT statements
Parallel INSERT statements
INSERT statements with an APPEND or APPEND_VALUES hint
当您使用基本压缩,仓库压缩或归档压缩时,仅当数据批量加载到表中时才会进行压缩。
当您使用OLTP压缩时,会在数据插入,更新或批量加载到表中时进行压缩。 允许压缩的操作包括:
单行或数组插入和更新
插入和更新不会立即压缩。 更新已压缩的块时,任何未更新的列通常都保持压缩。 更新的列以与任何未压缩块相似的未压缩格式存储。 当块达到数据库控制的阈值时,更新的值被重新压缩。 当块中的数据达到数据库控制的阈值时,插入的数据也会被压缩。
以下直接路径INSERT方法:
直接路径SQL * Loader
CREATE TABLE作为SELECT语句
并行INSERT语句
带有APPEND或APPEND_VALUES提示的INSERT语句




Basic compression compresses data inserted by direct path load only and supports limited data types and SQL operations. OLTP compression is intended for OLTP applications and compresses data manipulated by any SQL operation.
基本压缩压缩仅通过直接路径加载插入的数据,并支持有限的数据类型和SQL操作。 OLTP压缩适用于OLTP应用程序,并压缩任何SQL操作的数据。
This example demonstrates using the APPEND hint to insert rows into the sales_history table using direct-path INSERT.
INSERT  INTO sales_history SELECT * FROM sales WHERE cust_id=8890;

Warehouse compression and archive compression achieve the highest compression levels because they use Hybrid Columnar Compression technology. Hybrid Columnar Compression technology uses a modified form of columnar storage instead of row-major storage. This enables the database to store similar data together, which improves the effectiveness of compression algorithms. For data that is updated, Hybrid Columnar Compression uses more CPU and moves the updated rows to row format so that future updates are faster. Because of this optimization, you should use it only for data that is updated infrequently.
仓库压缩和归档压缩实现了最高的压缩级别,因为它们使用Hybrid Columnar Compression技术。 混合柱压缩技术使用修改形式的柱状存储,而不是行主存储。 这使得数据库能够将类似的数据存储在一起,这提高了压缩算法的有效性。 对于更新的数据,混合列压缩使用更多的CPU,并将更新的行移动到行格式,以便将来的更新更快。 由于这种优化,您应该仅将其用于不经常更新的数据。

The higher compression levels of Hybrid Columnar Compression are achieved only with data that is direct-path inserted. Conventional inserts and updates are supported, but cause rows to be moved from columnar to row format, and reduce the compression level.
混合柱压缩的较高压缩级别仅通过插入直接路径的数据实现。 支持常规的插入和更新,但是会使行从列格式移动到行格式,并降低压缩级别。

Regardless of the compression method, DELETE operations on a compressed block are identical to DELETE operations on a non-compressed block. Any space obtained on a data block, caused by SQL DELETE operations, is reused by subsequent SQL INSERT operations. With Hybrid Columnar Compression technology, when all the rows in a compression unit are deleted, the space in the compression unit is available for reuse.
无论压缩方法如何,压缩块上的DELETE操作与非压缩块上的DELETE操作相同。 由SQL DELETE操作引起的数据块上获取的任何空间都将被后续的SQL INSERT操作重用。 使用混合柱压缩技术,当压缩单元中的所有行都被删除时,压缩单元中的空间可用于重用。

The following are notes and restrictions related to compressed tables:
Online segment shrink is not supported for compressed tables.
The table compression methods described in this section do not apply to SecureFiles large objects (LOBs). SecureFiles LOBs have their own compression methods. See Oracle Database SecureFiles and Large Objects Developer's Guide for more information.
Compression technology uses CPU. Ensure that you have enough available CPU to handle the additional load.
Tables created with basic compression have the PCT_FREE parameter automatically set to 0 unless you specify otherwise.
以下是与压缩表相关的注释和限制:
压缩表不支持线上缩小。
本节中描述的表压缩方法不适用于SecureFiles大对象(LOB)。 SecureFiles LOB有自己的压缩方法。 有关详细信息,请参阅Oracle Database SecureFiles和Large Objects开发人员指南。
压缩技术使用CPU。 确保您有足够的可用CPU来处理额外的负载。
使用基本压缩创建的表具有PCT_FREE参数自动设置为0,除非另有说明。



move_table_clause
The move_table_clause lets you relocate data of a nonpartitioned table or of a partition of a partitioned table into a new segment, optionally in a different tablespace, and optionally modify any of its storage attributes.
You can also move any LOB data segments associated with the table or partition using the LOB_storage_clause and varray_col_properties clause. LOB items not specified in this clause are not moved.
If you move the table to a different tablespace and the COMPATIBLE parameter is set to 10.0 or higher, then Oracle Database leaves the storage table of any nested table columns in the tablespace in which it was created. If COMPATIBLE is set to any value less than 10.0, then the database silently moves the storage table to the new tablespace along with the table.
move_table_clause允许您将非分区表或分区表的分区的数据重定位到新段(可选地在不同的表空间中),并可选地修改其任何存储属性。
您还可以使用LOB_storage_clause和varray_col_properties子句移动与表或分区关联的任何LOB数据段。 本节中未指定的LOB项目不会移动。
如果将表移动到不同的表空间,并且COMPATIBLE参数设置为10.0或更高版本,那么Oracle数据库将在其创建的表空间中留下任何嵌套表列的存储表。 如果COMPATIBLE设置为小于10.0的任何值,则数据库将静默地将存储表与表一起移动到新的表空间。

感谢各位的阅读!关于“数据库中如何实现表压缩”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

数据库中如何实现表压缩

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VB.NET中怎么实现数据库压缩

VB.NET中怎么实现数据库压缩,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。当我们往数据库中添加数据,然后删除,如此反复,数据库就会变得很大,这样就需要对其进行压缩下面的
2023-06-17

Redis如何实现数据压缩与解压缩功能

Redis是一款高性能的内存数据库,常用于缓存和数据存储。在数据存储方面,Redis提供了压缩和解压缩功能,可以有效地节省内存空间,提高数据存储和传输效率。本文将介绍Redis如何实现数据压缩和解压缩功能,并给出具体代码示例。Redis中的
Redis如何实现数据压缩与解压缩功能
2023-11-07

详解Python如何实现压缩与解压缩数据

本篇教程详细介绍了Python中压缩和解压缩数据的技术。压缩:gzip模块:简单易用,适用于一般数据压缩。zlib模块:高级API,支持不同压缩级别和算法。第三方库:Brotli(高效无损)和LZ4(快速低内存)可提供更好的压缩率。解压缩:压缩模块通常也提供解压缩功能,如gzip.open()。文件对象和IOBuffer可用于直接解压缩压缩文件。通过使用这些工具,开发者可以优化数据存储和传输,满足不同的压缩和解压缩需求。
详解Python如何实现压缩与解压缩数据
2024-04-02

Oracle数据库中表压缩的实现方式和特点

目录oracle数据库中表压缩的实现方式和特点1 基本表压缩(Basic Table Compression)2 OLTP 表压缩(OLTP Table Compression)3 表压缩的实施策略4 表压缩的好处Oracle数据库中表压缩
Oracle数据库中表压缩的实现方式和特点
2024-10-09

如何在Couchbase中实现数据压缩和归档

在Couchbase中实现数据压缩和归档可以通过以下方式:数据压缩:Couchbase本身支持数据压缩功能,可以通过配置bucket的压缩模式来启用数据压缩。在Couchbase管理控制台中,选择要进行数据压缩的bucket,然后在Buck
如何在Couchbase中实现数据压缩和归档
2024-04-09

Hive中如何实现对中间数据启用压缩

这篇文章主要介绍了Hive中如何实现对中间数据启用压缩,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对中间数据启用压缩复杂的Hive查询通常会转换为一系列多阶段的MapRed
2023-06-02

VB.NET如何实现压缩和解压缩

这篇文章主要为大家展示了“VB.NET如何实现压缩和解压缩”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET如何实现压缩和解压缩”这篇文章吧。VB.NET压缩和解压缩实现代码:Publi
2023-06-17

如何在Prometheus中实现数据的去重和压缩

在Prometheus中实现数据的去重和压缩通常是通过配置Prometheus的存储策略来实现的。以下是实现数据去重和压缩的一些步骤:配置存储策略:在Prometheus的配置文件中,可以配置存储策略以控制数据的保留时间和压缩方式。可以通过
如何在Prometheus中实现数据的去重和压缩
2024-03-04

Redis怎么实现数据的压缩和解压缩

Redis可以通过以下方式实现数据的压缩和解压缩:使用Redis的压缩功能:Redis可以通过配置选项来启用对数据的压缩功能。通过配置redis.conf文件中的rdbcompression选项为yes,可以启用RDB文件的压缩功能,从而减
Redis怎么实现数据的压缩和解压缩
2024-05-07

python如何实现参数解压缩

这篇文章主要介绍python如何实现参数解压缩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!参数解压缩有时称为Splat或Scatter运算符*的功能是:在需要将列表/元组中的参数解压缩以进行需要单独的位置参数的函数
2023-06-27

如何在PostgreSQL中实现数据压缩和存储优化

在PostgreSQL中实现数据压缩和存储优化可以通过以下几种方法:使用表分区:将表数据按照特定的规则分割为多个分区,可以提高查询性能和减少索引维护成本。通过分区可以将最常用的数据存储在热区,而将较少使用的数据存储在冷区,从而对存储空间进行
如何在PostgreSQL中实现数据压缩和存储优化
2024-03-14

python如何实现压缩

小编给大家分享一下python如何实现压缩,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!压缩这个方法可以将布尔型的值去掉,例如(False,None,0,“”),
2023-06-27

如何利用Java实现zip压缩解压缩

小编给大家分享一下如何利用Java实现zip压缩解压缩,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  zip压缩文件结构:一个zip文件由多个entry组成,每
2023-06-03

编程热搜

目录