在AnySQL.net中搜索标签(Tags) 'Array' 的结果:
Perl Array DML的正确错误处理方法
以前一直以为自已的处理方法是对的, 在asyncdata脚角正式使用了一次后, 发现还是错了. 下面一段是原来的处理角本: my $rv = $delstmt->execute_array({ArrayTupleStatus => \@rowstats}); if (! defined($rv)) { # Error processing my $updcnt = @rowstats; for($i=0;$i<$updcnt;$i++) { if (ref $rowstats[$i]) { # Error code : $rowstats[$i]->[0] ...
在Perl中用Array DML来进行性能调优
asyncdata是一个用于同步数据的角本, 基于实体化视图日志或自定义的触发器来获得变更的记录, 然后防照实体化视图刷新的过程来进行数据同步. 几个月之前完成的这一段角本, 现在要拿来作一些数据的迁移用了. 除正确性外, 性能就是最关键的因素了. 在处理SELECT的结果时, 我们已经广泛地使用Array Fetch提升性能了, 不过Array DML真正用得还是不够广的, 相对来说, 在PL/SQL中用得多一些. 现在我要测试的是在Perl中测试Array DML的性能提升. 做的测试是在两个不同的数据中心间进行数据同步, 网络速度肯定是不够快的, 在不用Array DML的情况下, 源节点这边插入一万条记录(表有13个字段, 一个主键索引), 用Perl同步到目标数据库需要40秒, 用dblink的结果更差, 需要一分钟左右. 通过升级DBD Oracle后, 用Array DML方式处理这一万条刻录时(Array Size为500), 只用了4秒钟, 整个速度提升了10倍, 应当可以满足性能要求了. ...
让Perl DBI返回的记录按列存贮
最新版本的Perl DBI接口定义了Array DML接口, 指将一个数组作为一个绑定变量, 这个在数据库的接口层上是早已经支持的了, 象Oracle Pro*C中早就支持命名用数组了. 但在实际使用中, 去发现一点不方便的地方. 通常Perl中返回结果集是按行排列的, 如下所示: { ROW1 {col1, col2, col3, col4}, ROW2 {col1, col2, col3, col4}, ..... ROWn {col1, col2, col3, col4} } 但实际上在绑定时, 是这样的: $sth->bind_param_array( COL1={row1, row2, ... rown}); $sth->bind_param_array( COL2={row1, row2,...
PL/SQL中如何进行批量删除(Bulk Delete)?
在Pro*C中可以为SQL中的绑定变量传入一个数组, 进行批量处理, 减少User Call和Execute Count, 尤其是在客户端服务器的情况下, 这个性能提升十份明显. 在Java中也有类似的executeBatch调用, 最新版本的Perl中也可以用数组来绑定一个变量. Oracle在9i的PL/SQL中正式支持了批量操作, 下面是一个批量删除的例子: DECLARE TYPE ARRROWID IS TABLE OF ROWID INDEX BY BINARY_INTEGER; tbrows ARRROWID; row PLS_INTEGER; cursor delete_table is select row_id from testobj_rowid; BEGIN open delete_table; loop fetch delete_table...
学习Perl DBI -- 真正的Array DML支持
在早期的DBD Oracle (1.18)以前, Array DML的接口是假的, 其实是一条一条地执行的, 而DBD Oracle的主要编写人员也受到了很多开发人员的质问. 在DBD-Oracle v1.19的更改列表中, 我看到了下面的几行: =head1 Changes in DBD-Oracle 1.18 (svn rev 6697) Added support for native Oracle Array interface thanks Kristian Nielsen Added suppot for LOB Locators from Jeffrey Klein. Updated...
学习Perl DBI -- Array Insert/Update/Delete
在DBI的较新版本和DBD的最新版本(如: DBD Oracle V1.19)中就支持了Array DML操作, 这样可以大幅提高应用程序的性能, 在Perl中我们可以通过bind_param_array和execute_array来实现, 如下代码所示: my (@rowstats, $rv); $dbh->{AutoCommit} = 0; my @col1 = (.....); my @col2 = (.....); my $sth = $dbconn->prepare( "INSERT INTO T_PERLARRAY VALUES (?, ?)"); $sth->bind_param_array(1, \@col1); $sth->bind_param_array(2, \@col2); $rv =...
站内搜索 | Search
总数: 534 | 留言: 1687
- Name: Fangxin Lou
- MSN: anysql©live.com
- Mail:anysql©yahoo.com
anysql©gmail.com - Skype: anysql
- AIM: loufangxin
- Mobile:008615925611590
分类 | Categories
软件下载:
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql