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

如何调优数据库注册变量DB2_USE_FAST_PREALLOCATION

尽管DB2pureScale以高可用性、无限扩展性和对应用程序的透明性而著称,性能对于它来说同样重要。本文是DB2pureScale在Power平台上的性能调优系列的又一个专题,主要关于如何调优数据库注册变量DB2_USE_FAST_PREALLOCATION。

尽管 DB2 pureScale 以高可用性、无限扩展性和对应用程序的透明性而著称,性能对于它来说同样重要。本文是 DB2 pureScale 在 Power 平台上的性能调优系列的又一个专题,主要关于如何调优数据库注册变量 DB2_USE_FAST_PREALLOCATION。

本文首先介绍了文件系统中和性能相关的很多方面,主要包括快速预分配和缓存,然后基于我们在实际试验中遇到的性能问题,归纳出在 DB2 pureScale 环境中调优注册变量 DB2_USE_FAST_PREALLOCATION 的最佳实践。

一方面,DB2 pureScale 基于共享数据 (share everything) 的架构设计,要求运行在 IBM 的 GPFS(General Parallel File System)文件系统之上。同 JFS2(Enhanced Journaled File System) 文件系统一样,GPFS 也支持快速预分配功能。快速预分配功能可以显著提高数据库中诸如数据库恢复、表空间创建、表空间大小修改等操作的性能。另一方面,DB2 pureScale 要求数据库中所有的表空间都是自动存储类型的表空间。对于自动存储表空间,容器的创建和空间的分配工作都由数据库管理器来按需进行。

默认情况下,DB2 会在支持 FAST_PREALLOCATION 特性的文件系统上开启该功能,来提高涉及修改表空间大小的操作的性能。我们在测试中发现,对于运行在 GPFS 上的 DB2 pureScale,开启快速预分配功能可以显著提高数据库恢复的性能,但对于运行时的性能却有很大影响。本文将详细阐述我们遇到的问题,分析产生问题的原因,最后给出关于该注册变量设置的最佳实践。

文件系统的快速预分配功能

在阐述我们遇到的问题之前,需要先了解一下文件系统的快速预分配功能。很多文件系统,如:JFS2、GPFS,都支持快速预分配功能。文件系统的快速预分配功能指的是:允许在不进行实际空间分配的情况下来改变一个文件的大小,实际空间的分配会在首次对对应新空间进行写的时候进行。也就是说,应用程序可以让文件系统承诺预留一定的空间给它,此时文件系统只需给应用程序一个承诺,而无需进行实际空间的分配。这样,文件大小的改变就会很快完成,而具体的空间分配工作会在后续进行实际写的时候进行。这种特性对于那些频繁涉及文件大小操作的应用有很大的好处。

对应到 DB2,默认情况下,DB2 会在支持快速预分配功能的文件系统上启用该功能,来提高涉及文件大小更改的数据库操作的性能,如数据库恢复、表空间创建、表空间大小修改。例如,当 DB2 需要创建一个新的表空间时,文件系统不需要立即进行实际空间的分配,实际空间会在 DB2 对对应空间首次插入数据的时候进行分配。而这种运行时实际空间分配带来的开销理论上也是可以忽略的。

文件系统的缓存功能

默认情况下,操作系统会对从磁盘读取或者要写入磁盘的数据进行缓存。这就是文件系统缓存的作用。典型的涉及物理磁盘操作的读过程是:先从磁盘上读取数据,把它放到文件系统的缓存中,然后再把数据从文件系统的缓存拷贝到应用程序的缓存中,这样应用程序才能使用这些数据。同样涉及物理磁盘操作的写过程是:首先把数据从应用程序缓存拷贝到文件系统缓存,然后再从文件系统缓存写到物理磁盘上。可见,文件系统的缓存位于应用程序缓存和磁盘之间,是应用程序和磁盘之间进行数据读写操作的桥梁。

图 1. IO 操作流程
IO 操作流程

对于那些本身没有缓存功能的应用程序,使用文件系统级别的缓存可以带来很大的性能提高。通过文件系统缓存的预读(read-ahead)和延迟写 (write-behind) 功能,应用程序可以节省很多花费在 IO 等待上时间,从而带来性能的极大提高。而对于像数据库这样的应用,它本身已经维护了自己的缓存池(bufferpool),如果在文件系统级别也启用缓存的话,将形成双重缓存的局面,会带来一些额外的 CPU 开销。所以为了避免文件系统和数据库系统重复缓存带来的额外开销,我们一般在数据库场景中会关闭文件系统的缓存功能。

推荐阅读
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 本文对常见的字符串哈希函数进行了全面分析,涵盖了BKDRHash、APHash、DJBHash、JSHash、RSHash、SDBMHash、PJWHash和ELFHash等多种算法。这些哈希函数在不同的应用场景中表现出各异的性能特点,通过对比其算法原理、计算效率和碰撞概率,为实际应用提供了有价值的参考。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
  • 如何使用CSS3创建圆角边框效果? ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 本课程深入探讨了 Python 中自定义序列类的实现方法,涵盖从基础概念到高级技巧的全面解析。通过实例演示,学员将掌握如何创建支持切片操作的自定义序列对象,并了解 `bisect` 模块在序列处理中的应用。适合希望提升 Python 编程技能的中高级开发者。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 大家好,全新的技术专栏《从零开始掌握容器云网络实战》正式上线。该专栏将系统地介绍容器云网络的基础知识、核心技术和实际应用案例,帮助读者全面理解和掌握容器云网络的关键技术与实践方法。 ... [详细]
  • Redis哈希数据结构入门指南
    Redis的哈希数据结构与Java中的HashMap类似,采用数组加链表的方式实现。数组用于存储哈希值的位置,而链表则用于处理哈希冲突的情况。此外,Redis的哈希数据结构还支持高效的字段操作和内存优化,适用于多种应用场景,如缓存和会话管理。 ... [详细]
  • PHP编程中的命名规则与最佳实践 ... [详细]
  • 在Python中,是否可以通过使用Tkinter或ttk库创建一个具有自动换行功能的多行标签,并使其宽度能够随着父容器的变化而动态调整?例如,在调整NotePad窗口宽度时,实现类似记事本的自动换行效果。这种功能在设计需要显示长文本的对话框时非常有用,确保文本内容能够完整且美观地展示。 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
author-avatar
严重孤独症患者_855
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有