Web 开发人员: 为最佳性能而进行优化?

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
如果您在开发 Web 应用程序,那么您很可能熟悉基于Java连接到数据库的方法:JDBC 和 SQLJ。但是您知道如何能让使用这些方法的应用程序获得最佳性能吗?

微调数据库访问会使应用程序和数据库保持协调一致。

如果您在开发 Web 应用程序,那么您很可能熟悉基于Java连接到数据库的方法:JDBC 和 SQLJ。但是您知道如何能让使用这些方法的应用程序获得最佳性能吗?

如果您认为性能不是开发人员所关心的问题,那么请您再想想,有的系统执行效率一般,有的系统执行效率很棒,造成这一区别的原因是什么呢?我认为这主要在于数据库架构设计师、数据库管理员和应用程序开发人员的技能和经验。

尽管数据库优化应该从最初的设计阶段开始,但是也可以在生产环境中对早已建立的数据库和相关的应用程序进行微调。提高性能并不仅仅包括在数据库中创建索引和规范化,虽然这些也是必须要做的工作,但是仅有此还不够。访问数据库的应用程序设计(及其访问数据库的方式)对获得最佳性能也是至关重要的。

为帮助您提高应用程序性能,针对通过 JDBC(或使用 JDBC 的 IBM WebSphere Application Server)和 SQLJ 来进行数据库存取的应用程序,这里提供了一些优化方面的技巧。


优化 JDBC

几乎所有的企业级 Web 应用程序中都使用三层设计:表示层、应用层和数据层,在这种模型中,基于 Java 的应用程序连接到数据库所采用的标准之一就是 JDBC。

要优化使用 JDBC 接口的数据库访问,请遵循这些准则:

尽量避免使用元数据方法。虽然不能完全避免使用元数据(描述其他数据和引用的数据)方法,但是请尽可能少使用它们。由于它们是添加的抽象层,因而访问它们相对较慢。

避免使用 GETCOLUMNS不要使用 GETCOLUMNS 命令查找表的详细信息,请尝试用 GETMETADATA 命令进行“哑”查询。

避免使用地毯式搜索。在 JDBC 查询中使用数据库命令 LIKEAS 会降低性能,查询大型表时尤其如此。查询中使用空的自变量也会降低性能。请尽可能地消除这些语句。

减少要检索的数据量。仅查询您需要的数据,不要超出此范围。除非绝对必需,否则不要检索很长的数据列表。最好设计一个终端程序,可以一次发送几组数据,就像 Yahoo! 和 Google 这样高度优化的搜索引擎一样。除非使用 SELECT * FROM <TABLE NAME> 是必需的,否则请不要使用此方式。

减少要返回的数据量。通过 SETMAXROWSSETMAXFIELDSIZE 设置查询的界限,将界限与所需的最大数据相匹配,这样会有助于提高性能。例如,搜索引擎不需要返回一次查询中所有 600,000 个匹配。相反,它可以设置合理的界限,使之能满足 99% 的用户,而对于剩下的 1% 的用户,则需要再做一次额外的调用。这种方法要花费更多的时间去构建,并且要很好地了解用户的需求和行为。但是,在非常敏感的企业数据库系统中,像这样做来提高性能是很值得的。

选择合适的数据类型。如果数据库设计经常更改,这种方法可能会引起太多开销。但通常情况下,在建表时选择保存数据所需的最小存储长度的数据类型是一个非常好的方法。例如,当需要整数时,使用整数类型而不是实数或浮点数(后两者需要花费更多的时间来处理)。

使用参数来调用自变量。这一规则在任何应用程序中都是最佳编码方式。固化自变量不灵活,经常导致以后的维护问题。同时,因为在调用存储过程时所有的参数都会作为字符串送往数据库,使用固定值的参数还会降低数据库性能。在远程过程调用(RPC)过程中使用变参效果会更好。

为作业选择正确的游标。弄清楚表所需的游标类型,使用其中能提供最高性能的游标。对于只需顺序读的情况,应选择正向游标。对于需要查询的数据量比较小的应用程序,最好使用Insensitive 游标,该游标会创建数据集的临时拷贝,然后可以在该数据拷贝中遍历,这种游标在 Web 应用程序中尤其常见。Sensitive 游标只用于大的数据集和动态的数据检索,因为它们通常是性能中开销最大的。

管理连接。虽然像 WebSphere 这样的应用服务器能处理大量的会话管理,但还是应该注意一些优化技巧。例如,一次只连接到一个数据源。避免执行 SQL 调用时需要对数据库进行连接和断开连接所带来的高开销。并且尽量共用连接以获得更佳的性能。DB2 通用数据库(UDB)V8.1 还提供了新的连接的集中和简化机制,通过有效自动地管理数据库连接来提高应用程序的性能。

关闭 AUTOCOMMIT这是优化数据库中最重要的规则。您甚至不必去考虑它,只需设置 WSCONNECTION.SETAUTOCOMMIT(FALSE) 即可。

尽可能地使用本地事务。分布式事务会比较慢。

使用 UPDATEXXX 命令取代一般的 update 命令。这个方法对于常要更改数据库设计的系统来说是不适用的。但在设计相对静态的系统中, UPDATEXXX 命令会提高性能,因为具有针对性的命令总是比通用的命令快。

即使对于最复杂的、使用 JDBC 的 Web 应用程序,以上建议仍能使之获得很好的性能。



优化 WebSphere

因为 WebSphere 符合J2EE规范,它的许多连接使用了 JDBC,所以用于 JDBC 的这些优化建议同样适用于它。但是,使用 WebSphere 时,还需知道两个重要的优化技巧:

  • 使用 GETBESTROWIDENTIFIER()使用这个命令来获取最优的列集合,它将减少处理时间。使用 GETPRIMARYKEYS()GETINDEXINFO() 来用格式化 WHERE 子句,这将有助于使开销降到最少。
  • 使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。

 




优化 SQLJ

SQLJ 可以替代 JDBC,它有特定的优势。同样达到最优的性能时,SQLJ 的效率比 JDBC要高好。但是,SQLJ 的灵活性不及 JDBC,因为它使用了更多固定的静态值,而没有提供变量的替换方法。这两个数据库访问方法之间的区别,类似于使用编译型程序(SQLJ)和使用解释型程序(JDBC)之间的区别(前者在运行时之前就执行了一些处理,后者在运行时编译并执行)。

SQLJ 是一种高级语言,它涵盖了 JDBC 的功能,但是它需要非常严格的、特定的函数以确保达到最高性能。和 JDBC 一样,SQLJ 是 Java 程序的标准之一,它保持了 Java 的平台独立性。但是,SQLJ 不符合 J2EE,因此,在所有应用程序服务器中都不支持它。

在许多方法中,需要最高性能的企业级 Web 应用程序要高效地与 DB2 相连,SQLJ 就是关键因素之一。其它数据库在这一级别不支持 SQLJ,因此它通常使 DB2 的工作性能比其竞争对手要好。支持 Web 的 DB2 要想避免性能损失可能很困难,对于事务处理系统来说尤其如此。但是,在真正的静态实现中,SQLJ 和 DB2 具有的性能优势超过其它数据库。

以下准则将有助您利用这个前沿技术:

显式地关闭和释放资源。如果连接到数据库的应用程序需要长期运行,最重要的规则之一是在正确的时机清除活动会话。切记,任何人都不期望经常重新引导系统。

完成后关闭结果集。通常会遗漏这个步骤,但是如果您没有执行这一步骤,则 Java 虚拟机(JVM)垃圾收集机制就不能回收对象。最后应用程序可能耗尽 JDBC 资源,甚至可能耗尽内存。

只更新和访问需要的字段。再一次重申,应该只访问需要的数据,不要超出此范围。

定制 SQLJ profiler和请求联机检查。该步骤防止 SQLJ 动态地访问数据,从而降低性能。这条规则将确保 SQLJ 静态地运行。

调优 JVM 堆的大小。1MB 的缺省堆往往不够大,会影响性能。增大堆的大小以满足应用程序的需要。但是要注意:将堆的大小设置成最大会降低垃圾收集的频率,其结果反而会影响性能。

使版本保持最新。尽量使用新的版本。虽然移植要花费一些精力,但通常值得我们这样做。SQLJ 和 JDBC 都是比较新的标准,每个新的版本都会有比较显著的性能提高。

打开高速缓存。该规则帮助您避免准备动态 SQL 所要的开销。设置 CACHEDYN=YES 将有助于提高 SQLJ 代码的性能。

通过微调 SQLJ,使 Web 应用程序访问数据库的性能能够赶上甚至超越使用 JDBC 时的性能

选择自己的途径

优化数据库有许多可能的途径。不要期望一次就应用所有的方法。如果您一次只从一个途径着手,就应该可以得到性能的提高。通过准备工作和适当的计划,即使是最复杂的数据库应用也能达到最优的性能。别忘了,千里之行始于足下。

Win11性能优化:如何调整至最佳性能模式 通过调整Windows 11的性能模式至最佳性能,您可以显著提升计算机的响应速度和运行效率。本文详细介绍了如何进入系统设置、找到高级系统设置、选择性能选项并调整至最佳性能模式的方法。同时,还提供了其他性能优化建议,帮助您充分利用系统资源,获得最佳的使用体验。希望本文对您有所帮助! 阅读详情

相关推荐

【GitHub项目推荐--7个最佳开源免费Web安全漏洞扫描工具】【转载】

它支持一系列数据库服务器,包括MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、MySQL和SAP MaxDB等。它完全支持六种SQL注入技术,包括:基于时间的盲测、基于布尔的盲测、基于错误、UNION查询、堆栈查询、带外数据等。Web漏洞扫描工具可以用于检测Web应用程序中可能存在的漏洞,例如:代码注入、代码泄漏、跨站脚本、跨站请求伪造、会话劫持、文件传输等。这个工具是用C开发的。

j8267643的博客 4329

最佳性能而进行优化

微调数据库访问会使应用程序和数据库保持协调一致。 如果您在开发 Web 应用程序,那么您很可能熟悉基于Java连接到数据库的方法:JDBC 和 SQLJ。但是您知道如何能让使用这些方法的应用程序获得最佳性能吗? 如果您认为性能不是开发人员所关心的问题,那么请您再想想,有的系统执行效率一般,有的系统执行效率很棒,造成这一区别的原因是什么呢?我认为这主要在于数据库架构设计师、数据库管理员和应用程序开

Jimcs 782

Flutter Web 开发实践与优化

目前,除了可以支持Android、iOS移动跨平台开发之外,Flutter还支持macOS、Windows、Linux和Web等多个跨平台的开发。可以说,作为一款先进的跨平台开发框架,Flutter已经真正意义上实现了“一次编写,处处运行”的美好愿景。众所周知,Dart 语言存在之初就已经支持直接编译成JavaScript,并且针对开发和生产环境的工具链进行了优化。许多重要的应用已经使用 Dart 编译成的 JavaScript 在生产环境上运行,包括 Google Ads 的广告商工具。

xiangzhihong8的专栏 1067

JDBC连接DB2小结

因为工作的关系必须使用DB2,在java中使用jdbc连接需要导入DB2客户端所带的DB2java.zip包才可以正确执行其中DB2支持JDBC连接4中方式中的Type2与Type4(桥接),他们的区别是Type2的方式需要你配置好DB2客户端你的程序才会正确找的服务器,Type4就不需要了。Type2的方式很简单只要你配置好DB2的客户端就一定可以连接的上使用COM.ibm.db2.jdbc

不是程序员 1万+

db2连接超级

前些天碰见这么一个问题,用户的db2版本比较老还是8.1的fp是7.平台为windows.我进系统直接默 认administrator连接db2没有问题.从别的系统连接过去也没啥问题..客户觉的不安全..又建立了一个用户 我也已经让他们加入到db2admin组里.用这个用户连接db2.开始也没啥不正常..当时忙完都快中午了..我 们就去吃饭了..下午回来发现应用挂了..别的系统也连接不上

airmy的专栏 4834

