`

提高 unload/load 性能的技巧

阅读更多
1.去掉数据库(表)日志,提高 load 速度
使用 load 工具进行批量装载时,如果数据库有日志,效率很低;尤其数据量较大时,还可能出现锁溢出、长事务等导致装载失败;对于失败的装载为保证数据一致性, IDS 自动回滚。回滚很耗时,尤其当长事务超出排它高水准线( LTXEHWM )时,其他用户的进程将被挂起,性能进一步恶化。这在联机事务处理环境中,势必影响其他业务的正常运行。为此,对有日志的数据库进行大量数据装载时,尽量去掉数据库日志,提高效率。
对于不能去掉日志的数据库环境,如果 Informix 版本为V9系列,可采用表级日志更改功能,即在装载时停止装载表的日志,装载结束后恢复表日志。
实施步骤:
1)  删除装载表的参照性约束及索引,只能对没有参照性约束及索引的表改变表级日志,所以在装载前先删除表索引及参照性约束,在装载完毕后重新创建。
2)  取掉目的表级日志
ALTER TABLE TABNAME TYPE(RAW)
3)  采用 LOAD 工具装载,创建索引及参照性约束
4)  增加目的表表级日志
ALTER TABLE TABNAME TYPE(STANDARD)
2.采用多进程,加速 unload/load 卸装速度
目前大多数用户数据库服务器配置较高,具有多个 CPU ,物理内存也较大,如果采用单进程卸装海量表,一方面运行速度缓慢,而另一方面大量系统资源闲置。为此,建议采用多进程,加速卸载速度。针对不同的实际情况,可采用不同方法启用多进程:
  将需要装卸的多张表分配到不同的进程中并发装卸,可减少整体装卸载时间;
  将海量表分配到多个进程中并发卸装,可减少海量表的卸载时间

需要说明的是,多进程适合运行在资源充分、负载较轻、具有多个 CPU 的主机上,而对资源较少,或负载已重的主机,启动多进程反而会降低性能,甚至影响其他应用程序的执行。一般来说,在多 CPU 机器上可启动少于物理 CPU 个进程,同时将分割的多个输入输出文件分布在不同设备上。
采用多进程装载海量表,如果装载的数据库有日志,情况较为复杂,需要特别注意锁溢出与长事务的出现,为此采用以下方法:
采用小事务,即每个进程每次装载的数据量适当小。
多进程并发装载同一表,防止锁溢出,表锁设置为页级锁,而非行锁。
去掉表的索引,加速每个进程事务的提交。
3.去掉索引,加速 load 装载速度
索引的根本目的是提高查询效率,但在插入操作时,索引的存在却严重地影响效率。当插入数据量非常大时,索引页重建量也很大,索引结点的分裂也相当频繁, I/O 操作显著增大。同时索引页的分裂,导致需要更多的内存空间来存放分裂前相同的数据量,从而降低缓存效率。
下列情况索引的存在甚至导致装载失败:采用多进程向有日志数据库装载数据时,如果表有索引,锁模式为页锁,则会由于锁碰撞导致装载失败。这是因为每个进程对其插入的索引页加锁,当其他进程插入的记录需要在加锁的索引页上重建的索引时,势必引起索引页上锁碰撞,导致装载失败。这种情况可将表的锁模式改为行锁得到解决,但对于海量数据而言,采用行锁模式不仅锁管理开销庞大,性能低下,而且很可能由于锁溢出而装载失败。所以去掉索引,保证装载的成功。
分享到:
评论

相关推荐

    Informix数据装卸技术

    这些技术包括unload/load、unonload/unonload、dbload、dbexport/dbimport、HPL以及External Table等方法。本文将详细介绍这些技术的基本原理、应用场景、操作步骤以及一些实用技巧。 #### 二、Unload/Load 技术 *...

    DB2 技巧.doc

    DB2技巧文档主要涵盖了数据导入导出、性能调整、字符集、参数调整以及常见问题的解决方案,这些都是DB2数据库管理中的关键环节。 一、数据的导入导出 数据的导入导出是数据库管理中的基础操作,DB2提供了多种工具如...

    ASP.NET十大编程技巧.doc

    在本文档"ASP.NET十大编程技巧.doc"中,作者分享了十个关键技巧,帮助开发者提高ASP.NET编程的效率和应用程序的性能。以下是这十大技巧的详细解释: 1. **避免使用默认名称**:在使用Visual Studio .NET时,应避免...

    【TTS】传输表空间 Linux_To_AIX

    与传统的export/import或者unload/load方法相比,可传输表空间的优势在于其快速性。因为它主要涉及的是数据文件的复制,而元数据的迁移则相对简单。这大大减少了数据迁移所需的时间,特别是在处理大数据集时,优势...

    window linux debug 技巧

    - `.load`/`.unload`:加载或卸载扩展库,如用于处理特定格式的内存转储文件。 - `lm`:列出模块及其版本信息。 - Windbg用法详解文档中可能涵盖如何使用风bg进行堆栈跟踪、调用堆管理函数的分析、使用内核模式...

    精彩编程与编程技巧-VB编程技巧几例...

    本文将深入探讨几个实用的VB编程技巧,帮助开发者提高效率并优化应用程序性能。 #### 二、文本选择与操作 在VB中处理文本时,经常需要进行文本的选择与操作。例如,在`TextBox`控件中,可以通过设置`SelStart`和`...

    vb速查手册之技巧篇.rar

    在VB编程中,技巧的应用往往能显著提高代码的质量和性能。例如,手册可能详细介绍了如何有效利用VB的内置函数和控件,如If...Then...Else语句、For...Next循环、Select Case结构等,来编写简洁而易于理解的代码。...

    精彩编程与编程技巧-如何过滤键盘录入...

    Form_Load 和 Form_Unload 事件 这两个事件分别在窗体加载和卸载时被触发,用于安装和卸载键盘钩子。 ### 二、实现原理 #### 1. Windows钩子机制 Windows钩子机制是一种强大的工具,允许程序截获并处理系统中的...

    JavaScript大综合 常用语句 事件 以及小技巧 和其他信息

    3. **DOM事件**:load、unload、change、submit、focus、blur等。 4. **自定义事件**:通过EventTarget接口实现事件监听和触发。 三、JavaScript小技巧 1. **立即执行函数**(IIFE):避免污染全局作用域。 2. **...

    ASP.NET方法技巧总结

    在ASP.NET开发中,掌握一些实用的技巧可以显著提高工作效率和代码质量。本篇文章主要探讨了HTTP协议、Cookies的使用以及Web窗体代码的编写与执行流程。 首先,HTTP协议是互联网上应用最为广泛的一种网络协议,用于...

    VB知识200问

    在VB编程中,优化程序性能是一项关键的任务,尤其是对于大型应用系统来说,提高运行效率至关重要。以下是一些关于优化VB程序和解决打印问题的策略: 1. 避免使用Variant变量:Variant类型的变量在VB中是最通用的,...

    VisualBasic中的界面设计原则和编程技巧...

    在Visual Basic中,控件的动态加载与卸载是一项重要的技巧,它可以有效地管理内存资源,提高程序的性能。例如,使用Load和Unload方法来控制控件的可见性与存在性,确保程序在不同阶段能够正确地分配和回收资源。 ##...

    Rose的一些使用技巧

    - **Unload**:移除单元包,使其在Rose界面中不可见,但可通过Load操作恢复。 - **WriteProtection**:设置写保护,防止单元包被意外修改,确保数据完整性。 #### 二、Import & Export:资源重用与模型共享 Rose的...

    精彩编程与编程技巧-在运行时维护DBGRID的栏位宽度...

    ### 知识点:在运行时维护DBGrid的栏位宽度 #### 一、DBGrid简介及应用场景 DBGrid是一种常用的界面控件,在...开发者可以根据自己的需求调整代码细节,例如添加错误处理机制、优化性能等,以满足更复杂的场景需求。

    Unity3D教程:格式的导出与加载2

    此外,AssetBundle还可以用于动态下载和更新游戏内容,提高用户体验。 总的来说,Unity3D的AssetBundle系统提供了强大的资源管理功能,使得开发者能够灵活地处理游戏内容的导入、导出和加载,从而优化游戏性能,...

    精彩编程与编程技巧-如何使窗体最小化并消失...

    ### 如何使窗体最小化并消失:精彩编程与编程技巧 ...综上所述,通过合理的编程技巧和适当的 API 函数调用,我们可以轻松实现窗体的最小化和消失功能,这对于提高程序的用户体验和性能具有重要意义。

    .NET 动态加载DLL文件

    .NET框架中的动态加载DLL文件是一项重要的编程技巧,它允许程序在运行时根据需要加载和使用外部库,从而提高代码的灵活性和模块化。这主要通过使用`System.Reflection`命名空间中的类来实现,特别是`Assembly`类。让...

    informix10.0数据库管理员手册

    3. 数据导入导出:手册涵盖了数据迁移和备份恢复的策略,包括使用Informix的LOAD和UNLOAD命令以及第三方工具。 四、安全性与权限 手册深入探讨了Informix的安全模型,包括用户账户管理、角色定义、权限控制以及审计...

    ASP读书笔记

    【ASP读书笔记】 ASP.NET是微软开发的一种用于构建动态网站、Web应用程序和Web服务的技术,它是.NET Framework的一部分。...通过理解以上知识点,可以更好地掌握ASP.NET的开发技巧,提高毕业设计的质量和性能。

    利用反射动态加载dll

    总的来说,利用反射动态加载DLL是C#中的高级技巧,它可以极大地提高代码的灵活性,特别是在处理插件系统、热更新或者需要在运行时根据外部条件加载不同功能的情况下。但同时也需要注意其潜在的性能影响,因为反射...

Global site tag (gtag.js) - Google Analytics