• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >DB2 > 提高数据库性能 让无关处理放到外层实现

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了九号行星外层空间计划,最外层电子数,外层空间,彩虹最外层是什么颜色,最外层电子数决定什么等相关知识,希望本文的分享对您有所帮助
</div>

问题:

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% 左右。

</div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-06-28在 DB2 for Linux, Unix, and Windows 中的行压缩的最佳实践
  • 2017-06-28DB2用户密码修改及数据库备份恢复
  • 2017-06-28讲解主机DB2 9存储过程的规划和实施技巧
  • 2017-06-28利用 DB2 数据库联邦技术整合 Domino 和其他企业应用
  • 2017-06-28DB2 存储过程中如何使用 Optimization Profile
  • 2017-06-28DB2 for Linux, UNIX, and Windows 的锁事件,第 3 部分: 使用 DB2 9.7 中的锁事件监控器来解决并发性问题
  • 2017-06-28详细讲解IBM DB2数据库无限活动日志策略
  • 2017-06-28使用 IBM WebSphere Information Integrator 中的数据联邦技术(2)
  • 2017-06-28修改DB2服务器的主机名
  • 2017-06-28IBM Data Studio Developer 2.1 的新特性

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 选择IBM DB2数据库的五大理由
    • DB2 9.7 中 XML 文档解析和验证错误诊断工具
    • DB2:数据同步方面的经验
    • 索引覆盖和DB2查寻性能
    • DB2在控制中心点选数据库时出现:SQL1031N问题
    • DB2 SQL存储过程语法官方权威指南
    • DB2 UDB的体系结构和数据库简图
    • 使用DB2look实用程序重新创建优化器访问计划(5)
    • 实例讲解DB2中的表空间
    • DB2 用户交流:性能缺陷

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有