(转)DB2和JDBC 数据库连接- -JDBC 驱动程序揭密

 DB2和JDBC 数据库连接- -                                        JDBC 驱动程序揭密对 Java 产生混淆的常见根源是:JDBC 有不同的版本,JDBC 驱动程序有不同的类型,它们可以被不同版本的 Java 使用。而且,新的 Java 规范总是在开发之中,因为通过 Java 社区过程(Java Community Pro

马岩的博客 1412

JavaScript | Web性能优化

Web 性能是客观的衡量标准,是用户对加载时间和运行时的直观体验。Web 性能指页面加载到可交互和可响应所消耗的时间,以及页面在交互时的流畅度——滚动是否顺滑?按钮能否点击?弹窗能否快速打开,动画是否平滑?Web 性能既包括客观的度量如加载时间,每秒帧数和到页面可交互的时间;也包括用户的对页面内容加载时间的主观感觉。

千禧年无敌优香大王的博客 847

Simula语言的Web性能优化

Simula是一种在1960年代开发的编程语言,通常被认为是面向对象编程的奠基石。Simula语言通过引入类、对象和继承等概念,极大地影响了后来的编程语言如C++、Java和Python。尽管Simula在现代应用程序开发中使用并不普遍,但它所倡导的模块化设计和代码重用的思想,对Web开发中性能优化依然具有一定的指导意义。Web性能优化是一个复杂但重要的课题,合理的优化策略能显著提升用户体验。

2501_91024662的博客 291

页面加载性能Web Vitals

Web Vitals是Google的一项重大举措,旨在为质量信号提供统一的指导,这对于在Web上提供出色的用户体验来说很重要。 网站的开发者需要了解自己的网站给用户带来的体验,但不一定要成为性能优化的专家。Web Vitals旨在简化流程,并帮助网站开发者聚焦在核心性能指标上,也称为Core Web Vitals。 Core Web Vitals Core Web Vitals是Web Vitals的一个子集,适用于所有网页,应该被所有开发者去进行测量,也将在所有Google提供的工具中浮现。每一个Core

找到Web 1万+

web性能优化权威指南_Web优化终极指南(提示和最佳实践)

Web优化Web开发和维护的重要组成部分,但也是网站管理员经常忽略的内容。 只要考虑一下您可以节省的钱,以及在完成正确的选择后,它可能如何帮助增加读者人数和访问量。 如果您到目前为止尚未对网站(或博客)进行任何优化,或者只是好奇它如何帮助您加快网站访问速度,请查看我们汇总的优化提示列表。 为了更好的可读性,我们将内容分为3个部分–分别是服务器端优化 , 资产优化 (包括CSS,Jav...

cune1359的博客 529

8种最佳开源Web服务器

自1991年发布第一台Web服务器以来,这是一段漫长的历程。长期以来,Apache是唯一值得一提的Web服务器。但是,随着时间的流逝,其他开源Web服务器也越来越受欢迎。 在本指南中,我们将介绍一些最佳的开源Web服务器更多企业web实战相关内容 1. Apache HTTP服务器 Apache HTTP Server(在Red Hat发行版中俗称Apache或httpd)是由Apache Software Foundation在Apache License版本2下开发的免费开放源Web服务器。1995年发

Dou_Hua_Hua的博客 1万+

Web 的现状 :网页性能提升指南

技术人员经常会发现自己处于特权状态。随着最新的高端笔记本电脑、手机和快速有线互联网连接 ,很容易让我们忘记 ,这些并不是每个人都有的条件 (实际上 ,真的很少 )。 如果我们从特权和缺乏同情的角度来构建网络平台 ,那么将导致排他性的糟糕体验。 考虑到设计和开发的性能 ,我们怎样才能做得更好 ? 1. 优化所有资源 理解浏览器如何分析和处理资源 ,是显著提高性能的最强大但未充分利用...

xiao_shutong的博客 889

为您的 Web 应用选择最佳文档阅读器

为显示选择合适的文档查看器是开发 Web 应用过程中至关重要的一步。文档查看器应能在提供功能性的同时,确保用户体验的流畅性。开发人员必须评估多种因素,以确保效率、性能和兼容性。本文将帮助您了解影响用户文档浏览体验成功与否的关键指标。

2401_87189539的博客 512

掌握Web图像优化:格式选择与响应式设计

本文深入探讨了Web图像格式的选择、优化和响应式设计。首先介绍了WebP格式的转换方法,接着强调了选择最佳图像格式的重要性,并提供了详细的位图格式选择指南。文章还详细解释了图像分辨率与屏幕分辨率的区别,特别是在高密度显示器(如Retina显示屏)上如何优化图像。最后,提出了图片资源策略,包括使用CSS或SVG来减少图像使用,并在必要时选择合适的位图格式。

weixin_33363025的博客 666

Web前端优化最佳实践及工具集锦

原文来源:http://web.jobbole.com/82197/,发现原文已经无法访问了,所以写下此篇文章,以帮助Web开发人员进行优化。 前端的性能对于一个Web应用来说非常重要,如果一个Web应用的页面加载速度非常快、对于用户的操作可以及时响应,那么产品的用户体验将会极大地提升。下图显示了页面加载速度对于用户体验的影响。 你的Web页面的速度是否已经足够快了?其实可能还有很多可以提升的地方。Google和雅虎也提出了一些Web应用的前端优化建议,并发布了一些工具,你可以逐一检验你的Web应用,

u011608531的专栏 286

世界顶级Web性能专家带你优化出高性能网站

摘要:造成Web性能的原因多种多样,在用户端的主要表现就是访问延迟,这里的延迟指的是从用户通过浏览器、APP点击发起请求到得到反馈所经历的时间,由于Web页面承载的功能越来越多,为了页面效果而使用的多媒体元素也越来越丰富,这些都会造成页面访问的延迟。  作者: Brian Jackson 宽带的普及,让网速变得越来越快的同时也让网页越来越复杂,用户的耐心越来越少,网页打开时间稍

laokdidiao的专栏 1422

vs2017web开发_Web设计人员和开发人员的新鲜资源(2017年5月)

Web开发人员真正希望在其工具箱中收集有用的Web资源 。 因此,作为我自己的开发人员,我努力每月为您提供最佳和最新的Web开发资源 。 本月的收藏包括一个有趣的免费应用程序,可以进行屏幕广播 ,几个基于Material Design语言的框架,几个用于性能测试的库,CLI,以及一些其他方便的资源 。 因此,下面我们逐一检查它们。 点击获取更多资源 .no-js #ref-block...

cune1359的博客 234
上一篇: Windows性能管理解析
下一篇: 性能测试的一些思路
alisisuli
博客等级 码龄19年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值