以前写过操作blob的数据库管理系统,用的是oracle9i和oci写的,vc程序,后来用net写的应用微软提供的ado.net中oracleclient接口,效率比oci写的高(理论上不该如此)
今年系统升级,采用oracle10gR2数据库,用oracle的ODP.NET提供的oracleclient接口,在具体实现上注意了充分利用sql语句池的软解析,提高效率:
pCmd.CommandText = "SELECT dwg_id FROM " & sTable & " WHERE dwg_id= :1"
pCmd.Parameters.Add(":1", OracleDbType.Varchar2, lstUnLoad.Items.Item(i - j), System.Data.ParameterDirect
使用方法还是比较简单的,采用parameters接口,将图符号的变量作为参数传入sql,而不直接将图符号的值转入sql语句,避免sql语句的硬解析,可以较高的提高效率,同时oracle10对blob的操作在效率上有所提高,综合效率约为原来的一倍,这种效率的提升是非常明显的,我们甚至去掉了可以中途暂停和停止任务的功能
oracle10g在效率、资源占用、维护性、方便的备份恢复机制上有很大提高,数据库管理和维护变得更加容易。