- 浏览: 66154 次
- 性别:
- 来自: 南京
文章分类
最新评论
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 操作显著增大。同时索引页的分裂,导致需要更多的内存空间来存放分裂前相同的数据量,从而降低缓存效率。
下列情况索引的存在甚至导致装载失败:采用多进程向有日志数据库装载数据时,如果表有索引,锁模式为页锁,则会由于锁碰撞导致装载失败。这是因为每个进程对其插入的索引页加锁,当其他进程插入的记录需要在加锁的索引页上重建的索引时,势必引起索引页上锁碰撞,导致装载失败。这种情况可将表的锁模式改为行锁得到解决,但对于海量数据而言,采用行锁模式不仅锁管理开销庞大,性能低下,而且很可能由于锁溢出而装载失败。所以去掉索引,保证装载的成功。
使用 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 操作显著增大。同时索引页的分裂,导致需要更多的内存空间来存放分裂前相同的数据量,从而降低缓存效率。
下列情况索引的存在甚至导致装载失败:采用多进程向有日志数据库装载数据时,如果表有索引,锁模式为页锁,则会由于锁碰撞导致装载失败。这是因为每个进程对其插入的索引页加锁,当其他进程插入的记录需要在加锁的索引页上重建的索引时,势必引起索引页上锁碰撞,导致装载失败。这种情况可将表的锁模式改为行锁得到解决,但对于海量数据而言,采用行锁模式不仅锁管理开销庞大,性能低下,而且很可能由于锁溢出而装载失败。所以去掉索引,保证装载的成功。
发表评论
-
Oracle_查看用户下每个表的数据量
2017-08-30 01:03 01. select 'select '''||a.table_ ... -
Oracle_Procedure
2015-04-06 23:25 0Oracle数据库存储过程技术文档 http://www. ... -
Oracle_DMM_学习笔记
2015-04-02 01:10 0Tianlesoftware+Oracle+学习手册(v1.0 ... -
Oracle_分组排序 zr.wangweiqing@huawei.com
2014-01-20 08:15 813CREATE TABLE HW (DEPID NUMBE ... -
Oracle_Database_9i_10g_11g编程艺术深入数据库体系结构
2013-10-11 01:48 0alter session set events 'immed ... -
内连接,外连接
2013-09-12 19:46 0Union , Union all , Intersect , ... -
Tom大师著作(9i-10g-11g第二版)
2013-09-12 08:03 0Tom大师著作(9i-10g-11g第二版) -
查询表空间使用情况
2013-06-08 16:24 712SELECT D.TABLESPACE_NAME " ... -
Rman_init
2013-03-28 08:12 0【转载】http://www.itpub.ne ... -
oracle中查询语句条件用in
2013-03-15 20:45 10008有一张表tableA,在tableA表的ID字段上建立了索引。 ... -
【转载】OCA、OCP、OCM傻傻分不清?
2013-03-15 20:12 0原文见于 http://blog.chinaunix.net/ ... -
【转载】oracle关闭理解shutdown
2013-03-03 18:07 874windows平台下,oracle 中组成实例的后台进程是由o ... -
oracle ORA-24550
2013-01-19 11:30 0exp sysdb/sysdb file=sysdb_8116 ... -
Shell中调用 sql脚本
2013-01-19 10:56 0#!/usr/bin/ksh echo "===== ... -
循序渐进Oracle_盖国强
2012-12-07 01:39 0什么叫绝招?就是把简单的东西做到极致就是绝招! PLSQ ... -
收集数据库 AWR报告
2012-10-31 17:24 1012Oracle AWR报告 (awrrpt) 一. AWR ... -
删除归档日志_ORA-00257: archiver error. Connect internal only, until freed
2012-10-26 18:24 1399ORA-00257: archiver error. Conn ... -
【转载】ORACLE_根据PID查询正在执行的sql语句
2012-10-12 10:57 6696select /*+ ORDRRED */ sql_tex ... -
create or replace synonym DBFIELD_DICT
2012-07-29 11:11 1508ORA-00600: internal error code, ... -
查询Oracle表空间的使用情况
2012-05-12 22:26 836select a.tablespace_name,a.all_ ...
相关推荐
这些技术包括unload/load、unonload/unonload、dbload、dbexport/dbimport、HPL以及External Table等方法。本文将详细介绍这些技术的基本原理、应用场景、操作步骤以及一些实用技巧。 #### 二、Unload/Load 技术 *...
DB2技巧文档主要涵盖了数据导入导出、性能调整、字符集、参数调整以及常见问题的解决方案,这些都是DB2数据库管理中的关键环节。 一、数据的导入导出 数据的导入导出是数据库管理中的基础操作,DB2提供了多种工具如...
在本文档"ASP.NET十大编程技巧.doc"中,作者分享了十个关键技巧,帮助开发者提高ASP.NET编程的效率和应用程序的性能。以下是这十大技巧的详细解释: 1. **避免使用默认名称**:在使用Visual Studio .NET时,应避免...
与传统的export/import或者unload/load方法相比,可传输表空间的优势在于其快速性。因为它主要涉及的是数据文件的复制,而元数据的迁移则相对简单。这大大减少了数据迁移所需的时间,特别是在处理大数据集时,优势...
- `.load`/`.unload`:加载或卸载扩展库,如用于处理特定格式的内存转储文件。 - `lm`:列出模块及其版本信息。 - Windbg用法详解文档中可能涵盖如何使用风bg进行堆栈跟踪、调用堆管理函数的分析、使用内核模式...
本文将深入探讨几个实用的VB编程技巧,帮助开发者提高效率并优化应用程序性能。 #### 二、文本选择与操作 在VB中处理文本时,经常需要进行文本的选择与操作。例如,在`TextBox`控件中,可以通过设置`SelStart`和`...
在VB编程中,技巧的应用往往能显著提高代码的质量和性能。例如,手册可能详细介绍了如何有效利用VB的内置函数和控件,如If...Then...Else语句、For...Next循环、Select Case结构等,来编写简洁而易于理解的代码。...
Form_Load 和 Form_Unload 事件 这两个事件分别在窗体加载和卸载时被触发,用于安装和卸载键盘钩子。 ### 二、实现原理 #### 1. Windows钩子机制 Windows钩子机制是一种强大的工具,允许程序截获并处理系统中的...
3. **DOM事件**:load、unload、change、submit、focus、blur等。 4. **自定义事件**:通过EventTarget接口实现事件监听和触发。 三、JavaScript小技巧 1. **立即执行函数**(IIFE):避免污染全局作用域。 2. **...
在ASP.NET开发中,掌握一些实用的技巧可以显著提高工作效率和代码质量。本篇文章主要探讨了HTTP协议、Cookies的使用以及Web窗体代码的编写与执行流程。 首先,HTTP协议是互联网上应用最为广泛的一种网络协议,用于...
在VB编程中,优化程序性能是一项关键的任务,尤其是对于大型应用系统来说,提高运行效率至关重要。以下是一些关于优化VB程序和解决打印问题的策略: 1. 避免使用Variant变量:Variant类型的变量在VB中是最通用的,...
在Visual Basic中,控件的动态加载与卸载是一项重要的技巧,它可以有效地管理内存资源,提高程序的性能。例如,使用Load和Unload方法来控制控件的可见性与存在性,确保程序在不同阶段能够正确地分配和回收资源。 ##...
- **Unload**:移除单元包,使其在Rose界面中不可见,但可通过Load操作恢复。 - **WriteProtection**:设置写保护,防止单元包被意外修改,确保数据完整性。 #### 二、Import & Export:资源重用与模型共享 Rose的...
### 知识点:在运行时维护DBGrid的栏位宽度 #### 一、DBGrid简介及应用场景 DBGrid是一种常用的界面控件,在...开发者可以根据自己的需求调整代码细节,例如添加错误处理机制、优化性能等,以满足更复杂的场景需求。
此外,AssetBundle还可以用于动态下载和更新游戏内容,提高用户体验。 总的来说,Unity3D的AssetBundle系统提供了强大的资源管理功能,使得开发者能够灵活地处理游戏内容的导入、导出和加载,从而优化游戏性能,...
### 如何使窗体最小化并消失:精彩编程与编程技巧 ...综上所述,通过合理的编程技巧和适当的 API 函数调用,我们可以轻松实现窗体的最小化和消失功能,这对于提高程序的用户体验和性能具有重要意义。
.NET框架中的动态加载DLL文件是一项重要的编程技巧,它允许程序在运行时根据需要加载和使用外部库,从而提高代码的灵活性和模块化。这主要通过使用`System.Reflection`命名空间中的类来实现,特别是`Assembly`类。让...
3. 数据导入导出:手册涵盖了数据迁移和备份恢复的策略,包括使用Informix的LOAD和UNLOAD命令以及第三方工具。 四、安全性与权限 手册深入探讨了Informix的安全模型,包括用户账户管理、角色定义、权限控制以及审计...
【ASP读书笔记】 ASP.NET是微软开发的一种用于构建动态网站、Web应用程序和Web服务的技术,它是.NET Framework的一部分。...通过理解以上知识点,可以更好地掌握ASP.NET的开发技巧,提高毕业设计的质量和性能。
总的来说,利用反射动态加载DLL是C#中的高级技巧,它可以极大地提高代码的灵活性,特别是在处理插件系统、热更新或者需要在运行时根据外部条件加载不同功能的情况下。但同时也需要注意其潜在的性能影响,因为反射...