网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > DB2教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.在不久的将来有望替代DBA头衔的A.
.循序渐进讲解DB2数据库的内置数据.
.DB2中实现Oracle的相关功能.
.备份和恢复DB2 Universal Databa.
.关于DB2 9数据库优点及缺点详细分.
.DB2:数据同步方面的经验(1).
.验证DB2数据库的备份成功技巧.
.DB2 V9 pureXML 在企业应用程序中.
.Window下修改DB2密码后不能启动的.
.理解 DB2 中列组统计信息.
.为DB2数据库创建表空间.
.使用DB2数据库临时表的注意事项.
.DB2 Version 9.5 pureXML的增强和.
.如何使用重定向恢复操作克隆DB2数.
.DB2 Performance Expert 简化性能.
.DB2数据库归档日志的管理方案简介.
.DB2关联时资料库查询语句基本语法.
.DB2数据库中如何实现Oracle的某些.
.IBM DB2 数据复制迁移方法.
.DB2用户密码修改及数据库备份恢复.

提高数据库性能 让无关处理放到外层实现

发表日期:2008-2-9


  问题:  DB Server 的 CPU 100%,vmstat 的输出也很高。找到CPU高的SQL语句是使用了一个将IP地址字符串转换为数字的 PL/SQL 自定义函数,后来将这个逻辑放到数据库外的VB程序实现,CPU使用率下降,问题解决。  其实那个函数处理并不复杂,也没有访问数据库对象,没想到有如此大的影响。得出的结论就是:与数据库无关的处理过程放到数据库以外的调用程序来实现,即便用SQL程序可以实现也应如此。  还有一个要注重的问题,即不要在查询语句中调用自定义的 PL/SQL 函数,举个例子:  自定义函数如下,输入16位整数IP地址,输出IP所属省份,ipdb 中有8万条数据。CREATE OR REPLACE FUNCTION fn_ipaddr_to_province (p_ipaddr NUMBER)
RETURN VARCHAR2
IS
v_ret VARCHAR2 (100) := '';
BEGIN
BEGIN
SELECT province
INTO v_ret
FROM ipdb
WHERE start_ip <= p_ipaddr AND end_ip >= p_ipaddr AND ROWNUM = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_ret := '';
END;
RETURN v_ret;
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END fn_ipaddr_to_province;
/
  根据省份确定服务器地址,domainname 中有35条数据。  解决方法  方法一:BEGIN
SELECT serverip
INTO v_serverip
FROM domainname
WHERE province = fn_ipaddr_to_province (p_ip) AND ROWNUM = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_serverip := 'mp3.u-vv.com';
END;
...
  这种方法 CPU 使用率 90% 以上  方法二:v_province := fn_ipaddr_to_province (p_ip);
BEGIN
SELECT serverip
INTO v_serverip
FROM domainname
WHERE province = v_province AND ROWNUM = 1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_serverip := 'default domain';
END;
  这种方法 CPU 使用率 40% 左右。
上一篇:DB2 SQL存储过程语法官方权威指南(1) 人气:2031
下一篇:DB2中创建一个汉字拼音首字母的SQL函数(1) 人气:1062
浏览全部DB2教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