Oracle中加速数据导入特性和技术研究
2007-05-10 12:16:37 来源:WEB开发网运用这种方法,先删除 CALLS 表的主键和不唯一的索引,然后逐条导入数据,完成后重新创建索引( 表在导入数据前是空的)。该方法总共消耗 130 秒,包括重建索引的时间,其中导入进程占用 CPU 时间为 35秒。
这种方法的优点是可以加快导入的速度并使索引更加紧凑有效;缺点是缺乏通用性,当你对表增加新的复杂的模式元素(索引、外键等)时你需要添加代码、修改导入执行程序。另外针对 7*24 在线要求的数据库在线导入操作时,删除表的索引会对在线用户的查询有很大的性能影响,同时也要考虑,主要或唯一的关键约束条件的删除或失效可能会影响到引用它们的外键的使用。
批量插入,表暂无索引
在Oracle V6 中 OCI 编程接口加入了数组接口特性。数组操作允许导入程序读取外部文件数据并解析后,向数据库提交SQL语句,批量插入 SQL 语句检索出的数据。Oracle 仅需要执行一次 SQL 语句,然后在内存中批量解析提供的数据。批量导入操作比逐行插入重复操作更有效率,这是因为只需一次解析 SQL 语句,一些数据绑订操作以及程序与数据库之间来回的操作都显著减少,而且数据库对每一条数据的操作都是重复可知的,这给数据库提供了优化执行的可能。其优点是数据导入的总体时间明显减少,特别是进程占用 CPU 的时间。
需要提醒的是,通过 OCI 接口确实可以执行数据批量导入操作,但是许多工具和脚本语言却不支持使用此功能。如果要使用该方法,需要研究你所使用的开发工具是否支持 OCI 批量操作功能。导入程序需要进行复杂的编码并可能存在错误的风险,缺乏一定的弹性。
运用上述方法,程序将外部数据提取到内存中的数组里,并执行批量插入操作(100行/次),保留了表的删除/重建索引操作,总的导入时间下降到 14 秒,而进程占用 CPU 的时间下降到7秒,可见实际导入数据所花费的时间显著下降了 95%。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接