热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

DB2面向OLTP环境的物理数据库设计:数据和索引压缩

您可以通过使用内置在DB2forLinux,UNIXandWindows数据库中的压缩功能来减少表、索引和备份映像的大小,从而减少数据所需的存储量。表和索引通常包含重复信息。这种重复可能是单独或合并的列值,也可能是列值的共同前缀,或者是在XML数据中的重复模

您可以通过使用内置在 DB2 for Linux, UNIX and Windows 数据库中的压缩功能来减少表、索引和备份映像的大小,从而减少数据所需的存储量。 表和索引通常包含重复信息。这种重复可能是单独或合并的列值,也可能是列值的共同前缀,或者是在 XML 数据中的重复模

您可以通过使用内置在 DB2 for Linux, UNIX and Windows 中的压缩功能来减少表、索引和备份映像的大小,从而减少数据所需的存储量。 表和索引通常包含重复信息。这种重复可能是单独或合并的列值,也可能是列值的共同前缀,或者是在 XML 数据中的重复模式。压缩方法可以使用短字符串或符号来代替重复的信息。 您可以使用一些压缩功能来减少存储表和索引功能所需的空间,同时也可以采用一些功能来确定压缩可以提供的节省。您还可以使用备份压缩来减少备份的大小。 DB2 Version 9.7 的大多数版本中都包含的压缩功能包括:

 值压缩
 备份压缩

以下额外的压缩功能与 DB2 存储优化特性的许可是一起提供的:

 行压缩,包括 XML 存储对象的压缩
 临时表压缩
 压缩的暂时或永久表上的索引压缩

行压缩

行压缩,有时也被称为静态压缩,它用较短的符号字符串替换在各行中重复的值模式,从而压缩数据行。 使用行压缩的主要好处是,您可以在更小的空间中存储数据,可以产生显著的存储成本节省。此外,因为您以较慢的速度使用存储,所以可以推迟额外存储空间的未来支出。 除了节省成本之外,行压缩还可以提高性能。对压缩数据的许多查询可以用更少的 I/O 操作来执行,因为每次从磁盘读取都会带来更多数据。同样,可以将更多数据缓存在缓冲池中,这会增加缓冲池命中率。然而,这里有一个权衡要考虑,数据压缩和解压需要使用额外的CPU周期。 一个表要为行压缩做好准备,有两个要求:

 您必须使用 COMPRESS YES 子句创建或修改一个表,使该表具有使用压缩功能的资格。
 您必须从将要压缩的表中建立一个值或符号的字典。根据您所使用的 DB2 数据库产品的版本,建立压缩字典的手段会有所不同。

在这两个要求得到满足后,就可以压缩在表中插入或更新的数据了。

以下是在表和索引中启用行压缩的一个简单示例:

CREATE TABLE T1 (C1 INT, C2 INT, C3 INT) COMPRESS YES
CREATE INDEX I1 ON T1(C1)
SELECT COMPRESSION FROM SYSCAT.INDEXES WHERE TABNAME=’T1’
COMPRESSION
-----------
Y
1 record(s) selected.

行压缩的良好候选者

检查您的数据库,确定数据库内的哪些表可能是压缩的候选者。最初,启用数据压缩是为了在现有的未压缩表上节省存储。稍后,数据压缩可以帮助您优化未来的存储增长。在数据库现有的表和/或预期随着时间的推移增长得更快的表中,可能会发现一些存储“难题”。

很明显,最大的表是行压缩的候选者,但千万不要忽视较小的表。如果您有数百或数千个较小的表,您可能会受益于压缩许多较小的表的聚合效果。大和小在这里是相对的。数据库的设计就决定着包含一百万或几百万个行的表是大还是小。

几百 KB 以下的小表不是良好的行压缩的候选者,因为可以实现的空间节省并不足以抵消数据压缩字典的存储需求。小表的字典大小约为 100 KB,存储在物理表数据对象中。作为一个经验法则,应该考虑压缩大小为 2 MB 或以上的小表。

只读表是非常好的压缩候选者。如果表中只有少量更新,那么该表可能是一个很好的候选者。如果某个表有大量的更新,那么该表可能不是压缩的良好候选者。读/写比例为 70/30 或更高的表是优秀的压缩候选者。 试图压缩这些表之前,先将大表分隔到它们自己的表空间中。

推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
hbwgz2009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有