精品课程发布 - 美河学习在线(主站) eimhe.com 计算机|外语|培训|资料|课件 -
http://www.eimhe.com/bbs/forumdisplay.php?fid=280
1、《数据库系统工程师考试冲刺指南》
——希赛IT教育研发中心组编,张友生、唐强主编
http://www.educity.cn/book/viewbook.asp?id=79
http://auction1.taobao.com/auction/item_detail-0db2-5e45acb5368f3575407f4dc8b3d5dca7.jhtml
2、《数据库系统工程师考试试题分类精解》
——希赛IT教育研发中心组编,张友生、唐强主编
http://www.educity.cn/book/viewbook.asp?id=86
3、《数据库系统工程师考试考点分析与真题详解(信息系统综合知识篇)(第二版)》
——希赛IT教育研发中心组编,张友生主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=9255306 44.30元
4、《数据库系统工程师考试考点分析与真题详解(数据库设计与管理篇)(第二版)》
——希赛IT教育研发中心组编,周峻松主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=9247254 29.30元
5、《数据库系统工程师考试试题分类精解与题型练习(第2版)》
——希赛IT教育研发中心组编,张友生主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=20172050 44.90元
6、《数据库系统工程师考试考前串讲》
——希赛IT教育研发中心组编,张友生主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=20306185 39.00元
7、数据库系统工程师考试大纲
http://product.dangdang.com/product.aspx?product_id=8841511 4.30元
8、数据库系统概论-(第四版)
http://product.dangdang.com/product.aspx?product_id=20148154 25.35元
9、数据库系统概念(原书第5版)
http://product.dangdang.com/product.aspx?product_id=9222579 52.00元
10、数据库系统导论
http://product.dangdang.com/product.aspx?product_id=9346221 56.10元
11、《数据库系统工程师考试培训视频教程(75课时)》——张友生、王勇、李成主讲,希赛IT教育研发中心出版
http://platform.educity.cn/intro/db.htm 460元
12、《数据库系统工程师考试串讲视频教程(10课时)》——张友生、陈志风主讲,希赛IT教育研发中心出版
http://platform.educity.cn/intro/Dbcj08.htm 198元
13、《数据库系统工程师考试试题讲解视频教程(32课时)》——王勇、唐强主讲,希赛IT教育研发中心出版
http://platform.educity.cn/intro/dbmsst08.htm 218元
14、http://www.leefuu.com/goodsinfo_ODgyNDg=.html 软考视频教程之希赛数据库系统工程师视频教程 软件考试教程3DVD----乐福网上商城
软考视频教程之希赛数据库系统工程师视频教程 软件考试教程3DVD
商品数量:10
销售区域:全国
购物电话: 051269305906 15895581262
联系地址: 苏州 新区 金色家园(新升新苑旁边)
联系邮箱:tanic_2008@qq.com
市场价:¥ 300 元 乐福价:¥ 45 元
运 费:平邮: 6 元 快递: 13 元 EMS: 22 元
15、数据库系统工程师全真预测试卷
http://product.dangdang.com/product.aspx?product_id=9126903 14.3元
16、数据库系统工程师应试辅导(附CD-ROM光盘一张)——全国计算机技术与软件专业技术资格(水平)考试讲义系列 2006年
http://product.dangdang.com/product.aspx?product_id=9136765 39元
17、数据库系统工程师应试教程(附光盘)/全国计算机技术与软件专业技术资格水平考试讲义系列 2006年
http://product.dangdang.com/product.aspx?product_id=9136768 51元
18、数据库系统工程师考试全程指导——全国计算机技术与软件专业技术资格(水平)考试参考用书 2006年
http://product.dangdang.com/product.aspx?product_id=9195518 48.80元
19、数据库系统工程师教程——全国计算机技术与软件专业技术资格(水平)考试指定用书 2004年
http://product.dangdang.com/product.aspx?product_id=8888531 49.50元
20、SAP业务数据传输指南
http://product.dangdang.com/product.aspx?product_id=9221947 42.42元
21、新版中日交流:标准日语 中级(上下册)(附光盘2张)
http://product.dangdang.com/product.aspx?product_id=20354567 55.30元
22、中日交流标准日本语语法全讲全解(中级)
http://product.dangdang.com/product.aspx?product_id=20021167 21.30元
23、SAP高级应用开发:RFC、BAPI、ALE、Workflow、SAP连接器、WebDynpro及BSP
http://product.dangdang.com/product.aspx?product_id=20350610 53.20元
24、Java编程的Web Dynpro
http://www.china-pub.com/41437 50.15元
http://auction1.taobao.com/auction/item_detail-0db1-01c899c7dd644059072a5fc41b7f0b9e.jhtml?pm1=1
25、SAP Smart Forms
http://www.china-pub.com/41438 50.15元
http://auction1.taobao.com/auction/item_detail-0db1-7b1cadb75c0fd3f13e0d210e6c207a33.jhtml?pm1=1
26、SAP基础教程
http://product.dangdang.com/product.aspx?product_id=20088164 42.40元
27、SAP报表与电子商务智能
http://product.dangdang.com/product.aspx?product_id=8755599 35.70元
28、SAP NetWeaver路线图
http://product.dangdang.com/product.aspx?product_id=9018137 37.40元
29、SAP NetWeaver——SAP新一代业务平台
http://product.dangdang.com/product.aspx?product_id=9018140 50.90元
●数据库系统工程师视频教程 - 视频 - 在线观看 - 土豆网
http://www.tudou.com/programs/view/rE8zsNLlhTc/
http://tv.mofile.com/JTJV2YUB/
http://video.baidu.com/v?ct=301989888&word=%CF%A3%C8%FC&db=0&ty=0&pn=0&fbl=1024
数据库系统工程师历年试题:http://data.educity.cn/View_971.html
http://www.educity.cn/data/Class1_N28.html
2007年下半年数据库系统工程师考试试题(全部)
2005年5月数据库系统工程师考试试题结构分析
数据库系统工程师全真预测试卷(含答案)
数据库系统工程师考试历年试题及解答合订本(07.11版本)
ABAP标准视频学习
http://auction1.taobao.com/auction/item_detail-0db2-dd44ac297f44529b7cce2e4b5ba79498.jhtml 599.0元
#######################################################################################################################
http://www.ems.com.cn/products/guo-ji-main.html
国际收件人付费
国际特快专递收件人付费业务简称“国际特快到付业务”。其特点是传递国际特快专递邮件所需的各种费用(如邮资、清关费等)由收件人支付,无需由寄件人承担,只是寄件人在交寄邮件时要填写一份“信用保证单”,承诺在遇有收件人拒收邮件或拒付费用等情况时,寄件人承担全部邮寄费用及所产生的一切相关费用。国际特快到付业务的收费标准与国际特快专递邮件的收费标准相同。
目前我国EMS办理至日本、韩国、台湾、香港、德国、瑞典等国家和地区的到付业务。
如需详细了解此项业务,请拨打邮政客服电话11185,或到当地各邮政营业窗口咨询。
#######################################################################################################################
中国邮政的三种平邮式国际配送方式
1、航空包裹
利用航空运输工具优先发运,时限快于空运水陆路和水陆路包裹。
①主要费用(单位是元):
小包
100克和100克以内 14.00
100克以上续重每100克或其零数加收 9.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
7—15天(以到美国为例)
④ 其他规定:
包裹重量不得超过2公斤。
2、空运水陆路包裹
利用国际航班剩余运力运输,在原寄国和寄达国国内按水陆路处理的邮件。
① 主要费用(单位是元):
小包
100克和100克以内
8.50
100克以上续重每100克或其零数加收
5.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
15—30天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。
3、水陆路包裹
采用汽车、火车或轮船方式运输时限上慢于上述两种函件,邮费比较便宜。
① 主要费用(单位是元):
小包
100克和100克以内
7.00
100克以上续重每100克或其零数加收
4.50
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
30—60天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。
中国邮政的平邮邮包只有查询打电话去查询!
平邮速度一般比较慢,请耐心等待!
也可去问寄件人要包裹号,到邮局领包裹的窗口去咨询,邮局如果不让查一般是怕麻烦!
——————
邮局的正规程序是15天或30天之后可以提供书面填查询单查询,好像还要付费。但是实际效果非常差,基本没有实用价值,因为各地的邮局沟通并不是非常的畅通,而且公事公办的话,都没什么责任心的。偶有两次碰到了平邮15天没到的情况,偶通过下面的方法基本解决了。
*第一步打收件地的11185邮政热线查询收件地的具体邮局电话,具体号码就是收件地区号加11185,报上收件人地址,客服就会查出那个所属邮局了。
*第二步,联系收件地的邮局,询问他们负责发件的部门电话,因为邮局的对外联系电话一般无法查询具体的包裹和信函,所以一定要找到邮局负责发件的部门。
*第三步,就是直接和发件部的工作人员沟通,要注意态度好,强调自己是外地长途,而且包裹比较重要。一般情况,如果包裹已经到收件地邮局了,基本上他们都会有答复的。如果是路上出了问题,那基本上就没希望了。
#######################################################################################################################
达方物流 国际航空小包裹 最低3元到世界各地 深圳广州上海有办事处
http://www.dfpost.com/
2008年12月30日火曜日
中国邮政的三种平邮式国际配送方式
中国邮政的三种平邮式国际配送方式
1、航空包裹
利用航空运输工具优先发运,时限快于空运水陆路和水陆路包裹。
①主要费用(单位是元):
小包
100克和100克以内 14.00
100克以上续重每100克或其零数加收 9.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
7—15天(以到美国为例)
④ 其他规定:
包裹重量不得超过2公斤。
2、空运水陆路包裹
利用国际航班剩余运力运输,在原寄国和寄达国国内按水陆路处理的邮件。
① 主要费用(单位是元):
小包
100克和100克以内
8.50
100克以上续重每100克或其零数加收
5.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
15—30天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。
3、水陆路包裹
采用汽车、火车或轮船方式运输时限上慢于上述两种函件,邮费比较便宜。
① 主要费用(单位是元):
小包
100克和100克以内
7.00
100克以上续重每100克或其零数加收
4.50
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
30—60天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。
1、航空包裹
利用航空运输工具优先发运,时限快于空运水陆路和水陆路包裹。
①主要费用(单位是元):
小包
100克和100克以内 14.00
100克以上续重每100克或其零数加收 9.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
7—15天(以到美国为例)
④ 其他规定:
包裹重量不得超过2公斤。
2、空运水陆路包裹
利用国际航班剩余运力运输,在原寄国和寄达国国内按水陆路处理的邮件。
① 主要费用(单位是元):
小包
100克和100克以内
8.50
100克以上续重每100克或其零数加收
5.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
15—30天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。
3、水陆路包裹
采用汽车、火车或轮船方式运输时限上慢于上述两种函件,邮费比较便宜。
① 主要费用(单位是元):
小包
100克和100克以内
7.00
100克以上续重每100克或其零数加收
4.50
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
30—60天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。
BEA WebLogic平台下J2EE调优攻略
BEA WebLogic平台下J2EE调优攻略:前言
作者:周海根 来源:BEA 发布时间:2007-05-09
摘要:
随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定 地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA webLogic Server是业界领先的应用服务器,BEA webLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。
目录
前 言
第一章 应用程序调优
1.1.1 通用代码调优
1.1.2 减小没有必要的操作
1.1.3 使用合适的类型
1.1.4 尽量使用pool,buffer和cache
1.2 JDBC代码调优
1.2.1 严格资源使用
1.2.2 实用技巧
1.2.3 优化SQL语句
1.3 web代码调优
1.3.1 HttpSession的使用
1.3.2 jsp代码调优
1.3.3 Servlet代码调优
1.4 JMS代码调优
1.4.1 注意必要的事项,避免使用不必要的特征
1.4.2 消息类型的选择
1.4.3 确认方式的选择和JMS事务
1.5 EJB代码调优
1.5.1 有效使用设计模式
1.5.2 使用EJB和webLogic的特性
1.5.3 缓存资源
1.5.4 如何选择和使用Entity Bean
1.5.5 其他的一些小技巧
第二章 应用服务器调优
2.1 JVM调优
2.1.1 垃圾收集和堆大小
2.1.2 jRockit调优
2.2 Server调优
2.2.1 尽量使用本地I/O库
2.2.2 调整默认执行线程数
2.2.3 调整连接参数
2.2.4 创建新的执行队列
2.3 JDBC调优
2.3.1 调整连接池配置
2.4 web调优
2.4.1 调整web应用描述符
2.5 JMS调优
2.6 EJB调优
2.6.1 调整pool和cache
2.6.2 优化事务隔离级别和事务属性
2.6.3 其他一些小技巧
第三章 数据库调优
3.1.1 Oracle性能优化
3.1.2 Oracle的其他调整
第四章 操作系统调优
4.1 操作系统调整
4.1.1 HP-UX
4.1.2 Solaris
4.1.3 AIX
4.1.4 Linux
4.1.5 Windows
第五章 性能监控和性能分析
5.1 性能瓶颈
5.2 操作系统监控
5.3 数据库监控
5.4 webLogic监控
5.4.1 JVM监控
5.4.2 Console监控
5.4.3 实用工具分析
5.5 应用程序分析
总结
参考文献
关于作者
前 言 (目录)
随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定 地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA webLogic Server是业界领先的应用服务器,BEA webLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。
本文从J2EE应用架构(下图)来分别剖析系统调优,首先我们一般会从应用程序出 发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA webLogic8.1)和数据库 (Oracle9i)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。诚然,在我遇到的很多项目中,都是出现了性能问题后才想到调优,而且 一般都是先进行系统参数调整,实在解决不了才会对代码进行检查.实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦 的事情。
webLogic平台J2EE应用架构
BEA WebLogic平台下J2EE调优攻略:应用程序调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第一章 应用程序调优
1.1.1 通用代码调优
1.1.2 减小没有必要的操作
对象的创建是个很昂贵的工作,所以我们应当尽量减少对象的创建,在需要的时候声明它,初 始化它,不要重复初始化一个对象,尽量能做到再使用,而用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式,将减少类的 创建,每次都是通过clone()方法来获得对象。另外使用接口也能减少类的创建。对于成员变量的初始化也应尽量避免, 特别是在一个类派生另一个类时。
异常抛出对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为, fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被 抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。
此外, 建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。
1.1.3 使用合适的类型
当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()代替equal()。
带有final修饰符的类是不可派生的, 如果指定一个类为final,则该类所有的方法都是final。
java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使用final或者static修饰符也是有好处的。
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以尽量使用局部变量。
ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,前者性能更好,大多数情况下选择前者。
1.1.4 尽量使用pool,buffer和cache
使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。
在webLogic中就大量使用了池:JDBC Connection Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以尽可能采用 write(byte[]),Buffered FileOutputStream比Buffered FileWriter要快,因为FileWriter需要Unicode到Byte的转换。
而后面讲到的JDBC、jsp、EJB和JMS我们都非常建议使用buffer和cache。为HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。
此外,使用JDK 1.4的非阻塞I/O对性能也有很大提高。
1.2 JDBC代码调优
1.2.1 严格资源使用
JDBC代码调优最大的原则就是使用webLogic的连接池,而不是自己直连数据库。在我接触的很多自己实现连接池的项目中,大部分遇到死锁和连接泄 漏的问题,最后得不得修改代码。而webLogic提供了功能强大,性能良好的数据库连接池,我们要做的只是封装一个连接管理类,从JNDI树上获取数据 源并缓存,得到连接,并提供一系列关闭数据库资源的方法。
对任何资源使用的原则是用完即关,不管是数据库资源、上下文环境,还是文 件。数据库资源的泄漏极易造成内存泄漏,乃至系统崩溃。在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而 在一个数据库连接多次进行数据库操作时要特别注意ResultSet和Statement依次关闭。
try{
//open connection
pstmt =conn.prepareStatement(strSql1);
pstmt.executeUpdate();
pstmt.close();
pstmt =conn.prepareStatement(strSql2);
rs=pstmt.executeQuery();
while (rs.next()){
//process
}
rs.close();
pstmt.close();
}catch(Exception e){
//close rs,psmt,con
}finally{
//close rs,psmt,con
}
1.2.2 实用技巧
在JDBC操作中还有一些小的技巧跟大家分享:由于获取连接时默认自动提交方式,使用connection.setAutoCommit(false) 关闭自动提交,使用PreparedStatement,批量更新,业务复杂或者大数据量操作时使用存储过程,尽量使用RowSet,此外设置记录集读取 缓存FetchSize和设置记录集读取方向FetchDirection对性能也有一定的提高。
1.2.3 优化SQL语句
SQL语句的优化牵涉到很多数据库的知识,需要与索引配合,因此需要DBA对代码中的SQL进行检查测试。常见的,select *不提倡使用,效率极差,建议显式获取列,即使是所有字段也应罗列,而取总数时使用count(*),为提高cache的命中率,尽量做到SQL重用。对 于大数据量的查询,可以充分利用Oracle数据库的特性,每次取出m-n行的数据,实现分页查询。另外,提高性能的好选择可能就是把所有的字符数据都保 存为Unicode,java以Unicode形式处理所有数据,因此,数据库驱动程序不必再执行转换过程。
1.3 web代码调优
1.3.1 HttpSession的使用
应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session
里的对象不应该是大对象,最好是简单小对象,实现串行化接口。当会话不再需要时,应当及时调用invalidate()方法清除会话。而当某个变量不需要时,及时调用removeAttribute()方法清除变量。请勿将EJB对象放置在session中。
1.3.2 jsp代码调优
目前,在jsp页面中引入外部资源的方法主要有两种:include指令,以及include动作。 include指令:例如<%@ include file="copyright.html" %>,该指令在编译时引入指定的资源。在编译之前,带有include指令的页面和指定的资源被合并成一个文件。被引用的外部资源在编译时就确定, 比运行时才确定资源更高效。
include动作:例如 。该动作引入指定页面执行后生成的结果。由于它在运行时完成,因此对输出结果的控制更加灵活。但是,只有当被引用的内容频繁地改变时,或者在对 主页面的请求没有出现之前,被引用的页面无法确定时,使用include动作才合算。
对于那些无需跟踪会话状态的jsp,关闭自 动创建的会话可以节省一些资源。使用如下page指令: <%@ page session="false"%> ;尽量不要将jsp页面定义为单线程,应设置为<%@page isThreadSafe=”true”%>;在jsp页面最好使用输出缓存功能,如: <%@page buffer="32kb"%>;尽量用wl:cache定制标记来缓存静态或相对静态的内容,缓存jsp:include操作的结果能显著提高应 用程序的运行性能。
1.3.3 Servlet代码调优
Servlet代码调优比较简 单:在Servlet之间跳转时,forward比sendRedirect更有效;设置HttpServletResponse 缓冲区,如:response.setBufferSize(20000);在init()方法里缓存静态数据,而在destroy()中释放它;建议在 Servlet里使用ServletOutputStream输出图片等对象;避免在Servlet和jsp中定界事务等。
1.4 JMS代码调优
1.4.1 注意必要的事项,避免使用不必要的特征
JMS提供了强有力的消息处理机制,但是为了最大限度的提高JMS系统的性能,应避免使用不需要使用的特征,同时也要注意必要的事项。比如:尽量使用接 收程序能直接使用的最简单、最小的消息类型;消息选择器要尽可能简单(最好不使用),尽量不要使用复杂的操作符,如like、in或者between等, 使用字符串数据类型的速度最慢;务必为特定的应用程序定义特定的JMS连接工厂,并且禁用默认的JMS连接工厂;不要在javax.*与 weblogic.*的名字空间中使用JNDI名称;尽量使用异步消费者,线程不必封锁以等待消息的到达;使用完JNDI树上的资源后注意关闭。
1.4.2 消息类型的选择
标准JMS提供了五种消息类型,而TextMessage应用最为普遍, 当发送的消息是几种原始数据类型的集合体时,最好使用MapMessage消息类型,而不要使用ObjectMessage,以便减少不同系统间的耦合。 此外消息是否使用压缩要慎重考虑,压缩未必能减少消息大小。如果生产者、消费者和目的地并置在同一webLogic Server内部,通常不使用压缩。webLogic特有的XMLMessage能为运行于消息主体之上的消息选择器提供内嵌式支持,而且易于数据交换。 因此,建议应用程序之间传送消息使用XML消息格式,而应用程序内部间传送消息使用二进制消息格式。
1.4.3 确认方式的选择和JMS事务
使用事务性会话时,尽量使用恰当的消息确认方式:如果需求允许,使用NO_ACKKNOWLEDGE;非持久的订阅者使用 DUPS_OK_ACKNOWLEDGE或者MULTICAST_NO_ACKNOWLEDGE。而使用JTA的UserTransaction,确认方 式将被忽略。在使用JMS事务时,无效的消息会导致事务的回滚,以致消息重发这样的死循环。此时,可以将无效消息发送到错误消息队列,并提交JMS事务, 这将确保消息不会再次传递。
1.5 EJB代码调优
1.5.1 有效使用设计模式
GoF 的《设计模式》为我们实现高性能、易扩展的J2EE应用提供理论保障和技术支持。而EJB作为J2EE的核心组件和技术,善用设计模式对系统性能影响很 大。Service Locator 和Value Object 已为我们所熟悉,Floyd Marinescu的《EJB Design Patterns》中的Session Fa?ade、Message Fa?ade、EJB Command和Data Transfer Object等设计模式更是为我们提供设计典范:缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级javaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。
1.5.2 使用EJB和webLogic的特性
使用EJB和webLogic的新特性往往能提高性能。与EJB2.0特性相关的技巧有:一个Application中使用本地接口,对于Entity Bean肯定使用本地接口,避免远程调用的开销;使用CMP管理关系,而不是BMP,EJB2.0中CMP的性能大大改善,性能和移植性都优于BMP;使 用ejbSelect进行内部查询;使用home方法进行外部查询和批处理; 数据库驱动级联删除等。
与webLogic特性相关的 技巧有:使用自动生成主键,webLogic为Oracle和Sqlserver两种数据库的CMP提供了自动生成主键功能,节约了Entity Bean产生主键的时间,同时设key-cache-size不小于100;webLogic管理事务性能更好,使用容器管理,而不是Bean管理事 务;webLogic提供了为CMP动态查询和批量插入功能,对性能也有很大帮助。
1.5.3 缓存资源
对SLSB或者MDB来说,使用setMesssageDrivenContext()或者ejbCreate()方法缓存特定资源,在 ejbRemove()方法里释放; 对SLSB或者MDB来说,使用setSessionContext()或者ejbCreate()方法缓存特定资源,在ejbRemove()方法里释 放;对Entity Bean来说,使用setEntityContext ()方法缓存特定资源,在unSetEntityContext ()方法里释放。
1.5.4 如何选择和使用Entity Bean
1. 在设计EJB时,要适当考虑EJB的粒度, 细粒度的EJB在事务管理和资源管理的开销太大,尽量创建粗粒度的 EJB , 不要太粗,粗到能满足实际需求就可以;
2. Entity Bean不是唯一方式,如果只有一个很小的数据子集被经常改变,建议采用JDO;
3. 在操作大数据量的时候,直接采用JDBC比Entity Bean更有效;
4. 避免采用返回很大数据组的finder方法,如 FindAll() 方法,因为它的实现代价太大;
5. 考虑设置域组field groups,减少没有必要并昂贵的属性加载,如BLOB;
6. 对于EJB1.1或者BMP,可以设置is-modified-method-name属性,根据isModified()的值来判断是否调用ejbStore()等方法,减少没有必要运算;
7. 避免连接多个表创建BMP,可以使用视图,存储过程或者O/R Mapping等方式。
1.5.5 其他的一些小技巧
1. 考虑使用 javax.ejb.SessionSynchronization 接口,提供在Rollback之后恢复数据的方法: afterBegin(), beforeCompletion(), afterCompletion();
2. 使用完SFSB之后,调用remove()方法释放实例;
3. 假如你不需要EJB服务的时候,建议使用普通java类;
4. 避免EJB之间相互调用;
5. 使用多读模式。
BEA WebLogic平台下J2EE调优攻略:应用服务器调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第二章 应用服务器调优(目录)
2.1 JVM调优
2.1.1 垃圾收集和堆大小
垃圾收集(GC)是指JVM释放java堆中不再使用的对象所占用的内存的过程,而java堆(Heap)是指java应用程序对象生存的空间。堆大小 决定了GC的频度和时间。堆越大,GC频度低,速度慢。堆越小,GC频度高,速度快。所以GC和堆大小是一组矛盾。为了获取理想的Heap堆大小,需要使 用-verbosegc参数(Sun jdk: -Xloggc:)以打开详细的GC输出。分析GC的频度和时间,结合应用最大负载所需内存情况,得出堆的大小。
通常情 况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值 即:-Xms=-Xmx。而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能 最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。对于sun和hp的jvm,永久域太小(默认4M)也可能造成内存溢 出,应增加参-XX:MaxPermSize=128m。建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8。
为了获得更好的性能,建议在启动文件设置webLogic为产品模式,此时sun和hp jvm JIT引擎为-server,默认情况下打开JIT编译模式对性能也有帮助。调整Chunk Size和Chunk Pool Size也可能对系统的吞吐量有提高。此外还需关闭显示GC: -XX:+DisableExplicitGC。
当然在Intel平台上使用jRockit(使用参数-jrockit)无疑大大提高webLogic性能。
2.1.2 jRockit调优
jRockit支持四种垃圾收集器:分代复制收集器、单空间并发收集器、分代并发收集器和并行收集器。默认状态下,JRockit使用分代并发收集器。 要改变收集器,可使用-Xgc:,对应四个收集器分其他为gencopy, singlecom, gencon以及parallel。为得到更好的响应性能,应该使用并发垃圾回收器:-Xgc:gencon,可使用-Xms和-Xmx设置堆栈的初始大 小和最大值,要设置护理域-Xns为-Xmx的10%。而如果要得到更好的性能,应该选用并行垃圾回收器:-Xgc: parallel,由于并行垃圾回收器不使用nursery,不必设置-Xns。
如果你的线程大于100或者在linux平台下,可以尝试使用瘦线程模式:-Xthinthread,同时关闭Native IO:-Xallocationtype:global。
jRockit 还提供了强大的图形化监控工具Jrockit Management Console。欲详细了解JRockit可访问:http://edocs.bea.com/wljrockit/docs81/index.html。
2.2 Server调优
webLogic Server的核心组件由监听线程,套接字复用器和可执行线程的执行队列组成。当服务器由监听线程接收到连接请求后,将对它的连接控制权交给等待接收请求 的套接字复用器。然后套接字复用器读取离开套接字的请求,并将此请求及相关安全信息或事务处理环境一起置入适当的执行队列中(一般为默认的执行队列)。 当有一个请求出现在执行队列中时,就会有一个空闲的执行线程从该队列中取走发来的该请求,并返回应答,然后等待下一次请求。因此要提高webLogic的 性能,就必须从调整核心组件性能出发。
2.2.1 尽量使用本地I/O库
webLogic Server有两套套接字复用器:java版和本地库。采用小型本地库更有效,尽量激活Enable Native IO(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。如果系统不能加载本地库,将会抛出 java.lang.UnsatisfiedLinkException,此时只能使用java套接字复用器,可以调整socket readers 百分比,默认为33%。该参数可以在Console Server Tuning Configuration配置栏里设置。
2.2.2 调整默认执行线程数
理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总线体系架构、I/O、操作系统的进程调度机制、JVM的线程调度机制。 webLogic生产环境下默认的线程为25个,随着CPU个数的增加,webLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也 就越多,线程数越小,CPU可能无法得到充分利用。为获取一个理想的线程数,需要经过反复的测试。在测试中,可以以25*CPUs为基准进行调整。当空闲 线程较少,CPU利用率比较低时,可以适当增加线程数的大小(每五个递增)。对于PC Server 和Window 2000,则最好每个CPU小于50个线程, 以CPU利用率为90%左右为佳。由于目前webLogic执行线程没有缩小线程数的功能,所以应将参数Threads Increase设置为0,同时不应改变优先级的大小。
2.2.3 调整连接参数
webLogic Server用Accept Backlog参数规定服务器向操作系统请求的队列大小,默认值为50。当系统重载负荷时,这个值可能过小,日志中报Connection Refused,导致有效连接请求遭到拒绝,此时可以提高Accept Backlog 25%直到连接拒绝错误消失。对于Portal类型的应用,默认值往往是不够的。Login Timeout和SSL Login Timeout参数表示普通连接和SSL连接的超时时间,如果客户连接被服务器中断或者SSL容量大,可以尝试增加该值。这些参数可以在Console Server Tuning Configration配置栏里找到。
2.2.4 创建新的执行队列
创建新的执行队列有助于解决核心业务优先、避免交叉阻塞、死锁和长时间处理的业务等问题。通常会将自己的执行队列和默认的执行队列设置不同的优先级,这 里优先级不应设为9或者10。 定义一个新的执行队列很容易,利用View Excute Queue选项中的Configure a new Excute Queue链接即可定制新的执行队列。创建新的执行队列后,用户需要为应用程序的J2EE组件配置分配策略,以便它可以找到新的队列。举个例子:要将 servlet或jsp捆绑到一个特定的执行队列,必须替换web.xml文件项,将wl-dispatch-policy初始化参数设置为自己的执行队 列名。
servletname
/directoryname/deployment.jsp
wl-dispatch-policy
NewExecuteQueueName
我们可以为一个jsp或者servlet乃至一个web应用设置自己的执行队列。同时也可以为EJB设置自己的执行队列。对于执行时间比较长的MDB,建议使用自己的执行队列。
2.3 JDBC调优
2.3.1 调整连接池配置
JDBC Connection Pool的调优受制于webLogic Server线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连 接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最小值和最大值设为一致。
增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮助,webLogic能够为每一个连接缓存这些对象,此值默认为10。在保 证数据库游标大小足够的前提下,可以根据需要提高Statement Cache Size。比如当你设置连接数为25,Cache Size为10时,数据库可能需要打开25*10=250个游标。不幸的是,当遇到与PreparedStatement Cache有关的应用程序错误时,你需要将Cache Size设置为0。
尽管JDBC Connection Pool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表, 同时Test Reserved Connections和Test Released Connections也无需勾上。 当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开。
最后提一下驱动程序类型的选择,以Oracle为 例,Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不 大,随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动。而最新驱动器 由于webLogic server/bin目录下的类包可能不是最新的,请以Oracle网站为准: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs /jdbc9201.html。
2.4 web调优
2.4.1 调整web应用描述符
web应用除代码之外的调优比较简单,仅仅是对一些web应用描述符的调整。首先关闭Session Monitoring Enabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时 间。 同时生产环境下无需检查jsp和servlet:jspPage Check Secs和Servlet Reload Check Secs均设为-1,关闭jspKeep Generated 和jspVerbose对性能也有帮助。此外,还可以对jsp进行预编译,有两种方法:激活precompile选项;使用weblogic.appc事 先编译,建议采用后者。
2.5 JMS调优
1. 增加-Dweblogic.JMSThreadPoolSize=n(至少为5),以提高处理JMS的线程数,在jRockit上增加-XXenablefatspin以减少加锁冲突;
2. 采用文件存储策略,将同步写策略设置为Direct-Write,同时在windows平台上启用磁盘写入缓存;
3. 使用分布式目的地时,激活连接工厂Load Balancing Enabled ,Server Affinity Enabled;
4. 为减少服务器不必要的JMS请求路由,如果多个目的地之间存在事务,则部署在同一JMS服务器上,尽量将连接工厂部署到JMS服务器所在的 webLogic实例上,集群环境下,则最好将连接工厂部署到集群中的所有服务器上,而集群中每个JMS服务器和目的地成员尽量使用类似的设置;
5. 启用消息分页存储功能,以释放内存,可以为JMS服务器和目的地设置, 激活Messages Paging Enabled和Bytes Paging Enabled,同时使用限额防止服务器耗尽接收消息的所有可用内存空间;
6. 在运行webLogic Server进程之外的生产者务必使用流控制, 并增大Send Timeout;
7. 将JMS Server Expiration Scan Interval设很大的值,能禁止主动扫描过期消息;
8. 使用FIFO或者LIFO方式处理目的地消息;
9. MDB的max-beans-in-free-pool不应大于最大MDB线程数(默认线程数/2+1)。
2.6 EJB调优
2.6.1 调整pool和cache
initial-beans-in-free-pool定义SLSB启动时实例的个数,默认为0,可以调大到正常并发数的大小,以减少初始响应时间。 max-beans-in-free-pool为最大个数,默认1000对SLSB来说,在频繁创建和删除实例的情况下很有帮助,一般不用调整,至少设为 默认线程数,过大容易造成内存溢出。而对Entity Bean来说,由于是匿名的,所以当频繁使用finder、home和create方法时可以调大。
对SFSB来说,尽量将max- beans-in-cache参数设置得足够的大,以满足Bean实例对最大并发用户数的要求,可以避免有状态会话Bean过多的钝化行为。而idle- timeout-seconds尽量设置小,如果SFSB不用于存储web应用会话状态可以设置为0。
对于Entity Bean来说, max-beans-in-cache同样可以首先采用默认值1000,监控实例缓存和钝化的情况,再做适当调整。
并行策略concurrency-strategy定义了实体Bean如何管理锁,有四种策略: Exclusive、Databse、ReadOnly、Optimistic。效率依次提高,可靠性依次降低,尽量避免使用互斥策略,如果Bean无需 更新操作,使用只读策略,更甚的是,如果Bean的内容不会改变,可设置read-timeout-seconds为0,乐观并行策略时采用事务间缓存策 略,在entity-cache描述符中将cache-between-transactions元素设为true。
2.6.2 优化事务隔离级别和事务属性
对EJB组件来说,有四种事务隔离水平:
• TRANSACTION-SERIALIZABLE:在处理完成之前拒绝其他处理的读入、可扩展性或插入数据操作;
• TRANSACTION-REPEATABLE-READ:防止处理修改正在被其他处理调用的数据;
• TRANSACTOIN-READ-COMMITTED:防止对正在被其他处理修改的数据执行写锁定;
• TRANSACTION-READ-UNCOMMITTED:允许处理读入未受权的数据以及允许在向结果中添加记录时可以忽略处理。
以上隔离水平依次降低,效率和性能依次提高。因此,建议选用满足在业务数据完整性要求前提下水平最低的隔离级别。
对于事务属性的设置也是如此,对于删除、修改和插入操作设置为Required,而对于只读操作设置为Supports或者NotSupports。
2.6.3 其他一些小技巧
1. 利用finders-load-bean的默认值true,既可以避免“n+1”的查询问题,又可以提高系统的性能;
2. 使用delay-updates-until-end-of-tx参数的默认值true,除非应用程序对某些变化有特别的要求;
3. 应用程序在每个业务方法调用后不需要进行存在性检查,将check-exists-on-method设定为false,以提高程序的性能;
4. 同一应用内, 将enable-call-by-reference设置为 true;
5. reentrant设置为false,避免事先加载子数据。
BEA WebLogic平台下J2EE调优攻略:数据库调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第三章 数据库调优(目录)
3.1.1 Oracle性能优化
Oracle9i的性能优化除了调整kernal之外就是主要对Oracle启动文件的调整,即调整SGA的参数。注意,不同操作系统不同位数的机器最优的参数不是一样的,这里主要有windows和unix之分,32位和64位之分。
首先需要调大进程数和游标数,一般默认的值对实际应用来说都比较小,比如说,进程数可以调到300,游标数可以调到500。
其次,看一个经验公式: OS 使用内存+ SGA + session*(sort_area_size + hash_area_size +2M)<0.7RAM,通常认为此时的SGA比较合理。这里sort_area_size为64k, hash_area_size为128k(当排序多的时候需要增大sort_area_size,按调整后的值计算),session表示最大并发进程 数,假设100个。假如1G内存的机器,OS占用200M,PGA占用200M左右,那么SGA可以设为400-500M,如果2G内存可以1G给 SGA,8G可以5G给SGA。不过对于32位数据库来说,通常最多只能使用1.7G内存。
然后,SGA内参数设置的基本原则 是:data buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多。具体的:data buffer 1G内存可以设置500M,2G设为1.2G,8G可设为5G 。shared_pool_size不易过大,通常应该控制在200M--300M,如果使用了大量的存储过程,可以根据SGA的值增大到500M,如果 增大后命中率得不到提高,则增加是无益的。具体的:1G内存可以设置100M,2G设为150M,8G可设为300M。如不使用 java,java_pool_size 10-20M即可。large_pool_size如果不设置MTS,在20M -30M 即可,假如设置 MTS,可以考虑为 session * (sort_area_size + 2M)。
最后,关于内存的设置可根据statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息来考虑微调。
3.1.2 Oracle的其他调整
为了Oracle高效率的运行,除了上面提到的内存因素之外,还有就是需要良好的数据库设计:表、视图、索引和日志的合理规划和建立。I/O的性能也是重要因素,应尽量减少页交换和页分配。此外,就是改善检查点的效率。
BEA WebLogic平台下J2EE调优攻略:操作系统调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第四章 操作系统调优(目录)
4.1 操作系统调整
操作系统影响应用程序运行性 能的因素主要有:硬件的配置(CPU、内存、硬盘等),核心参数,TCP/IP参数以及补丁的情况等。这里对操作系统的优化,除了更新最新的补丁程序以保 证应用程序正常运行之外,就是调整TCP/IP参数,文件描述符,对于个别操作系统还有其他特别的参数调整。下面将依次介绍不同操作系统的情况,更多的信 息请参考各操作系统的文档。
4.1.1 HP-UX
对于HP-UX,你首先需要安装java Patch:
http://www.hp.com /products1/unix/java/patches/index.html,然后需要确认下面文档中的核心参数是否满足(可以使用sam命令修改 核心参数):http://e-docs.bea.com/platform/suppconfigs/configs81/hpux11_risc /81sp3.html#80105。
调整TCP参数: ndd -set /dev/tcp tcp_conn_req_max 1024, 将侦听队列的最大允许长度调整到1024。 有时操作系统限制进程使用的最大内存数小于你要配置的内存大小,则需要调整该值。
读者可以从http://docs.hp.com/hpux/onlinedocs/TKP-90203/TKP-90203.html了解更多的HP-UX调整建议。
4.1.2 Solaris
调整TCP的参数,等待时间间隔tcp-time-wait-interval建议设置为60000ms: /usr/sbin/ndd ?set /dev/tcp tcp_time_wait_interval 60000;
其他参数调整如下:
tcp_xmit_hiwat/tcp_recv_hiwat 131072
tcp_conn_req_max_q/tcp_conn_req_max_q0 16384
调整一个进程打开的文件描述符的数量:软限制和硬限制以及散列表的大小,修改/etc/system文件:
set tcp:tcp_conn_hash_size=32768
set rlim_fd_cur=8192
set rlim_fd_max=8192
更多的调整信息请查阅: http://docs.sun.com/db/doc/806-7009(Solaris9)。
4.1.3 AIX
AIX用no命令调整TCP参数,等待时间间隔tcp_timewait: no -o tcp_timewait=4,将tcp.timewait参数设置为4个15秒间隔,即1分钟。运行no -a命令将显示网络当前的所有属性值。由于UDP_SENDSPACE默认的缓存大小是8k,为减少I/O异常,需调整为32k:
no -o udp_sendspace=32768。此外, 当webLogic HTTP请求忙时,可以调整侦听队列的最大长somaxconn到8192(默认值是1024)。
更多信息:http://publib16.boulder.ibmo.com/pseries/en-us/aixbman/prftungd/prftungd.htm。
4.1.4 Linux
调整Linux系统使用sysctl命令修改TCP参数等待时间间隔:sysctl -w ip_ct_tcp_timeout_time_wait=60;调整打开文件的最大数:在/etc/sysctl.conf文件中,添加: Fs.file-max=65535,然后运行sysctl -p;调整打开文件描述符最大数为8192:在/etc/security/limits.conf文件,添加:webLogic hard nofile 8192(仅针对webLogic用户),然后在webLogic启动文件里运行ulimit-n 8192激活设置。
更多信息请查阅:http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html。
4.1.5 Windows
Windows系统的调整通过修改注册表HKEY-LOCAL-MACHINESYSTEMCurrent ControlSetServices文件夹来完成。可以调整TcpipParameters子文件夹中的等待时间间隔时间 TcpTimedWaitDelay参数的值。侦听队列最大长度的默认值为15,为修改它,可在InetinfoParameters子目录中创建 DWORD条目ListenBackLog。
此外,Windows2000的Service Pack(要求sp3以上)也会影响系统稳定性: http://e-docs.bea.com/platform/suppconfigs/configs81 /win2ksvr_as_data_pentium/81sp3.html。
BEA WebLogic平台下J2EE调优攻略:性能监控和性能分析
作者:周海根 来源:BEA 发布时间:2007-05-09
第五章 性能监控和性能分析(目录)
5.1 性能瓶颈
最后,介绍一下实际分析J2EE应用性能的常用命令和工具。对于实现一个高性能的J2EE应用来说,掌握了J2EE调优的理论经验还是不够的。掌握性能监控,发现瓶颈和问题诊断才是保证J2EE系统持续高效运行的关键。
瓶 颈指的是限值所有吞吐操作以及严重影响反应时间的系统内资源。在分布式系统内寻找并纠正瓶颈是非常困难的,需要有经验的团队来解决。瓶颈会发生在web服 务器上,程序代码中,应用服务器上,数据库,操作系统或者网络,硬件上。经验表明,瓶颈很容易发生在如下地方:数据库连接与队列中;应用服务器的程序代码 中;应用服务器和web服务器硬件上;网络和TCP配置中。实际中可以着力对这些环节进行监控。
5.2 操作系统监控
操作系统层面的性能监控主要是对内存、CPU、I/O和交换区的使用情况进行监控分析。windows平台可以通过任务管理器和perfmon工具查 看。如果是unix系统可以使用stat系列命令(vmstat, mpstat, iostat)监控内存、CPU和I/O的即时变化,使用swap命令查看交换区的使用情况。如果操作系统安装了top、topas、glance等使用 工具,则使用top、topas、glance将能更为方便地看到webLogic进程对操作系统的内存,CPU和I/O资源使用的即时变化情况。
而网络方面的性能可以通过ping和netstat等命令来监控,主要几个关键的网络统计值,如数据包再发送、重复数据包和数据包侦听丢失。
说明:本文提到的unix命令并非适用所有操作系统,仅供参考。
5.3 数据库监控
数据库层面的监控这里为oracle9i为例来说明,可以采用oracle自带的工具Oracle
Interprise Manager Console来监控session和sql的执行情况。还有其他专业的数据库监控工具可以使用,比如QUEST的 spotlight(http://www.quest.com/spotlight-portal/)可以非常形象和直观地对Oracle数据库的 CPU、内存、I/O、Data Buffer Size、Shared Pool Size、Redo Buffer等参数进行即时监控,并自动对不正常的参数以红色显示。
5.4 webLogic监控
5.4.1 JVM监控
采用java参数-verbose:gc 来分析JVM的GC非常繁琐,而且不直观。使用-Xloggc:gc.log 参数将GC日志写入文件,采用GC 工具HPjtune (http://www.javaperformancetuning.com/tools/hpjtune/index.shtml)进行分析,可以轻 松看出当前jvm参数配置是否合理。
严格意义上来说HPjtune是一个分析工具,不是监控工具。这里不得不提及 jRocket,Intel平台上最快的JVM, 在webLogic启动命令中增加-Xmanagement参数,就可以执行beajrockit81sp3_142_04 in下console命令监 控webLogic的内存使用和CPU负载情况。设置Tools/Preferences菜单中的Mode of operation属性为developer, jRocket将提供Method Profiler工具,她能够将所有在JRockit java虚拟机上执行的成员方法的调用次数、执行的总时间和每次调用的执行时间都统计出来,进行代码级调优,这是jRockit的又一大优势。
5.4.2 Console监控
webLogic Console除了管理配置功能之外,提供了丰富的监控功能。通过webLogic Console,首先我们可以查看服务器的运行情况。
5.4.2.1 Server监控
通过使用服务器的Performance Monitoring选项卡,可以查看到请求吞吐量,执行队列积压情况以及JVM栈利用情况。而通过点击Performance Genaral选项卡中” Monitor all Active Queues...”可以查看所以执行线程的当前统计数据。此外Monitoring选项卡还可以监控JTA和JMS等Service的情况。
5.4.2.2 JDBC监控
在连接池Monitoring选项卡中,webLogic Console为每一个数据库连接池提供了实时统计信息。其中有三个重要参数可以反应webLogic Server的健康状况:Connections High、Wait Second High和Waiters High。Connection High表示从服务器启动开始后到达池的最大连接数量,如果大于池的最大数量,则需要调整Maxium Capacity。Waiters High表示在没有可用连接的情况下,应用程序等待连接的最大个数。我们可以根据Waiters High的大小调整连接池容量。更多的参数可以通过Customize this view链接添加,参数含义参考:http://e-docs.bea.com/wls/docs81/ConsoleHelp /domain_jdbcconnectionpool_monitor.html#1104829。
5.4.2.3 web监控
web Application Monitoring选项卡可以监控web应用的Session个数,以及Servlet的响应情况,激活Session Monitoring Enabled可以获取所有session的统计情况。更多信息请参考:
http://e-docs.bea.com/wls/docs81/ConsoleHelp/web_applications.html#1106723。
5.4.2.4 JMS监控
Welogic Console JMS监控功能比较多,不仅在Server JMS Monitoring选项卡可以监控Active JMS Connections, Pooled JMS Connections和Active JMS Servers的连接和使用情况。还可以监控JMS Session Pool、Active JMS Destinations和Durable Subscribers的消费和生产情况。比如,我们可以监控到JMS Queue的接收和消费消息的数量和字节数。有关JMS监控的详细情况可参见:http://edocs.bea.com/wls/docs81 /ConsoleHelp/jms_monitor.html。
5.4.2.5 EJB监控
EJB监控包括对SLSB,SFSB,Entity Bean,MDB四种EJB的监控。本人认为EJB监控提供了非常丰富的运行时统计信息(http://e-docs.bea.com/wls /docs81/ConsoleHelp/ejb.html#1105036),非常有利于我们对EJB进行性能调优。
SLSB选项 卡为用户提供实例池的运行时统计信息。Pool Miss Ratio 表示实例池的Miss率,Pool Waiter Total Count 表示线程等待bean 实例的累计时间,Pool Timeout Total Count表示超时的线程数。当Pool Miss Ratio较大时,可以增加max-beans-free-pool。
SFSB可以关注Cache Miss Ratio和Activation Count。Cache Miss Ratio过大时,调大max-bean-in-cache未必有帮助,需要尝试不用的max-bean-in-cache以获得最低的Cache Miss Ratio。激活将严重减慢应用程序的速度,如果某一个bean的Activation Count的值过高,那么需要考虑增加max-bean-in-cache的大小。
Entity Bean结合了SLSB的free pool和SFSB的cache。可以结合上面的策略进行监控。
而MDB仅比SLSB多一个参数JMSConnection Alive,报告EJB是否成功连接到JMS目的地。
更多Console监控信息可参见http://edocs.bea.com/wls/docs81/ConsoleHelp/index.html。
5.4.3 实用工具分析
webLogic除了提供Console进行应用监控之外,用户还可以编写JMX程序或者通过SNMP协议进行监控。而QUEST Spotlight for webLogic Server提供了类似webLogic Console类似的监控功能,并对异常情况显红。
这 里不得不提到实战中经常用来分析性能瓶颈的工具THREAD DUMP,统一的命令是使用 weblogic.Admin 命令 THREAD_DUMP。而在 windows上还可以使用+ 来创建诊断问题所需的线程转储Thread Dump,而在unix上使用kill -3 命令。我们从中可以看到webLogic后台线程的运行情况,通常需要每隔10秒左右持续执行几次以助诊断问题。更多信息可 以参考BEA实战集锦。
5.5 应用程序分析
应用程序分析除了凭借程序员丰富的经验和敏 锐的洞察力去人工检查代码之外,使用厂家的工具也是节省时间的不错选择。目前市场上有Borland Optimizeit Enterprise Suite和QUEST Jprobe两个产品可以用来分析性能瓶颈,垃圾收集,内存泄漏,线程死锁和代码复盖等。Hpjmeter是一个免费的工具,也具有以上类似的性能分析功 能。
而Borland Optimizeit Server Trace,HP OpenView Transaction Analyzer和Mercury LoadRunner J2EE breakdown都可以用来分解J2EE应用从客户端访问到最终数据库操作每一层次花费的时间,甚至精确到每一个方法的执行时间。Server Trace还具有检查内存泄漏,连接泄漏和错误警告等功能,一般在测试环境中使用。而HP OTVA的优势在于运行时监控,LoadRunner优势在于压力测试。
总结(目录)
J2EE调优是一门实践和经验科学,是一个复杂而往复的过程。其原则是:合理。合理,看似简单,细细品味,意味深长。本文所述的调优策略并不是一成不变 的,只是为了给大家一个参考建议,让大家少走弯路,关键是根据实际环境调优。欢迎有兴趣的朋友在论坛上积极讨论和批评指正。
参考文献(目录)
[1]BEA webLogic Server edocs: http://e-docs.bea.com/wls/docs81/perform/index.html
[2]Gregory Nyberg & Robert Patrick :Mastering BEA webLogic Server
[3]Jack Shirasi:java Performance Tuning
关于作者(目录)
周海根(dev2dev ID:zhouhg) 合力思软件(中国)有限公司技术顾问,BEA Certified Specialist,BEA dev2dev撰稿人。多年从事J2EE开发工作,目前致力于技术支持工作,主要研究J2EE技术在webLogic上的应用、调优。有着西电人的务实, 喜欢专研技术,是个体育狂热者。
联系方式: 010-85251858-1053,zhouhaigen@hotmail.com
作者:周海根 来源:BEA 发布时间:2007-05-09
摘要:
随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定 地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA webLogic Server是业界领先的应用服务器,BEA webLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。
目录
前 言
第一章 应用程序调优
1.1.1 通用代码调优
1.1.2 减小没有必要的操作
1.1.3 使用合适的类型
1.1.4 尽量使用pool,buffer和cache
1.2 JDBC代码调优
1.2.1 严格资源使用
1.2.2 实用技巧
1.2.3 优化SQL语句
1.3 web代码调优
1.3.1 HttpSession的使用
1.3.2 jsp代码调优
1.3.3 Servlet代码调优
1.4 JMS代码调优
1.4.1 注意必要的事项,避免使用不必要的特征
1.4.2 消息类型的选择
1.4.3 确认方式的选择和JMS事务
1.5 EJB代码调优
1.5.1 有效使用设计模式
1.5.2 使用EJB和webLogic的特性
1.5.3 缓存资源
1.5.4 如何选择和使用Entity Bean
1.5.5 其他的一些小技巧
第二章 应用服务器调优
2.1 JVM调优
2.1.1 垃圾收集和堆大小
2.1.2 jRockit调优
2.2 Server调优
2.2.1 尽量使用本地I/O库
2.2.2 调整默认执行线程数
2.2.3 调整连接参数
2.2.4 创建新的执行队列
2.3 JDBC调优
2.3.1 调整连接池配置
2.4 web调优
2.4.1 调整web应用描述符
2.5 JMS调优
2.6 EJB调优
2.6.1 调整pool和cache
2.6.2 优化事务隔离级别和事务属性
2.6.3 其他一些小技巧
第三章 数据库调优
3.1.1 Oracle性能优化
3.1.2 Oracle的其他调整
第四章 操作系统调优
4.1 操作系统调整
4.1.1 HP-UX
4.1.2 Solaris
4.1.3 AIX
4.1.4 Linux
4.1.5 Windows
第五章 性能监控和性能分析
5.1 性能瓶颈
5.2 操作系统监控
5.3 数据库监控
5.4 webLogic监控
5.4.1 JVM监控
5.4.2 Console监控
5.4.3 实用工具分析
5.5 应用程序分析
总结
参考文献
关于作者
前 言 (目录)
随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定 地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA webLogic Server是业界领先的应用服务器,BEA webLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。
本文从J2EE应用架构(下图)来分别剖析系统调优,首先我们一般会从应用程序出 发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA webLogic8.1)和数据库 (Oracle9i)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。诚然,在我遇到的很多项目中,都是出现了性能问题后才想到调优,而且 一般都是先进行系统参数调整,实在解决不了才会对代码进行检查.实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦 的事情。
webLogic平台J2EE应用架构
BEA WebLogic平台下J2EE调优攻略:应用程序调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第一章 应用程序调优
1.1.1 通用代码调优
1.1.2 减小没有必要的操作
对象的创建是个很昂贵的工作,所以我们应当尽量减少对象的创建,在需要的时候声明它,初 始化它,不要重复初始化一个对象,尽量能做到再使用,而用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式,将减少类的 创建,每次都是通过clone()方法来获得对象。另外使用接口也能减少类的创建。对于成员变量的初始化也应尽量避免, 特别是在一个类派生另一个类时。
异常抛出对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为, fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被 抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。
此外, 建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。
1.1.3 使用合适的类型
当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()代替equal()。
带有final修饰符的类是不可派生的, 如果指定一个类为final,则该类所有的方法都是final。
java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使用final或者static修饰符也是有好处的。
调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以尽量使用局部变量。
ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,前者性能更好,大多数情况下选择前者。
1.1.4 尽量使用pool,buffer和cache
使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。
在webLogic中就大量使用了池:JDBC Connection Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以尽可能采用 write(byte[]),Buffered FileOutputStream比Buffered FileWriter要快,因为FileWriter需要Unicode到Byte的转换。
而后面讲到的JDBC、jsp、EJB和JMS我们都非常建议使用buffer和cache。为HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。
此外,使用JDK 1.4的非阻塞I/O对性能也有很大提高。
1.2 JDBC代码调优
1.2.1 严格资源使用
JDBC代码调优最大的原则就是使用webLogic的连接池,而不是自己直连数据库。在我接触的很多自己实现连接池的项目中,大部分遇到死锁和连接泄 漏的问题,最后得不得修改代码。而webLogic提供了功能强大,性能良好的数据库连接池,我们要做的只是封装一个连接管理类,从JNDI树上获取数据 源并缓存,得到连接,并提供一系列关闭数据库资源的方法。
对任何资源使用的原则是用完即关,不管是数据库资源、上下文环境,还是文 件。数据库资源的泄漏极易造成内存泄漏,乃至系统崩溃。在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而 在一个数据库连接多次进行数据库操作时要特别注意ResultSet和Statement依次关闭。
try{
//open connection
pstmt =conn.prepareStatement(strSql1);
pstmt.executeUpdate();
pstmt.close();
pstmt =conn.prepareStatement(strSql2);
rs=pstmt.executeQuery();
while (rs.next()){
//process
}
rs.close();
pstmt.close();
}catch(Exception e){
//close rs,psmt,con
}finally{
//close rs,psmt,con
}
1.2.2 实用技巧
在JDBC操作中还有一些小的技巧跟大家分享:由于获取连接时默认自动提交方式,使用connection.setAutoCommit(false) 关闭自动提交,使用PreparedStatement,批量更新,业务复杂或者大数据量操作时使用存储过程,尽量使用RowSet,此外设置记录集读取 缓存FetchSize和设置记录集读取方向FetchDirection对性能也有一定的提高。
1.2.3 优化SQL语句
SQL语句的优化牵涉到很多数据库的知识,需要与索引配合,因此需要DBA对代码中的SQL进行检查测试。常见的,select *不提倡使用,效率极差,建议显式获取列,即使是所有字段也应罗列,而取总数时使用count(*),为提高cache的命中率,尽量做到SQL重用。对 于大数据量的查询,可以充分利用Oracle数据库的特性,每次取出m-n行的数据,实现分页查询。另外,提高性能的好选择可能就是把所有的字符数据都保 存为Unicode,java以Unicode形式处理所有数据,因此,数据库驱动程序不必再执行转换过程。
1.3 web代码调优
1.3.1 HttpSession的使用
应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session
里的对象不应该是大对象,最好是简单小对象,实现串行化接口。当会话不再需要时,应当及时调用invalidate()方法清除会话。而当某个变量不需要时,及时调用removeAttribute()方法清除变量。请勿将EJB对象放置在session中。
1.3.2 jsp代码调优
目前,在jsp页面中引入外部资源的方法主要有两种:include指令,以及include动作。 include指令:例如<%@ include file="copyright.html" %>,该指令在编译时引入指定的资源。在编译之前,带有include指令的页面和指定的资源被合并成一个文件。被引用的外部资源在编译时就确定, 比运行时才确定资源更高效。
include动作:例如
对于那些无需跟踪会话状态的jsp,关闭自 动创建的会话可以节省一些资源。使用如下page指令: <%@ page session="false"%> ;尽量不要将jsp页面定义为单线程,应设置为<%@page isThreadSafe=”true”%>;在jsp页面最好使用输出缓存功能,如: <%@page buffer="32kb"%>;尽量用wl:cache定制标记来缓存静态或相对静态的内容,缓存jsp:include操作的结果能显著提高应 用程序的运行性能。
1.3.3 Servlet代码调优
Servlet代码调优比较简 单:在Servlet之间跳转时,forward比sendRedirect更有效;设置HttpServletResponse 缓冲区,如:response.setBufferSize(20000);在init()方法里缓存静态数据,而在destroy()中释放它;建议在 Servlet里使用ServletOutputStream输出图片等对象;避免在Servlet和jsp中定界事务等。
1.4 JMS代码调优
1.4.1 注意必要的事项,避免使用不必要的特征
JMS提供了强有力的消息处理机制,但是为了最大限度的提高JMS系统的性能,应避免使用不需要使用的特征,同时也要注意必要的事项。比如:尽量使用接 收程序能直接使用的最简单、最小的消息类型;消息选择器要尽可能简单(最好不使用),尽量不要使用复杂的操作符,如like、in或者between等, 使用字符串数据类型的速度最慢;务必为特定的应用程序定义特定的JMS连接工厂,并且禁用默认的JMS连接工厂;不要在javax.*与 weblogic.*的名字空间中使用JNDI名称;尽量使用异步消费者,线程不必封锁以等待消息的到达;使用完JNDI树上的资源后注意关闭。
1.4.2 消息类型的选择
标准JMS提供了五种消息类型,而TextMessage应用最为普遍, 当发送的消息是几种原始数据类型的集合体时,最好使用MapMessage消息类型,而不要使用ObjectMessage,以便减少不同系统间的耦合。 此外消息是否使用压缩要慎重考虑,压缩未必能减少消息大小。如果生产者、消费者和目的地并置在同一webLogic Server内部,通常不使用压缩。webLogic特有的XMLMessage能为运行于消息主体之上的消息选择器提供内嵌式支持,而且易于数据交换。 因此,建议应用程序之间传送消息使用XML消息格式,而应用程序内部间传送消息使用二进制消息格式。
1.4.3 确认方式的选择和JMS事务
使用事务性会话时,尽量使用恰当的消息确认方式:如果需求允许,使用NO_ACKKNOWLEDGE;非持久的订阅者使用 DUPS_OK_ACKNOWLEDGE或者MULTICAST_NO_ACKNOWLEDGE。而使用JTA的UserTransaction,确认方 式将被忽略。在使用JMS事务时,无效的消息会导致事务的回滚,以致消息重发这样的死循环。此时,可以将无效消息发送到错误消息队列,并提交JMS事务, 这将确保消息不会再次传递。
1.5 EJB代码调优
1.5.1 有效使用设计模式
GoF 的《设计模式》为我们实现高性能、易扩展的J2EE应用提供理论保障和技术支持。而EJB作为J2EE的核心组件和技术,善用设计模式对系统性能影响很 大。Service Locator 和Value Object 已为我们所熟悉,Floyd Marinescu的《EJB Design Patterns》中的Session Fa?ade、Message Fa?ade、EJB Command和Data Transfer Object等设计模式更是为我们提供设计典范:缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级javaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。
1.5.2 使用EJB和webLogic的特性
使用EJB和webLogic的新特性往往能提高性能。与EJB2.0特性相关的技巧有:一个Application中使用本地接口,对于Entity Bean肯定使用本地接口,避免远程调用的开销;使用CMP管理关系,而不是BMP,EJB2.0中CMP的性能大大改善,性能和移植性都优于BMP;使 用ejbSelect进行内部查询;使用home方法进行外部查询和批处理; 数据库驱动级联删除等。
与webLogic特性相关的 技巧有:使用自动生成主键,webLogic为Oracle和Sqlserver两种数据库的CMP提供了自动生成主键功能,节约了Entity Bean产生主键的时间,同时设key-cache-size不小于100;webLogic管理事务性能更好,使用容器管理,而不是Bean管理事 务;webLogic提供了为CMP动态查询和批量插入功能,对性能也有很大帮助。
1.5.3 缓存资源
对SLSB或者MDB来说,使用setMesssageDrivenContext()或者ejbCreate()方法缓存特定资源,在 ejbRemove()方法里释放; 对SLSB或者MDB来说,使用setSessionContext()或者ejbCreate()方法缓存特定资源,在ejbRemove()方法里释 放;对Entity Bean来说,使用setEntityContext ()方法缓存特定资源,在unSetEntityContext ()方法里释放。
1.5.4 如何选择和使用Entity Bean
1. 在设计EJB时,要适当考虑EJB的粒度, 细粒度的EJB在事务管理和资源管理的开销太大,尽量创建粗粒度的 EJB , 不要太粗,粗到能满足实际需求就可以;
2. Entity Bean不是唯一方式,如果只有一个很小的数据子集被经常改变,建议采用JDO;
3. 在操作大数据量的时候,直接采用JDBC比Entity Bean更有效;
4. 避免采用返回很大数据组的finder方法,如 FindAll() 方法,因为它的实现代价太大;
5. 考虑设置域组field groups,减少没有必要并昂贵的属性加载,如BLOB;
6. 对于EJB1.1或者BMP,可以设置is-modified-method-name属性,根据isModified()的值来判断是否调用ejbStore()等方法,减少没有必要运算;
7. 避免连接多个表创建BMP,可以使用视图,存储过程或者O/R Mapping等方式。
1.5.5 其他的一些小技巧
1. 考虑使用 javax.ejb.SessionSynchronization 接口,提供在Rollback之后恢复数据的方法: afterBegin(), beforeCompletion(), afterCompletion();
2. 使用完SFSB之后,调用remove()方法释放实例;
3. 假如你不需要EJB服务的时候,建议使用普通java类;
4. 避免EJB之间相互调用;
5. 使用多读模式。
BEA WebLogic平台下J2EE调优攻略:应用服务器调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第二章 应用服务器调优(目录)
2.1 JVM调优
2.1.1 垃圾收集和堆大小
垃圾收集(GC)是指JVM释放java堆中不再使用的对象所占用的内存的过程,而java堆(Heap)是指java应用程序对象生存的空间。堆大小 决定了GC的频度和时间。堆越大,GC频度低,速度慢。堆越小,GC频度高,速度快。所以GC和堆大小是一组矛盾。为了获取理想的Heap堆大小,需要使 用-verbosegc参数(Sun jdk: -Xloggc:
通常情 况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值 即:-Xms=-Xmx。而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能 最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。对于sun和hp的jvm,永久域太小(默认4M)也可能造成内存溢 出,应增加参-XX:MaxPermSize=128m。建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8。
为了获得更好的性能,建议在启动文件设置webLogic为产品模式,此时sun和hp jvm JIT引擎为-server,默认情况下打开JIT编译模式对性能也有帮助。调整Chunk Size和Chunk Pool Size也可能对系统的吞吐量有提高。此外还需关闭显示GC: -XX:+DisableExplicitGC。
当然在Intel平台上使用jRockit(使用参数-jrockit)无疑大大提高webLogic性能。
2.1.2 jRockit调优
jRockit支持四种垃圾收集器:分代复制收集器、单空间并发收集器、分代并发收集器和并行收集器。默认状态下,JRockit使用分代并发收集器。 要改变收集器,可使用-Xgc:
如果你的线程大于100或者在linux平台下,可以尝试使用瘦线程模式:-Xthinthread,同时关闭Native IO:-Xallocationtype:global。
jRockit 还提供了强大的图形化监控工具Jrockit Management Console。欲详细了解JRockit可访问:http://edocs.bea.com/wljrockit/docs81/index.html。
2.2 Server调优
webLogic Server的核心组件由监听线程,套接字复用器和可执行线程的执行队列组成。当服务器由监听线程接收到连接请求后,将对它的连接控制权交给等待接收请求 的套接字复用器。然后套接字复用器读取离开套接字的请求,并将此请求及相关安全信息或事务处理环境一起置入适当的执行队列中(一般为默认的执行队列)。 当有一个请求出现在执行队列中时,就会有一个空闲的执行线程从该队列中取走发来的该请求,并返回应答,然后等待下一次请求。因此要提高webLogic的 性能,就必须从调整核心组件性能出发。
2.2.1 尽量使用本地I/O库
webLogic Server有两套套接字复用器:java版和本地库。采用小型本地库更有效,尽量激活Enable Native IO(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。如果系统不能加载本地库,将会抛出 java.lang.UnsatisfiedLinkException,此时只能使用java套接字复用器,可以调整socket readers 百分比,默认为33%。该参数可以在Console Server Tuning Configuration配置栏里设置。
2.2.2 调整默认执行线程数
理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总线体系架构、I/O、操作系统的进程调度机制、JVM的线程调度机制。 webLogic生产环境下默认的线程为25个,随着CPU个数的增加,webLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也 就越多,线程数越小,CPU可能无法得到充分利用。为获取一个理想的线程数,需要经过反复的测试。在测试中,可以以25*CPUs为基准进行调整。当空闲 线程较少,CPU利用率比较低时,可以适当增加线程数的大小(每五个递增)。对于PC Server 和Window 2000,则最好每个CPU小于50个线程, 以CPU利用率为90%左右为佳。由于目前webLogic执行线程没有缩小线程数的功能,所以应将参数Threads Increase设置为0,同时不应改变优先级的大小。
2.2.3 调整连接参数
webLogic Server用Accept Backlog参数规定服务器向操作系统请求的队列大小,默认值为50。当系统重载负荷时,这个值可能过小,日志中报Connection Refused,导致有效连接请求遭到拒绝,此时可以提高Accept Backlog 25%直到连接拒绝错误消失。对于Portal类型的应用,默认值往往是不够的。Login Timeout和SSL Login Timeout参数表示普通连接和SSL连接的超时时间,如果客户连接被服务器中断或者SSL容量大,可以尝试增加该值。这些参数可以在Console Server Tuning Configration配置栏里找到。
2.2.4 创建新的执行队列
创建新的执行队列有助于解决核心业务优先、避免交叉阻塞、死锁和长时间处理的业务等问题。通常会将自己的执行队列和默认的执行队列设置不同的优先级,这 里优先级不应设为9或者10。 定义一个新的执行队列很容易,利用View Excute Queue选项中的Configure a new Excute Queue链接即可定制新的执行队列。创建新的执行队列后,用户需要为应用程序的J2EE组件配置分配策略,以便它可以找到新的队列。举个例子:要将 servlet或jsp捆绑到一个特定的执行队列,必须替换web.xml文件项,将wl-dispatch-policy初始化参数设置为自己的执行队 列名。
我们可以为一个jsp或者servlet乃至一个web应用设置自己的执行队列。同时也可以为EJB设置自己的执行队列。对于执行时间比较长的MDB,建议使用自己的执行队列。
2.3 JDBC调优
2.3.1 调整连接池配置
JDBC Connection Pool的调优受制于webLogic Server线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连 接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最小值和最大值设为一致。
增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮助,webLogic能够为每一个连接缓存这些对象,此值默认为10。在保 证数据库游标大小足够的前提下,可以根据需要提高Statement Cache Size。比如当你设置连接数为25,Cache Size为10时,数据库可能需要打开25*10=250个游标。不幸的是,当遇到与PreparedStatement Cache有关的应用程序错误时,你需要将Cache Size设置为0。
尽管JDBC Connection Pool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表, 同时Test Reserved Connections和Test Released Connections也无需勾上。 当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开。
最后提一下驱动程序类型的选择,以Oracle为 例,Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不 大,随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动。而最新驱动器 由于webLogic server/bin目录下的类包可能不是最新的,请以Oracle网站为准: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs /jdbc9201.html。
2.4 web调优
2.4.1 调整web应用描述符
web应用除代码之外的调优比较简单,仅仅是对一些web应用描述符的调整。首先关闭Session Monitoring Enabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时 间。 同时生产环境下无需检查jsp和servlet:jspPage Check Secs和Servlet Reload Check Secs均设为-1,关闭jspKeep Generated 和jspVerbose对性能也有帮助。此外,还可以对jsp进行预编译,有两种方法:激活precompile选项;使用weblogic.appc事 先编译,建议采用后者。
2.5 JMS调优
1. 增加-Dweblogic.JMSThreadPoolSize=n(至少为5),以提高处理JMS的线程数,在jRockit上增加-XXenablefatspin以减少加锁冲突;
2. 采用文件存储策略,将同步写策略设置为Direct-Write,同时在windows平台上启用磁盘写入缓存;
3. 使用分布式目的地时,激活连接工厂Load Balancing Enabled ,Server Affinity Enabled;
4. 为减少服务器不必要的JMS请求路由,如果多个目的地之间存在事务,则部署在同一JMS服务器上,尽量将连接工厂部署到JMS服务器所在的 webLogic实例上,集群环境下,则最好将连接工厂部署到集群中的所有服务器上,而集群中每个JMS服务器和目的地成员尽量使用类似的设置;
5. 启用消息分页存储功能,以释放内存,可以为JMS服务器和目的地设置, 激活Messages Paging Enabled和Bytes Paging Enabled,同时使用限额防止服务器耗尽接收消息的所有可用内存空间;
6. 在运行webLogic Server进程之外的生产者务必使用流控制, 并增大Send Timeout;
7. 将JMS Server Expiration Scan Interval设很大的值,能禁止主动扫描过期消息;
8. 使用FIFO或者LIFO方式处理目的地消息;
9. MDB的max-beans-in-free-pool不应大于最大MDB线程数(默认线程数/2+1)。
2.6 EJB调优
2.6.1 调整pool和cache
initial-beans-in-free-pool定义SLSB启动时实例的个数,默认为0,可以调大到正常并发数的大小,以减少初始响应时间。 max-beans-in-free-pool为最大个数,默认1000对SLSB来说,在频繁创建和删除实例的情况下很有帮助,一般不用调整,至少设为 默认线程数,过大容易造成内存溢出。而对Entity Bean来说,由于是匿名的,所以当频繁使用finder、home和create方法时可以调大。
对SFSB来说,尽量将max- beans-in-cache参数设置得足够的大,以满足Bean实例对最大并发用户数的要求,可以避免有状态会话Bean过多的钝化行为。而idle- timeout-seconds尽量设置小,如果SFSB不用于存储web应用会话状态可以设置为0。
对于Entity Bean来说, max-beans-in-cache同样可以首先采用默认值1000,监控实例缓存和钝化的情况,再做适当调整。
并行策略concurrency-strategy定义了实体Bean如何管理锁,有四种策略: Exclusive、Databse、ReadOnly、Optimistic。效率依次提高,可靠性依次降低,尽量避免使用互斥策略,如果Bean无需 更新操作,使用只读策略,更甚的是,如果Bean的内容不会改变,可设置read-timeout-seconds为0,乐观并行策略时采用事务间缓存策 略,在entity-cache描述符中将cache-between-transactions元素设为true。
2.6.2 优化事务隔离级别和事务属性
对EJB组件来说,有四种事务隔离水平:
• TRANSACTION-SERIALIZABLE:在处理完成之前拒绝其他处理的读入、可扩展性或插入数据操作;
• TRANSACTION-REPEATABLE-READ:防止处理修改正在被其他处理调用的数据;
• TRANSACTOIN-READ-COMMITTED:防止对正在被其他处理修改的数据执行写锁定;
• TRANSACTION-READ-UNCOMMITTED:允许处理读入未受权的数据以及允许在向结果中添加记录时可以忽略处理。
以上隔离水平依次降低,效率和性能依次提高。因此,建议选用满足在业务数据完整性要求前提下水平最低的隔离级别。
对于事务属性的设置也是如此,对于删除、修改和插入操作设置为Required,而对于只读操作设置为Supports或者NotSupports。
2.6.3 其他一些小技巧
1. 利用finders-load-bean的默认值true,既可以避免“n+1”的查询问题,又可以提高系统的性能;
2. 使用delay-updates-until-end-of-tx参数的默认值true,除非应用程序对某些变化有特别的要求;
3. 应用程序在每个业务方法调用后不需要进行存在性检查,将check-exists-on-method设定为false,以提高程序的性能;
4. 同一应用内, 将enable-call-by-reference设置为 true;
5. reentrant设置为false,避免事先加载子数据。
BEA WebLogic平台下J2EE调优攻略:数据库调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第三章 数据库调优(目录)
3.1.1 Oracle性能优化
Oracle9i的性能优化除了调整kernal之外就是主要对Oracle启动文件的调整,即调整SGA的参数。注意,不同操作系统不同位数的机器最优的参数不是一样的,这里主要有windows和unix之分,32位和64位之分。
首先需要调大进程数和游标数,一般默认的值对实际应用来说都比较小,比如说,进程数可以调到300,游标数可以调到500。
其次,看一个经验公式: OS 使用内存+ SGA + session*(sort_area_size + hash_area_size +2M)<0.7RAM,通常认为此时的SGA比较合理。这里sort_area_size为64k, hash_area_size为128k(当排序多的时候需要增大sort_area_size,按调整后的值计算),session表示最大并发进程 数,假设100个。假如1G内存的机器,OS占用200M,PGA占用200M左右,那么SGA可以设为400-500M,如果2G内存可以1G给 SGA,8G可以5G给SGA。不过对于32位数据库来说,通常最多只能使用1.7G内存。
然后,SGA内参数设置的基本原则 是:data buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多。具体的:data buffer 1G内存可以设置500M,2G设为1.2G,8G可设为5G 。shared_pool_size不易过大,通常应该控制在200M--300M,如果使用了大量的存储过程,可以根据SGA的值增大到500M,如果 增大后命中率得不到提高,则增加是无益的。具体的:1G内存可以设置100M,2G设为150M,8G可设为300M。如不使用 java,java_pool_size 10-20M即可。large_pool_size如果不设置MTS,在20M -30M 即可,假如设置 MTS,可以考虑为 session * (sort_area_size + 2M)。
最后,关于内存的设置可根据statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息来考虑微调。
3.1.2 Oracle的其他调整
为了Oracle高效率的运行,除了上面提到的内存因素之外,还有就是需要良好的数据库设计:表、视图、索引和日志的合理规划和建立。I/O的性能也是重要因素,应尽量减少页交换和页分配。此外,就是改善检查点的效率。
BEA WebLogic平台下J2EE调优攻略:操作系统调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第四章 操作系统调优(目录)
4.1 操作系统调整
操作系统影响应用程序运行性 能的因素主要有:硬件的配置(CPU、内存、硬盘等),核心参数,TCP/IP参数以及补丁的情况等。这里对操作系统的优化,除了更新最新的补丁程序以保 证应用程序正常运行之外,就是调整TCP/IP参数,文件描述符,对于个别操作系统还有其他特别的参数调整。下面将依次介绍不同操作系统的情况,更多的信 息请参考各操作系统的文档。
4.1.1 HP-UX
对于HP-UX,你首先需要安装java Patch:
http://www.hp.com /products1/unix/java/patches/index.html,然后需要确认下面文档中的核心参数是否满足(可以使用sam命令修改 核心参数):http://e-docs.bea.com/platform/suppconfigs/configs81/hpux11_risc /81sp3.html#80105。
调整TCP参数: ndd -set /dev/tcp tcp_conn_req_max 1024, 将侦听队列的最大允许长度调整到1024。 有时操作系统限制进程使用的最大内存数小于你要配置的内存大小,则需要调整该值。
读者可以从http://docs.hp.com/hpux/onlinedocs/TKP-90203/TKP-90203.html了解更多的HP-UX调整建议。
4.1.2 Solaris
调整TCP的参数,等待时间间隔tcp-time-wait-interval建议设置为60000ms: /usr/sbin/ndd ?set /dev/tcp tcp_time_wait_interval 60000;
其他参数调整如下:
tcp_xmit_hiwat/tcp_recv_hiwat 131072
tcp_conn_req_max_q/tcp_conn_req_max_q0 16384
调整一个进程打开的文件描述符的数量:软限制和硬限制以及散列表的大小,修改/etc/system文件:
set tcp:tcp_conn_hash_size=32768
set rlim_fd_cur=8192
set rlim_fd_max=8192
更多的调整信息请查阅: http://docs.sun.com/db/doc/806-7009(Solaris9)。
4.1.3 AIX
AIX用no命令调整TCP参数,等待时间间隔tcp_timewait: no -o tcp_timewait=4,将tcp.timewait参数设置为4个15秒间隔,即1分钟。运行no -a命令将显示网络当前的所有属性值。由于UDP_SENDSPACE默认的缓存大小是8k,为减少I/O异常,需调整为32k:
no -o udp_sendspace=32768。此外, 当webLogic HTTP请求忙时,可以调整侦听队列的最大长somaxconn到8192(默认值是1024)。
更多信息:http://publib16.boulder.ibmo.com/pseries/en-us/aixbman/prftungd/prftungd.htm。
4.1.4 Linux
调整Linux系统使用sysctl命令修改TCP参数等待时间间隔:sysctl -w ip_ct_tcp_timeout_time_wait=60;调整打开文件的最大数:在/etc/sysctl.conf文件中,添加: Fs.file-max=65535,然后运行sysctl -p;调整打开文件描述符最大数为8192:在/etc/security/limits.conf文件,添加:webLogic hard nofile 8192(仅针对webLogic用户),然后在webLogic启动文件里运行ulimit-n 8192激活设置。
更多信息请查阅:http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html。
4.1.5 Windows
Windows系统的调整通过修改注册表HKEY-LOCAL-MACHINESYSTEMCurrent ControlSetServices文件夹来完成。可以调整TcpipParameters子文件夹中的等待时间间隔时间 TcpTimedWaitDelay参数的值。侦听队列最大长度的默认值为15,为修改它,可在InetinfoParameters子目录中创建 DWORD条目ListenBackLog。
此外,Windows2000的Service Pack(要求sp3以上)也会影响系统稳定性: http://e-docs.bea.com/platform/suppconfigs/configs81 /win2ksvr_as_data_pentium/81sp3.html。
BEA WebLogic平台下J2EE调优攻略:性能监控和性能分析
作者:周海根 来源:BEA 发布时间:2007-05-09
第五章 性能监控和性能分析(目录)
5.1 性能瓶颈
最后,介绍一下实际分析J2EE应用性能的常用命令和工具。对于实现一个高性能的J2EE应用来说,掌握了J2EE调优的理论经验还是不够的。掌握性能监控,发现瓶颈和问题诊断才是保证J2EE系统持续高效运行的关键。
瓶 颈指的是限值所有吞吐操作以及严重影响反应时间的系统内资源。在分布式系统内寻找并纠正瓶颈是非常困难的,需要有经验的团队来解决。瓶颈会发生在web服 务器上,程序代码中,应用服务器上,数据库,操作系统或者网络,硬件上。经验表明,瓶颈很容易发生在如下地方:数据库连接与队列中;应用服务器的程序代码 中;应用服务器和web服务器硬件上;网络和TCP配置中。实际中可以着力对这些环节进行监控。
5.2 操作系统监控
操作系统层面的性能监控主要是对内存、CPU、I/O和交换区的使用情况进行监控分析。windows平台可以通过任务管理器和perfmon工具查 看。如果是unix系统可以使用stat系列命令(vmstat, mpstat, iostat)监控内存、CPU和I/O的即时变化,使用swap命令查看交换区的使用情况。如果操作系统安装了top、topas、glance等使用 工具,则使用top、topas、glance将能更为方便地看到webLogic进程对操作系统的内存,CPU和I/O资源使用的即时变化情况。
而网络方面的性能可以通过ping和netstat等命令来监控,主要几个关键的网络统计值,如数据包再发送、重复数据包和数据包侦听丢失。
说明:本文提到的unix命令并非适用所有操作系统,仅供参考。
5.3 数据库监控
数据库层面的监控这里为oracle9i为例来说明,可以采用oracle自带的工具Oracle
Interprise Manager Console来监控session和sql的执行情况。还有其他专业的数据库监控工具可以使用,比如QUEST的 spotlight(http://www.quest.com/spotlight-portal/)可以非常形象和直观地对Oracle数据库的 CPU、内存、I/O、Data Buffer Size、Shared Pool Size、Redo Buffer等参数进行即时监控,并自动对不正常的参数以红色显示。
5.4 webLogic监控
5.4.1 JVM监控
采用java参数-verbose:gc 来分析JVM的GC非常繁琐,而且不直观。使用-Xloggc:gc.log 参数将GC日志写入文件,采用GC 工具HPjtune (http://www.javaperformancetuning.com/tools/hpjtune/index.shtml)进行分析,可以轻 松看出当前jvm参数配置是否合理。
严格意义上来说HPjtune是一个分析工具,不是监控工具。这里不得不提及 jRocket,Intel平台上最快的JVM, 在webLogic启动命令中增加-Xmanagement参数,就可以执行beajrockit81sp3_142_04 in下console命令监 控webLogic的内存使用和CPU负载情况。设置Tools/Preferences菜单中的Mode of operation属性为developer, jRocket将提供Method Profiler工具,她能够将所有在JRockit java虚拟机上执行的成员方法的调用次数、执行的总时间和每次调用的执行时间都统计出来,进行代码级调优,这是jRockit的又一大优势。
5.4.2 Console监控
webLogic Console除了管理配置功能之外,提供了丰富的监控功能。通过webLogic Console,首先我们可以查看服务器的运行情况。
5.4.2.1 Server监控
通过使用服务器的Performance Monitoring选项卡,可以查看到请求吞吐量,执行队列积压情况以及JVM栈利用情况。而通过点击Performance Genaral选项卡中” Monitor all Active Queues...”可以查看所以执行线程的当前统计数据。此外Monitoring选项卡还可以监控JTA和JMS等Service的情况。
5.4.2.2 JDBC监控
在连接池Monitoring选项卡中,webLogic Console为每一个数据库连接池提供了实时统计信息。其中有三个重要参数可以反应webLogic Server的健康状况:Connections High、Wait Second High和Waiters High。Connection High表示从服务器启动开始后到达池的最大连接数量,如果大于池的最大数量,则需要调整Maxium Capacity。Waiters High表示在没有可用连接的情况下,应用程序等待连接的最大个数。我们可以根据Waiters High的大小调整连接池容量。更多的参数可以通过Customize this view链接添加,参数含义参考:http://e-docs.bea.com/wls/docs81/ConsoleHelp /domain_jdbcconnectionpool_monitor.html#1104829。
5.4.2.3 web监控
web Application Monitoring选项卡可以监控web应用的Session个数,以及Servlet的响应情况,激活Session Monitoring Enabled可以获取所有session的统计情况。更多信息请参考:
http://e-docs.bea.com/wls/docs81/ConsoleHelp/web_applications.html#1106723。
5.4.2.4 JMS监控
Welogic Console JMS监控功能比较多,不仅在Server JMS Monitoring选项卡可以监控Active JMS Connections, Pooled JMS Connections和Active JMS Servers的连接和使用情况。还可以监控JMS Session Pool、Active JMS Destinations和Durable Subscribers的消费和生产情况。比如,我们可以监控到JMS Queue的接收和消费消息的数量和字节数。有关JMS监控的详细情况可参见:http://edocs.bea.com/wls/docs81 /ConsoleHelp/jms_monitor.html。
5.4.2.5 EJB监控
EJB监控包括对SLSB,SFSB,Entity Bean,MDB四种EJB的监控。本人认为EJB监控提供了非常丰富的运行时统计信息(http://e-docs.bea.com/wls /docs81/ConsoleHelp/ejb.html#1105036),非常有利于我们对EJB进行性能调优。
SLSB选项 卡为用户提供实例池的运行时统计信息。Pool Miss Ratio 表示实例池的Miss率,Pool Waiter Total Count 表示线程等待bean 实例的累计时间,Pool Timeout Total Count表示超时的线程数。当Pool Miss Ratio较大时,可以增加max-beans-free-pool。
SFSB可以关注Cache Miss Ratio和Activation Count。Cache Miss Ratio过大时,调大max-bean-in-cache未必有帮助,需要尝试不用的max-bean-in-cache以获得最低的Cache Miss Ratio。激活将严重减慢应用程序的速度,如果某一个bean的Activation Count的值过高,那么需要考虑增加max-bean-in-cache的大小。
Entity Bean结合了SLSB的free pool和SFSB的cache。可以结合上面的策略进行监控。
而MDB仅比SLSB多一个参数JMSConnection Alive,报告EJB是否成功连接到JMS目的地。
更多Console监控信息可参见http://edocs.bea.com/wls/docs81/ConsoleHelp/index.html。
5.4.3 实用工具分析
webLogic除了提供Console进行应用监控之外,用户还可以编写JMX程序或者通过SNMP协议进行监控。而QUEST Spotlight for webLogic Server提供了类似webLogic Console类似的监控功能,并对异常情况显红。
这 里不得不提到实战中经常用来分析性能瓶颈的工具THREAD DUMP,统一的命令是使用 weblogic.Admin 命令 THREAD_DUMP。而在 windows上还可以使用
5.5 应用程序分析
应用程序分析除了凭借程序员丰富的经验和敏 锐的洞察力去人工检查代码之外,使用厂家的工具也是节省时间的不错选择。目前市场上有Borland Optimizeit Enterprise Suite和QUEST Jprobe两个产品可以用来分析性能瓶颈,垃圾收集,内存泄漏,线程死锁和代码复盖等。Hpjmeter是一个免费的工具,也具有以上类似的性能分析功 能。
而Borland Optimizeit Server Trace,HP OpenView Transaction Analyzer和Mercury LoadRunner J2EE breakdown都可以用来分解J2EE应用从客户端访问到最终数据库操作每一层次花费的时间,甚至精确到每一个方法的执行时间。Server Trace还具有检查内存泄漏,连接泄漏和错误警告等功能,一般在测试环境中使用。而HP OTVA的优势在于运行时监控,LoadRunner优势在于压力测试。
总结(目录)
J2EE调优是一门实践和经验科学,是一个复杂而往复的过程。其原则是:合理。合理,看似简单,细细品味,意味深长。本文所述的调优策略并不是一成不变 的,只是为了给大家一个参考建议,让大家少走弯路,关键是根据实际环境调优。欢迎有兴趣的朋友在论坛上积极讨论和批评指正。
参考文献(目录)
[1]BEA webLogic Server edocs: http://e-docs.bea.com/wls/docs81/perform/index.html
[2]Gregory Nyberg & Robert Patrick :Mastering BEA webLogic Server
[3]Jack Shirasi:java Performance Tuning
关于作者(目录)
周海根(dev2dev ID:zhouhg) 合力思软件(中国)有限公司技术顾问,BEA Certified Specialist,BEA dev2dev撰稿人。多年从事J2EE开发工作,目前致力于技术支持工作,主要研究J2EE技术在webLogic上的应用、调优。有着西电人的务实, 喜欢专研技术,是个体育狂热者。
联系方式: 010-85251858-1053,zhouhaigen@hotmail.com
2008年12月28日日曜日
软考学习笔记-数据库工程师第十五章-知识产权基础 第十六章 标准化
软考学习笔记-数据库工程师第十五章-知识产权基础 第十六章 标准化
第十五章 知识产权基础 第十六章 标准化
1、知识产权的概念,是指民事权利主体基于智力创造性的智力成果。可以分为工业产权和著作权(版权)。
知识产权的特点:无形性、双重性、确认性、独占性、地域性、时间性。
2、计算机软件受著作权保护的条件:按计算机软件保护条例规定,受保护的软件产品应“独立创作、可被感知、逻辑合理”。
计算机软件保护条例规定,合法受保护的对象为“程序和文档”,著作权法不保护软件开发使用的思想、概念、发现、原理、算法、处理过程和运算方法。
计算机软件著作权的权利有2类,人身权和财产权。人身权包括发表权、开发者身份权(署名权)。
财产权,计算机软件保护条例规定,软件著作权人享有:使用权、复制权、修改权、发行权、翻译权、注释权、信息网络传播权、出租权、使用许可权和获得报酬权、转让权。
计算机软件著作权的归属问题:
1)职务开发软件著作权的归属;
2)合作开发软件著作权的归属;
3)委托开发的软件著作权的归属;
4)接受任务开发的软件著作权归属; --3,4两条中都是先依据合同或协议来确认著作权归属,如未明确归定则著作权属于实 际的开发者。
5)主体变更后软件著作权的归属;
6)权利转让后软件著作权的归属;
7)司法、判决引起的软件著作权归属问题;
8)保护期满权利丧失。
3、计算机软件的商业秘密权
商业秘密的定义:在<中华人民共和国反不正当竞争法>中将商业秘密定义为“不为公众所知的、能为权利人带来经济利益、具有实用性并经权利人采取保密措施的技术信息和经营信息”。经营秘密和技术秘密是商业秘密的基本内容。
商业秘密的构成条件:未公开性、具有实用性、保密性。一项商业秘密要受到法律保护,必须具备这三个条件。
<中华人民共和国反不正当竞争法>保护计算机软件,是以计算机软件中是否包含着“商业秘密”为必要条件。即使软件尚未开发完成,在软件中已经形成的知识内容也可以作为商业秘密。
4、授予专利权的条件:新颖性、创造性、实用性。
专利法不适用的对象有:违法违德妨害公共利益的发明,客观世界已存在但未揭示的规律、性质和现象,智力活动的规则和方法,病的诊断及治疗方法,动物和植物的品种,原子核变换得到的物质。
发明专利的保护期为20年,实用新型专利权和外观设计专利权的保护期为10年。公民的作品发表权的保护期为公民终生及其死后50年。我国商标权的保护期为10年,到期时可以续注,每次10年。计算机软件著作权保护期为50年。
我国著作权法不保护“法律、法规、国家机关的决议等性质的文件,及其官方正式译文。
我国著作权法规定:作者的署名权、修改权、保护作品完整权的保护期不受限制。
著作权法规定:为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品,可以不经著作人许可,但应当指明作者姓名、作品名称且不能侵犯著作权人享有的其他权利。
著作权法规定:汇编若干作品、作品的片段或者不构成作品的数据或者其他材料,对其内容的选择或者编排体现独创性的作品,为汇编作品,其著作权由汇编人享有,但行使著作权时,不得侵犯原作品的著作权。
软件工程师接受单位的任务,独立完成了某应用软件的开发和设计,其软件著作权属于“单位的法人”。
我国专利法规定,申请专利的发明创造,在申请日以前6个月内,有下面情况发生的,不会丧失新颖性:
1)在中国政府主办或者承认的国际展览会上首次展出的;
2)在规定的学术会议或者技术会议上首次发表的;
3)他人未经申请人同意而泄露其内容的。
专利申请日:以专利局收到完整专利申请文件的日期为专利申请日。如果申请文件是邮寄来的,则以寄出的邮戳日期为申请日。
5、标准化的基本过程:标准产生子过程、标准实施子过程、标准更新子过程。
标准的编号: 国际标准编号形式为-- 标准代号+专业类号+顺序号+年代号
我国标准编号形式为-- 标准代号+标准发布顺序号+年代号(年号即发布年份的后两位数字)
国家标准代号:GB(强制性的) GB/T(推荐性的)
行业标准代号:由汉语拼音大写字母组成,加上斜线T后变为推荐标准。如:JR(金融)
地方标准代号:由DB加上两位地方代码(北京为11)
企业标准代号:由Q加上斜线再加上企业代号组成。如Q/**。
6、国际标准组织: ISO--国际标准化组织
IEC--国际电工委员会
ITU--国际电信联盟
国家标准组织: ANSI--美国国家标准
DIN--德国国家标准
BS--英国国家标准
JIS--日本 SIS--瑞典 SNV--瑞士 NF--法国
UNI--意大利
GJB--中华人民共和国国家军用标准
行业协会标准: IEEE--美国电气电子工程师学会
7、采用国际标准的程度分为:等同IDT、等效EQV、非等效NEQ。
8、过程评估标准ISO/IEC 15504,它提供了一个软件过程评估的框架。它可以被任何软件企业用于软件的设计、管理、监督、控制以及提高获得、供应、开发、操作、升级和支持能力。它涉及了过程评估的各个方面,其文档主要包括9个部分。
ISO标准每5年复审一次。我国的国家标准有效期也是5年。国家标准的最后两位数字是年号。
条码中对应条码符号的一组阿拉伯数字称为条码代码,条码代码供人们直接识读,可以通过键盘向计算机输入数据。
ISO9000:2000<质量管理体系 基础和术语>标准提出的“8项质量管理原则”,是在总结了质量管理经验的基础上,明确了一个组织在实施质量管理中必须遵循的原则,也是ISO9000:2000族标准制定的指导思想和理论基础。
ISO9000系列标准是国际化标准化组织质量管理和质量保证技术委员会于1987年分布的质量管理和质量保证系列标准。
目前ISO9000:2000系列标准它包括5项具体标准。
ISO12207是软件生命周期过程的国际标准。
ISO/IEC JTC1是制定信息技术领域国际标准的机构。
第十五章 知识产权基础 第十六章 标准化
1、知识产权的概念,是指民事权利主体基于智力创造性的智力成果。可以分为工业产权和著作权(版权)。
知识产权的特点:无形性、双重性、确认性、独占性、地域性、时间性。
2、计算机软件受著作权保护的条件:按计算机软件保护条例规定,受保护的软件产品应“独立创作、可被感知、逻辑合理”。
计算机软件保护条例规定,合法受保护的对象为“程序和文档”,著作权法不保护软件开发使用的思想、概念、发现、原理、算法、处理过程和运算方法。
计算机软件著作权的权利有2类,人身权和财产权。人身权包括发表权、开发者身份权(署名权)。
财产权,计算机软件保护条例规定,软件著作权人享有:使用权、复制权、修改权、发行权、翻译权、注释权、信息网络传播权、出租权、使用许可权和获得报酬权、转让权。
计算机软件著作权的归属问题:
1)职务开发软件著作权的归属;
2)合作开发软件著作权的归属;
3)委托开发的软件著作权的归属;
4)接受任务开发的软件著作权归属; --3,4两条中都是先依据合同或协议来确认著作权归属,如未明确归定则著作权属于实 际的开发者。
5)主体变更后软件著作权的归属;
6)权利转让后软件著作权的归属;
7)司法、判决引起的软件著作权归属问题;
8)保护期满权利丧失。
3、计算机软件的商业秘密权
商业秘密的定义:在<中华人民共和国反不正当竞争法>中将商业秘密定义为“不为公众所知的、能为权利人带来经济利益、具有实用性并经权利人采取保密措施的技术信息和经营信息”。经营秘密和技术秘密是商业秘密的基本内容。
商业秘密的构成条件:未公开性、具有实用性、保密性。一项商业秘密要受到法律保护,必须具备这三个条件。
<中华人民共和国反不正当竞争法>保护计算机软件,是以计算机软件中是否包含着“商业秘密”为必要条件。即使软件尚未开发完成,在软件中已经形成的知识内容也可以作为商业秘密。
4、授予专利权的条件:新颖性、创造性、实用性。
专利法不适用的对象有:违法违德妨害公共利益的发明,客观世界已存在但未揭示的规律、性质和现象,智力活动的规则和方法,病的诊断及治疗方法,动物和植物的品种,原子核变换得到的物质。
发明专利的保护期为20年,实用新型专利权和外观设计专利权的保护期为10年。公民的作品发表权的保护期为公民终生及其死后50年。我国商标权的保护期为10年,到期时可以续注,每次10年。计算机软件著作权保护期为50年。
我国著作权法不保护“法律、法规、国家机关的决议等性质的文件,及其官方正式译文。
我国著作权法规定:作者的署名权、修改权、保护作品完整权的保护期不受限制。
著作权法规定:为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品,可以不经著作人许可,但应当指明作者姓名、作品名称且不能侵犯著作权人享有的其他权利。
著作权法规定:汇编若干作品、作品的片段或者不构成作品的数据或者其他材料,对其内容的选择或者编排体现独创性的作品,为汇编作品,其著作权由汇编人享有,但行使著作权时,不得侵犯原作品的著作权。
软件工程师接受单位的任务,独立完成了某应用软件的开发和设计,其软件著作权属于“单位的法人”。
我国专利法规定,申请专利的发明创造,在申请日以前6个月内,有下面情况发生的,不会丧失新颖性:
1)在中国政府主办或者承认的国际展览会上首次展出的;
2)在规定的学术会议或者技术会议上首次发表的;
3)他人未经申请人同意而泄露其内容的。
专利申请日:以专利局收到完整专利申请文件的日期为专利申请日。如果申请文件是邮寄来的,则以寄出的邮戳日期为申请日。
5、标准化的基本过程:标准产生子过程、标准实施子过程、标准更新子过程。
标准的编号: 国际标准编号形式为-- 标准代号+专业类号+顺序号+年代号
我国标准编号形式为-- 标准代号+标准发布顺序号+年代号(年号即发布年份的后两位数字)
国家标准代号:GB(强制性的) GB/T(推荐性的)
行业标准代号:由汉语拼音大写字母组成,加上斜线T后变为推荐标准。如:JR(金融)
地方标准代号:由DB加上两位地方代码(北京为11)
企业标准代号:由Q加上斜线再加上企业代号组成。如Q/**。
6、国际标准组织: ISO--国际标准化组织
IEC--国际电工委员会
ITU--国际电信联盟
国家标准组织: ANSI--美国国家标准
DIN--德国国家标准
BS--英国国家标准
JIS--日本 SIS--瑞典 SNV--瑞士 NF--法国
UNI--意大利
GJB--中华人民共和国国家军用标准
行业协会标准: IEEE--美国电气电子工程师学会
7、采用国际标准的程度分为:等同IDT、等效EQV、非等效NEQ。
8、过程评估标准ISO/IEC 15504,它提供了一个软件过程评估的框架。它可以被任何软件企业用于软件的设计、管理、监督、控制以及提高获得、供应、开发、操作、升级和支持能力。它涉及了过程评估的各个方面,其文档主要包括9个部分。
ISO标准每5年复审一次。我国的国家标准有效期也是5年。国家标准的最后两位数字是年号。
条码中对应条码符号的一组阿拉伯数字称为条码代码,条码代码供人们直接识读,可以通过键盘向计算机输入数据。
ISO9000:2000<质量管理体系 基础和术语>标准提出的“8项质量管理原则”,是在总结了质量管理经验的基础上,明确了一个组织在实施质量管理中必须遵循的原则,也是ISO9000:2000族标准制定的指导思想和理论基础。
ISO9000系列标准是国际化标准化组织质量管理和质量保证技术委员会于1987年分布的质量管理和质量保证系列标准。
目前ISO9000:2000系列标准它包括5项具体标准。
ISO12207是软件生命周期过程的国际标准。
ISO/IEC JTC1是制定信息技术领域国际标准的机构。
考学习笔记-数据库工程师第十四章-数据库发展趋势与新技术
软考学习笔记-数据库工程师第十四章-数据库发展趋势与新技术
第十四章 数据库发展趋势与新技术
1、面向对象数据库系统应该具有以下特征:
表达和管理对象的能力;
具有任意复杂度的对象结构;
具有与面向对象编程语言交互的接口;
具有表达和管理数据库变化的能力。
2、面向对象数据模型
面向对象数据模型可以看作在一个更高层次上实现数据模型的新成员,并经常用作高层概念模型,尤其在软件工程领域中更是如此。
面向对象数据模型的基本概念有对象、类、继承、对象标识和对象嵌套。
对象结构:属性集合、方法集合、消息集合
对象类 :在面向对象数据库中,类是一系列相似对象的集合,对应于E-R模型中的实体集概念。类是面向对象系统和数据库系统之间最重要的连接。首先,类直接说明了一个实例及其所属类之间的实例关系;其次,类提供了构成查询的基础;另外,类可以用来增加面向对象数据库的语义完整性;最后,类提出了所有对象的属性和方法的规格说明,便于生成对象。
类的概念相似于关系,类的属性相拟于关系的属性,对象相似于关系中的一个元组。
继承与多重继承:在面向对象的数据模型中,所有类形成了一个有限的层次结构或者是一个有根的无环有向图,称之为层次。
对象标识:每个对象惟一的、由系统生成的对象标识OID。几种常用的标识为,值、名称、内置名。对象标识要求必须具有永久持久性。根据实际应用的需求,大多面向对象数据库系统允许有对象和值两种标识表示方法共同使用。
对象嵌套:在面向对象数据模型中,对象的一个属性可以是一个单一值,也可以是一个来自值域的值集,即一个对象的属性可以是一个对象,形成了嵌套关系。
3、面向对象数据库语言:包括对象定义语言和对象操纵语言。对象查询语言是对象操纵语言的一个重要子集。
面向对象数据库语言应该具有这些功能:类的定义和操纵;
操作/方法的定义;
对象的操纵。
4、对象关系数据库系统
在今天的商业领域中,占统治地位的数据库管理系统产品有2个:关系数据库系统和面向对象数据库系统。另外还有两种主要的类型是层次数据库和网关数据库。
对象关系数据模型扩展关系数据模型的方式是提供一个包括复杂数据类型和面向对象的更丰富的类型系统。
(1)嵌套关系:元组在一个属性上取值可以是一个关系,于是关系可以存储在关系中,从而形成了关系的嵌套。这样,一个复杂的对象可以用嵌套关系的单个元组来表示。
(2)复杂类型:集合是集合体类型的一个实例,另外的集合体类型包括数组和多重集合。面向对象关系数据库允许属性是集合。
(3)继承、引用类型:SQL99仅支持单继承
(4)与复杂类型有关的查询: 路径表达式;(使用右向箭头符号,例如select head-->name,head-->address from departments)
以集合体为值的属性;
嵌套与解除嵌套。(将一个嵌套关系转换为1NF的过程称为解嵌套,反向过程就是嵌套。嵌套可以通过SQL的分组扩展实现,即不使用聚集函数而只是返回多重集合)
(5)函数与过程:对象关系数据库系统中允许用户定义函数与过程,既可以用SQL来定义,也可以用外部的程序设计语言来定义。
(6)面向对象与对象关系:几种数据库系统的能力如下,
关系系统 --简单数据模型、功能强大的查询语言以及高保护性;
对象关系系统--复杂数据模型、功能强大的查询语言以及高保护性;
以持久化程序设计语言为基础的面向对象系统--复杂数据类型、与程序设计语言集成以及高性能。
5、ERP与数据库
ERP的形成经历了四个阶段:基本MRP阶段、闭环MRP阶段、MRP-2阶段以及ERP阶段。
基本MRP,在传统的库存理论中引入了时间分段和反映产品结构的物料清单,从而较好的解决了库存管理和生产控制中的难题。
闭环MRP,在基本MRP的基础上,加入了对能力的约束的考虑,如供货能力或运输能力,从而形成了信息回路,称为闭环MRP。
MRP-2,以生产计划为主线,统一计划和控制各种资源,使企业的物流、信息流、资金流都畅通,也实现了动态反馈。
ERP,它继承了MRP-2的基本思想,但是把管理重心转移到财务上来,在全过程中贯穿财务成本控制的概念。
6、ERP设计的总体思路
一个中心,两类业务,三条干线。即以“财务”为中心,处理“计划”和“执行”两类业务,围绕“供应链管理、生产管理、财务管理”这3条干线。
在ERP系统的设计过程中怎么样应用数据库技术:
1)先要绘制出业务处理流程图;
2)绘制出数据流程图;
3)绘制E-R图; --前3步都是在前一步的基础上发展深入,一步步为数据库设计打好基础。
4)绘制功能模块图。
7、决定支持系统
决策支持系统实质上是在管理信息系统的基础上发展起来的。它综合利用了各种数据、信息、知识,特别是模型技术,能够辅助各级决策者解决决策问题。决策支持系统的新特点就是增加了模型库和模型库管理系统。
8、数据仓库
数据仓库已成为建立决策支持系统的重要技术手段,是建立决策支持系统的基础。
数据仓库的数据有4个特征:面向主题的、集成的、不可更新的和随时间不断变化的。
数据仓库的数据模型与传统的数据库相比有一些区别:它不包含纯操作型的数据;扩充了码的结构,增加了时间属性作为码的一部分;增加了一些导出数据。
数据仓库的设计过程与传统数据库相似,分为三级数据模型,即概念模型、逻辑模型、物理模型。概念模型使用E-R图描述,长方形表示主题而不再是实体,其它雷同。逻辑模型就是关系模型。
在进行数据仓库设计时,需要把数据分割和粒度划分结合起来考虑。粒度划分就是确定数据仓库中数据单元的详细程序级别,数据分割类似于数据分片概念。
元数据是数据仓库设计的一个重要组成部分。
9、数据转移技术
数据转移技术也称为数据转换或数据变换,把多种传统资源或外部资源信息中不完善的数据自动转换为准确可靠的数据。
数据转移技术有4种转移类型: 1)简单转移 (数据元的类型转换、日期/时间格式转换、字段解码)
2)清洗 (检查字段中的有效值、重新格式化某些类型的数据,如地址)
3)集成
4)聚集和概括
10、OLTP,联机事务处理,以快速事务响应和频繁的数据修改为特征,方便用户使用数据库快速处理具体业务。
OLAP,联机分析处理,是以数据仓库进行分析决策的基础,是针对待定问题的联机数据访问和分析。
它们是两类不同的应用。
OLTP与OLAP的对比:
OLTP OLAP
数据库原始数据 数据库导出数据或数据仓库数据
细节性数据 综合性数据
当前数据 历史数据
经常更新 不可更新,但周期性刷新
一次性处理的数据量小 一次性处理的数据量大
响应时间要求高 响应时间合理
用户数量大 用户数量相对较少
面向操作人员,支持日常操作 面向决策人员,支持管理需要
面向应用,事务驱动 面向分析,分析驱动
11、企业决策支持解决方案,需要从决策支持系统的体系结构(C/S较流行)、软件工具和开发(原型法、生命周期法)3个方面加以分析。
第十四章 数据库发展趋势与新技术
1、面向对象数据库系统应该具有以下特征:
表达和管理对象的能力;
具有任意复杂度的对象结构;
具有与面向对象编程语言交互的接口;
具有表达和管理数据库变化的能力。
2、面向对象数据模型
面向对象数据模型可以看作在一个更高层次上实现数据模型的新成员,并经常用作高层概念模型,尤其在软件工程领域中更是如此。
面向对象数据模型的基本概念有对象、类、继承、对象标识和对象嵌套。
对象结构:属性集合、方法集合、消息集合
对象类 :在面向对象数据库中,类是一系列相似对象的集合,对应于E-R模型中的实体集概念。类是面向对象系统和数据库系统之间最重要的连接。首先,类直接说明了一个实例及其所属类之间的实例关系;其次,类提供了构成查询的基础;另外,类可以用来增加面向对象数据库的语义完整性;最后,类提出了所有对象的属性和方法的规格说明,便于生成对象。
类的概念相似于关系,类的属性相拟于关系的属性,对象相似于关系中的一个元组。
继承与多重继承:在面向对象的数据模型中,所有类形成了一个有限的层次结构或者是一个有根的无环有向图,称之为层次。
对象标识:每个对象惟一的、由系统生成的对象标识OID。几种常用的标识为,值、名称、内置名。对象标识要求必须具有永久持久性。根据实际应用的需求,大多面向对象数据库系统允许有对象和值两种标识表示方法共同使用。
对象嵌套:在面向对象数据模型中,对象的一个属性可以是一个单一值,也可以是一个来自值域的值集,即一个对象的属性可以是一个对象,形成了嵌套关系。
3、面向对象数据库语言:包括对象定义语言和对象操纵语言。对象查询语言是对象操纵语言的一个重要子集。
面向对象数据库语言应该具有这些功能:类的定义和操纵;
操作/方法的定义;
对象的操纵。
4、对象关系数据库系统
在今天的商业领域中,占统治地位的数据库管理系统产品有2个:关系数据库系统和面向对象数据库系统。另外还有两种主要的类型是层次数据库和网关数据库。
对象关系数据模型扩展关系数据模型的方式是提供一个包括复杂数据类型和面向对象的更丰富的类型系统。
(1)嵌套关系:元组在一个属性上取值可以是一个关系,于是关系可以存储在关系中,从而形成了关系的嵌套。这样,一个复杂的对象可以用嵌套关系的单个元组来表示。
(2)复杂类型:集合是集合体类型的一个实例,另外的集合体类型包括数组和多重集合。面向对象关系数据库允许属性是集合。
(3)继承、引用类型:SQL99仅支持单继承
(4)与复杂类型有关的查询: 路径表达式;(使用右向箭头符号,例如select head-->name,head-->address from departments)
以集合体为值的属性;
嵌套与解除嵌套。(将一个嵌套关系转换为1NF的过程称为解嵌套,反向过程就是嵌套。嵌套可以通过SQL的分组扩展实现,即不使用聚集函数而只是返回多重集合)
(5)函数与过程:对象关系数据库系统中允许用户定义函数与过程,既可以用SQL来定义,也可以用外部的程序设计语言来定义。
(6)面向对象与对象关系:几种数据库系统的能力如下,
关系系统 --简单数据模型、功能强大的查询语言以及高保护性;
对象关系系统--复杂数据模型、功能强大的查询语言以及高保护性;
以持久化程序设计语言为基础的面向对象系统--复杂数据类型、与程序设计语言集成以及高性能。
5、ERP与数据库
ERP的形成经历了四个阶段:基本MRP阶段、闭环MRP阶段、MRP-2阶段以及ERP阶段。
基本MRP,在传统的库存理论中引入了时间分段和反映产品结构的物料清单,从而较好的解决了库存管理和生产控制中的难题。
闭环MRP,在基本MRP的基础上,加入了对能力的约束的考虑,如供货能力或运输能力,从而形成了信息回路,称为闭环MRP。
MRP-2,以生产计划为主线,统一计划和控制各种资源,使企业的物流、信息流、资金流都畅通,也实现了动态反馈。
ERP,它继承了MRP-2的基本思想,但是把管理重心转移到财务上来,在全过程中贯穿财务成本控制的概念。
6、ERP设计的总体思路
一个中心,两类业务,三条干线。即以“财务”为中心,处理“计划”和“执行”两类业务,围绕“供应链管理、生产管理、财务管理”这3条干线。
在ERP系统的设计过程中怎么样应用数据库技术:
1)先要绘制出业务处理流程图;
2)绘制出数据流程图;
3)绘制E-R图; --前3步都是在前一步的基础上发展深入,一步步为数据库设计打好基础。
4)绘制功能模块图。
7、决定支持系统
决策支持系统实质上是在管理信息系统的基础上发展起来的。它综合利用了各种数据、信息、知识,特别是模型技术,能够辅助各级决策者解决决策问题。决策支持系统的新特点就是增加了模型库和模型库管理系统。
8、数据仓库
数据仓库已成为建立决策支持系统的重要技术手段,是建立决策支持系统的基础。
数据仓库的数据有4个特征:面向主题的、集成的、不可更新的和随时间不断变化的。
数据仓库的数据模型与传统的数据库相比有一些区别:它不包含纯操作型的数据;扩充了码的结构,增加了时间属性作为码的一部分;增加了一些导出数据。
数据仓库的设计过程与传统数据库相似,分为三级数据模型,即概念模型、逻辑模型、物理模型。概念模型使用E-R图描述,长方形表示主题而不再是实体,其它雷同。逻辑模型就是关系模型。
在进行数据仓库设计时,需要把数据分割和粒度划分结合起来考虑。粒度划分就是确定数据仓库中数据单元的详细程序级别,数据分割类似于数据分片概念。
元数据是数据仓库设计的一个重要组成部分。
9、数据转移技术
数据转移技术也称为数据转换或数据变换,把多种传统资源或外部资源信息中不完善的数据自动转换为准确可靠的数据。
数据转移技术有4种转移类型: 1)简单转移 (数据元的类型转换、日期/时间格式转换、字段解码)
2)清洗 (检查字段中的有效值、重新格式化某些类型的数据,如地址)
3)集成
4)聚集和概括
10、OLTP,联机事务处理,以快速事务响应和频繁的数据修改为特征,方便用户使用数据库快速处理具体业务。
OLAP,联机分析处理,是以数据仓库进行分析决策的基础,是针对待定问题的联机数据访问和分析。
它们是两类不同的应用。
OLTP与OLAP的对比:
OLTP OLAP
数据库原始数据 数据库导出数据或数据仓库数据
细节性数据 综合性数据
当前数据 历史数据
经常更新 不可更新,但周期性刷新
一次性处理的数据量小 一次性处理的数据量大
响应时间要求高 响应时间合理
用户数量大 用户数量相对较少
面向操作人员,支持日常操作 面向决策人员,支持管理需要
面向应用,事务驱动 面向分析,分析驱动
11、企业决策支持解决方案,需要从决策支持系统的体系结构(C/S较流行)、软件工具和开发(原型法、生命周期法)3个方面加以分析。
软考学习笔记-数据库工程师第十三章-网络与数据库
软考学习笔记-数据库工程师第十三章-网络与数据库
第十三章 网络与数据库
1、分布式数据库的目标: 一是,借助网络把分散在不同地域的数据管理起来;
另一是,各个地域的数据库系统仍能支持本地应用。
分布式数据的定义: 分布性;逻辑相关性;场地透明性;场地自治性。全部满足这些条件的数据库系统称为完全分布式数据库系统。
分布式数据库的特点:
1)数据的集中控制性;
2)数据独立性;
3)数据冗余可控性;
4)场地自治性;
5)存取的有效性--分布式数据库系统中的查询优化有两个级别。一个是全局优化,决定在多个副本中选取合适的场地副本,使得场地间的数据传输量及次数最少,从而减少系统通信开销;另一个是局部优化,这与传统的集中式数据库中的优化是相同的。
上面的这些特点中,前3点都是数据库系统优于文件系统的方面,并且除第4点以外,传统数据库也应该具有这些特点。
2、分布式数据库的体系结构
(A)分布式数据库系统的模式结构:目前国际上还没有统一的标准。国内提出的4层模式结构如下:全局外层、全局概念层、局部概念层、局部内层。
1)全局外层 --分布式数据库的全局视图是针对分布式数据库特定的全局用户,是对分布式数据库的最高层的抽象。
2)全局概念层--是分布式数据库的整体抽象,但比集中式的概念层有更多的描述。全局概念层有3种模式描述信息,全局概念模式、分片模式、分配模式。
(1)全局概念模式:描述分布式数据库全局数据的逻辑结构;
(2)分片模式:描述全局数据逻辑划分的视图,每一个逻辑划分就是一个分片;
(3)分配模式:是分片后的物理分配视图。
因此分布式数据库的定义语言除了需要提供概念模式的定义语句外,还要提供分片模式和分配模式的定义语句。全局概念模式到分片模式的映射是一对多的;分片模式到分配模式的映射是一对多的或一对一的,这要由数据分布的冗余策略决定。作为GDBA,将负责全局数据结构的定义、逻辑分布的定义和物理分布的定义。
3)局部概念层--该层由局部概念模式描述,全局概念模式经逻辑划分后被分配在各局部场地上。
4)局部内层 --相当于集中式数据库的内层。
4层结构的全局数据库和局部数据库分离、数据独立性、透明性、数据冗余控制都体现了分布式数据库的特点。
(B)数据分布:数据的划分和放置是数据分布问题的两个重要方面。有几种处理策略,集中式、分割式、复制式和混合式。
(C)数据分片:也称数据分割。对于关系数据库,数据分片有3种方法,水平分片(元组)、垂直分片(属性)、混合分片(水平和垂直)。水平划分元组为若干不相交的子集,可以通过合并操作恢复全局关系。垂直划分关系的属性为若干子集,要求所有属性都要被划分且每一垂直片都包含该全局关键字,可以通过连接操作恢复该全局关系。
数据分片要遵守的原则为:完备性条件;可重构条件;不相交条件(关键字除外)。
(D)分布透明性:也称为分布独立性,由高到低分成了3个级别,分片透明性--分配透明性--局部数据模型透明性。
局部数据模型透明性,也称为局部映像透明性,是透明性的最底层,在4层模式中处理分配模式和局部概念模式之间。全局数据模型与每个节点上局部数据库的数据模型的转换是由分配模式与局部概念模式之间的映像实现的。当某个节点上的数据库的数据模型改变时,只要改变分配模式到该节点局部概念模式之间的映像即可,应用程序不受影响,从而实现了局部数据模型透明性。
(E)分布式数据库管理系统DDBMS:有两大类,综合型和联合型。前者是新建的一个分布式数据库,后者是整合已经存在的多个节点的数据而形成。联合型又可以分为同构型和异构型。
分布式数据库管理系统由4部分组成:LDBMS、GDBMS、GDD(全局数据字典)、CM(通信管理)。
一个完全的分布式管理系统要符合12条规则:场地自治性;非集中式管理;高可用性;位置独立性;数据分割独立性;数据复制独立性;分布式查询;分布式事务管理;硬件独立性;操作系统独立性;网络独立性;数据库管理系统独立性。
注意理解分布式数据库系统结构模式图,和分布式数据库管理系统结构图。
3、分布式查询处理和查询优化
与集中式数据库环境中的查询相比,分布式数据库环境中的查询还要考虑到:数据、信息传输的延迟问题;网络中存在多处理器时的并行数据处理机会。这两点都会影响到查询的速度。
查询优化器,在分布式数据库系统中它的任务是控制和加快查询的执行与数据传输的过程。在分布式查询处理技术中,查询优化的基本类型通常包括2类:针对查询执行代价的优化,和针对查询响应时间的优化。
查询执行代价优化的目标是,使查询执行所使用的系统资源尽量少(最便宜);
查询响应时间优化的目标是,尽量减少响应时间而不计较系统资源的消耗(最快)。
4、分布事务管理
1)分布式事务:在分布式数据库系统中,一个分布式事务是由若干个不同站点上的子事务组成的。
2)分布式事务与集中式事务的相同特性:与集中式事务的特性相同为ACID,原子性、一致性、隔离性和持久性。
分布式事务与集中式事务的不同特性:执行特性、操作特性和控制报文。执行过程中,分布式事务要必须创建一个控制进程,协调子事务、数据及控制报文;而集中式事务仅由并行调度算法进行调度即可。操作过程中,分布式事务还要加入大量的通信原语和控制原语。集中式事务没有使用控制报文。
3)分布式数据库故障:分为节点故障(事务故障、系统故障、介质故障),通信故障(报文故障、网络分割故障)。其中报文故障包括报文错、报文丢失、报文延迟。
4)分布式数据库的恢复原则:保证事务原子性的措施称为事务故障恢复,有几个原则是,
孤立和逐步退出事务的原则UNDO;
成功结束事务原则REDO;
夭折事务的原则。(撤消全部事务,恢复到初态)
在分布式事务恢复中,本地事务的恢复和集中式事务的恢复相同,由本地事务管理器LTM执行。整个的分布式事务的恢复由LTM与DTM(分布式事务管理器)协同完成。
5)两阶段提交协议2PC(准备提交、建议提交/撤销、全局提交/撤销、确认)
在2PC中,将分布式事务的某一个代理指定为协调者,其它代理都是参与者。参与者可以进行单方面撤销。2PC可以分为两个步骤:先是表决阶段,然后是执行阶段。表决中实行一票否决。
2PC对故障的恢复:(1)场地故障 参与者在写入“建议提交”前发生故障 : --协调者等到超时后将取消事务,该参与者自行可以 终止事务。
参与者在写入“建议提交”后发生故障: --而其它参与者可以正常结束事务,该参与者 要访问协调者或其它参与者获得之前协调者作出 的决定并执行相应的操作。
协调者在写入“准备提交”后,在写入“全局提交/撤销”前发生故障:
--协调者从头恢复提交协议
协调者在写入“全局提交/撤销”后,在写入“事务结束”记录前发生故障:
--协调者恢复时要给所有的参与者重发之前的全局决定。
(2)报文丢失 丢失参与者的回答报文(建议提交/撤销): --协调者将取消整个事务
丢失“准备提交”报文: --协调者在超时后将取消整个事务
丢失“全局提交/撤销”报文: --涉案参与者将请求协调者重发该报文
丢失“确认”报文: --协调者将重发全局报文,参与者无论子事务 提交与否都要给予确认。
(3)网络分割故障,整个网络被分为2组,协调者组和参与者组。各自进行故障处理。
6)三阶段提交协议3PC(在2PC基础上增加了,全局预提交和准备就绪,两个报文,可以确认所有参与者的状态)
第一阶段,协调者向所有的参与者发“准备提交”报文,只有所有参与者都投票“建议提交”,才会进入第二阶段;
第二阶段,协调者向所有的参与者发“全局预提交”报文,只有所有参与者都投票“准备就绪”,才能进入第三阶段;
第三阶段,协调者向所有的参与者发“全局提交”报文。
3PC仅降低了阻塞发生的可能性,不是完全的非阻塞协议。
3PC对故障的恢复: 协调者发出的“准备提交”报文延迟,参与者超时而撤销子事务;
协调者等待参与者投票时超时,协调者将撤销事务;
参与者处于“赞成提交”状态,而等待全局预提交时超时,参与者将进入恢复处理过程;
参与者处于“准备就绪”状态,而等待全局提交时超时,参与者将进入恢复处理过程。
在3PC协议中,恢复处理过程惟一可以做的是就近访问一个参与者,依照协调者之前作出的决定安排自己的操作。
5、WEB数据库
WEB数据库由数据处理和资源共享这两种技术结合而成,也称为网络数据库。
WWWW下的WEB数据库,RDB增加了DB的面向对象成分、增加各种中间件(CGI、ISAPI、ODBC、JDBC、ASP),通过应用服务器解释执行各种HTML中嵌入的脚本,来解决Internet应用中数据库的显示、维护、输出及到HTML的格式转换。
WEB服务器的连接方案,有2套:服务器端方案(CGI、SAPI、ASP、PHP、JSP)和客户端方案(JDBC、DHTML)。
连接数据库的常用方法有:ODBC、DAO、RDO、ADO。ADO是DAO、RDO的简化合集。
6、应用开发平台ASP、PHP、JSP
ASP,ASP服务器被含在了IIS服务器中,ASP中使用的是VBscript,ASP安装配置简单、易学易用。ASP缺点是使用了组件带来了安全性问题,另外ASP不能跨平台使用。
PHP,简单易学,可以跨平台,具有良好的数据库交换能力,与Apache紧密结合,安全性好。缺点是安装配置复杂,并且缺少企业级的支持。
JSP,可移值性好,可以跨平台,伸缩性强大,多样化并有强大的工具支持。缺点是安装配置管理都较复杂,只适用于大型系统。
7、关于CGI(Common Gateway Interface)
是最早出现的动态网页发布技术。通过CGI接口,服务器可以向CGI程序发送信息,CGI程序也可以向服务器发送信息。可以使用任何可形成可执行程序的程序语言编写CGI程序,如C Shell、Perl、C、C++、FROTRAN和数据库语言。CGI支持ODBC方式。
8、关于ASP(Active Server Page)
ASP提供了一个在服务器端执行脚本指令的环境(包括VBscript,html,JavaScript等),脚本可以嵌入HTML中,还可以通过ActiveX控件实现更加强大的功能。
ASP通过ADO对象模块来存取数据库,只要数据具有对应的ODBC或OLE DB驱动程序。ASP提供的ADO对象模块俾昼作夜了下列6个对象和3个集合。 Connection对象
Recordset对象
Fields集合
Field对象
Command对象--返回值为Recordset对象
Parameter集合
Parameter对象
Error集合
Error对象
9、关于Servlet和JSP
Servlet是一个运行在WEB服务器中的Java程序。它从浏览器获取一个HTTP请求,动态生成内容,并把HTTP信息返回给浏览器。Servlet优点是运行在服务器端且可以更直接地访问数据库。
JSP技术通常与Java Servlet技术结合,可以在HTML或其它标记语言中嵌入Java代码段并且调用外部Java组件。JSP是一个前端的处理工具,可以使用JavaBean实现更为复杂的业务逻辑和动态功能。
JSP最大的优点是将网页的静态内容(HTML代码)和动态内容(Java代码)分隔处理,易于人员分工。
10、XML的应用
采用文件存储XML,会受到文件系统的一些限制(大小、迸发性、工具选择、版本、安全性、综合性)。
XML与数据库的数据转换:
文档的逆反回归不一致性,将数据存储到数据库时会丢失大量文档相关的信息。同样地,从数据库中检索数据并生成的XML文档,除非预定义的实体一,不包含任何字符数据和实体引用,并且同层元素和属性的出现顺序常常就是从数据库中返回数据的顺序。
XML与数据库之间传输数据,需要进行相互映射。有两种映射方式:模板驱动、模型驱动。
第十三章 网络与数据库
1、分布式数据库的目标: 一是,借助网络把分散在不同地域的数据管理起来;
另一是,各个地域的数据库系统仍能支持本地应用。
分布式数据的定义: 分布性;逻辑相关性;场地透明性;场地自治性。全部满足这些条件的数据库系统称为完全分布式数据库系统。
分布式数据库的特点:
1)数据的集中控制性;
2)数据独立性;
3)数据冗余可控性;
4)场地自治性;
5)存取的有效性--分布式数据库系统中的查询优化有两个级别。一个是全局优化,决定在多个副本中选取合适的场地副本,使得场地间的数据传输量及次数最少,从而减少系统通信开销;另一个是局部优化,这与传统的集中式数据库中的优化是相同的。
上面的这些特点中,前3点都是数据库系统优于文件系统的方面,并且除第4点以外,传统数据库也应该具有这些特点。
2、分布式数据库的体系结构
(A)分布式数据库系统的模式结构:目前国际上还没有统一的标准。国内提出的4层模式结构如下:全局外层、全局概念层、局部概念层、局部内层。
1)全局外层 --分布式数据库的全局视图是针对分布式数据库特定的全局用户,是对分布式数据库的最高层的抽象。
2)全局概念层--是分布式数据库的整体抽象,但比集中式的概念层有更多的描述。全局概念层有3种模式描述信息,全局概念模式、分片模式、分配模式。
(1)全局概念模式:描述分布式数据库全局数据的逻辑结构;
(2)分片模式:描述全局数据逻辑划分的视图,每一个逻辑划分就是一个分片;
(3)分配模式:是分片后的物理分配视图。
因此分布式数据库的定义语言除了需要提供概念模式的定义语句外,还要提供分片模式和分配模式的定义语句。全局概念模式到分片模式的映射是一对多的;分片模式到分配模式的映射是一对多的或一对一的,这要由数据分布的冗余策略决定。作为GDBA,将负责全局数据结构的定义、逻辑分布的定义和物理分布的定义。
3)局部概念层--该层由局部概念模式描述,全局概念模式经逻辑划分后被分配在各局部场地上。
4)局部内层 --相当于集中式数据库的内层。
4层结构的全局数据库和局部数据库分离、数据独立性、透明性、数据冗余控制都体现了分布式数据库的特点。
(B)数据分布:数据的划分和放置是数据分布问题的两个重要方面。有几种处理策略,集中式、分割式、复制式和混合式。
(C)数据分片:也称数据分割。对于关系数据库,数据分片有3种方法,水平分片(元组)、垂直分片(属性)、混合分片(水平和垂直)。水平划分元组为若干不相交的子集,可以通过合并操作恢复全局关系。垂直划分关系的属性为若干子集,要求所有属性都要被划分且每一垂直片都包含该全局关键字,可以通过连接操作恢复该全局关系。
数据分片要遵守的原则为:完备性条件;可重构条件;不相交条件(关键字除外)。
(D)分布透明性:也称为分布独立性,由高到低分成了3个级别,分片透明性--分配透明性--局部数据模型透明性。
局部数据模型透明性,也称为局部映像透明性,是透明性的最底层,在4层模式中处理分配模式和局部概念模式之间。全局数据模型与每个节点上局部数据库的数据模型的转换是由分配模式与局部概念模式之间的映像实现的。当某个节点上的数据库的数据模型改变时,只要改变分配模式到该节点局部概念模式之间的映像即可,应用程序不受影响,从而实现了局部数据模型透明性。
(E)分布式数据库管理系统DDBMS:有两大类,综合型和联合型。前者是新建的一个分布式数据库,后者是整合已经存在的多个节点的数据而形成。联合型又可以分为同构型和异构型。
分布式数据库管理系统由4部分组成:LDBMS、GDBMS、GDD(全局数据字典)、CM(通信管理)。
一个完全的分布式管理系统要符合12条规则:场地自治性;非集中式管理;高可用性;位置独立性;数据分割独立性;数据复制独立性;分布式查询;分布式事务管理;硬件独立性;操作系统独立性;网络独立性;数据库管理系统独立性。
注意理解分布式数据库系统结构模式图,和分布式数据库管理系统结构图。
3、分布式查询处理和查询优化
与集中式数据库环境中的查询相比,分布式数据库环境中的查询还要考虑到:数据、信息传输的延迟问题;网络中存在多处理器时的并行数据处理机会。这两点都会影响到查询的速度。
查询优化器,在分布式数据库系统中它的任务是控制和加快查询的执行与数据传输的过程。在分布式查询处理技术中,查询优化的基本类型通常包括2类:针对查询执行代价的优化,和针对查询响应时间的优化。
查询执行代价优化的目标是,使查询执行所使用的系统资源尽量少(最便宜);
查询响应时间优化的目标是,尽量减少响应时间而不计较系统资源的消耗(最快)。
4、分布事务管理
1)分布式事务:在分布式数据库系统中,一个分布式事务是由若干个不同站点上的子事务组成的。
2)分布式事务与集中式事务的相同特性:与集中式事务的特性相同为ACID,原子性、一致性、隔离性和持久性。
分布式事务与集中式事务的不同特性:执行特性、操作特性和控制报文。执行过程中,分布式事务要必须创建一个控制进程,协调子事务、数据及控制报文;而集中式事务仅由并行调度算法进行调度即可。操作过程中,分布式事务还要加入大量的通信原语和控制原语。集中式事务没有使用控制报文。
3)分布式数据库故障:分为节点故障(事务故障、系统故障、介质故障),通信故障(报文故障、网络分割故障)。其中报文故障包括报文错、报文丢失、报文延迟。
4)分布式数据库的恢复原则:保证事务原子性的措施称为事务故障恢复,有几个原则是,
孤立和逐步退出事务的原则UNDO;
成功结束事务原则REDO;
夭折事务的原则。(撤消全部事务,恢复到初态)
在分布式事务恢复中,本地事务的恢复和集中式事务的恢复相同,由本地事务管理器LTM执行。整个的分布式事务的恢复由LTM与DTM(分布式事务管理器)协同完成。
5)两阶段提交协议2PC(准备提交、建议提交/撤销、全局提交/撤销、确认)
在2PC中,将分布式事务的某一个代理指定为协调者,其它代理都是参与者。参与者可以进行单方面撤销。2PC可以分为两个步骤:先是表决阶段,然后是执行阶段。表决中实行一票否决。
2PC对故障的恢复:(1)场地故障 参与者在写入“建议提交”前发生故障 : --协调者等到超时后将取消事务,该参与者自行可以 终止事务。
参与者在写入“建议提交”后发生故障: --而其它参与者可以正常结束事务,该参与者 要访问协调者或其它参与者获得之前协调者作出 的决定并执行相应的操作。
协调者在写入“准备提交”后,在写入“全局提交/撤销”前发生故障:
--协调者从头恢复提交协议
协调者在写入“全局提交/撤销”后,在写入“事务结束”记录前发生故障:
--协调者恢复时要给所有的参与者重发之前的全局决定。
(2)报文丢失 丢失参与者的回答报文(建议提交/撤销): --协调者将取消整个事务
丢失“准备提交”报文: --协调者在超时后将取消整个事务
丢失“全局提交/撤销”报文: --涉案参与者将请求协调者重发该报文
丢失“确认”报文: --协调者将重发全局报文,参与者无论子事务 提交与否都要给予确认。
(3)网络分割故障,整个网络被分为2组,协调者组和参与者组。各自进行故障处理。
6)三阶段提交协议3PC(在2PC基础上增加了,全局预提交和准备就绪,两个报文,可以确认所有参与者的状态)
第一阶段,协调者向所有的参与者发“准备提交”报文,只有所有参与者都投票“建议提交”,才会进入第二阶段;
第二阶段,协调者向所有的参与者发“全局预提交”报文,只有所有参与者都投票“准备就绪”,才能进入第三阶段;
第三阶段,协调者向所有的参与者发“全局提交”报文。
3PC仅降低了阻塞发生的可能性,不是完全的非阻塞协议。
3PC对故障的恢复: 协调者发出的“准备提交”报文延迟,参与者超时而撤销子事务;
协调者等待参与者投票时超时,协调者将撤销事务;
参与者处于“赞成提交”状态,而等待全局预提交时超时,参与者将进入恢复处理过程;
参与者处于“准备就绪”状态,而等待全局提交时超时,参与者将进入恢复处理过程。
在3PC协议中,恢复处理过程惟一可以做的是就近访问一个参与者,依照协调者之前作出的决定安排自己的操作。
5、WEB数据库
WEB数据库由数据处理和资源共享这两种技术结合而成,也称为网络数据库。
WWWW下的WEB数据库,RDB增加了DB的面向对象成分、增加各种中间件(CGI、ISAPI、ODBC、JDBC、ASP),通过应用服务器解释执行各种HTML中嵌入的脚本,来解决Internet应用中数据库的显示、维护、输出及到HTML的格式转换。
WEB服务器的连接方案,有2套:服务器端方案(CGI、SAPI、ASP、PHP、JSP)和客户端方案(JDBC、DHTML)。
连接数据库的常用方法有:ODBC、DAO、RDO、ADO。ADO是DAO、RDO的简化合集。
6、应用开发平台ASP、PHP、JSP
ASP,ASP服务器被含在了IIS服务器中,ASP中使用的是VBscript,ASP安装配置简单、易学易用。ASP缺点是使用了组件带来了安全性问题,另外ASP不能跨平台使用。
PHP,简单易学,可以跨平台,具有良好的数据库交换能力,与Apache紧密结合,安全性好。缺点是安装配置复杂,并且缺少企业级的支持。
JSP,可移值性好,可以跨平台,伸缩性强大,多样化并有强大的工具支持。缺点是安装配置管理都较复杂,只适用于大型系统。
7、关于CGI(Common Gateway Interface)
是最早出现的动态网页发布技术。通过CGI接口,服务器可以向CGI程序发送信息,CGI程序也可以向服务器发送信息。可以使用任何可形成可执行程序的程序语言编写CGI程序,如C Shell、Perl、C、C++、FROTRAN和数据库语言。CGI支持ODBC方式。
8、关于ASP(Active Server Page)
ASP提供了一个在服务器端执行脚本指令的环境(包括VBscript,html,JavaScript等),脚本可以嵌入HTML中,还可以通过ActiveX控件实现更加强大的功能。
ASP通过ADO对象模块来存取数据库,只要数据具有对应的ODBC或OLE DB驱动程序。ASP提供的ADO对象模块俾昼作夜了下列6个对象和3个集合。 Connection对象
Recordset对象
Fields集合
Field对象
Command对象--返回值为Recordset对象
Parameter集合
Parameter对象
Error集合
Error对象
9、关于Servlet和JSP
Servlet是一个运行在WEB服务器中的Java程序。它从浏览器获取一个HTTP请求,动态生成内容,并把HTTP信息返回给浏览器。Servlet优点是运行在服务器端且可以更直接地访问数据库。
JSP技术通常与Java Servlet技术结合,可以在HTML或其它标记语言中嵌入Java代码段并且调用外部Java组件。JSP是一个前端的处理工具,可以使用JavaBean实现更为复杂的业务逻辑和动态功能。
JSP最大的优点是将网页的静态内容(HTML代码)和动态内容(Java代码)分隔处理,易于人员分工。
10、XML的应用
采用文件存储XML,会受到文件系统的一些限制(大小、迸发性、工具选择、版本、安全性、综合性)。
XML与数据库的数据转换:
文档的逆反回归不一致性,将数据存储到数据库时会丢失大量文档相关的信息。同样地,从数据库中检索数据并生成的XML文档,除非预定义的实体一,不包含任何字符数据和实体引用,并且同层元素和属性的出现顺序常常就是从数据库中返回数据的顺序。
XML与数据库之间传输数据,需要进行相互映射。有两种映射方式:模板驱动、模型驱动。
软考学习笔记-数据库工程师第十二章-数据库运行与管理
软考学习笔记-数据库工程师第十二章-数据库运行与管理
第十二章 数据库运行与管理
1、数据库系统的运行策略: 从物理环境上保障系统的稳定运行;
从对人员的要求上做保障;
应用数据库的安全性策略;
做好数据库的备份与恢复工作。
2、数据库系统的监控对象和监控方式
监控对象有3个,性能监控、故障监控、安全监控。
监控方式有2种,系统监控和应用程序监控。
3、数据库维护
因为某些原因需要修改数据库的结构,称为数据重构,包括表结构的修改和视图的修改。
视图机制一方面可以实现数据的逻辑独立性,另一方面可以实现数据的安全性。
文档是对系统结构和实现的描述,必须与系统保持调度的一致性。数据库重构过程中的所有修改必须在文档中体现出来。
4、数据库系统的运行统计
系统监控和运行统计是DBA掌握数据库系统运行状态最有效的手段。系统监控用来保障系统的稳定运行,系统统计则用来了解系统性能,作为性能调整的依据。
5、数据库系统的审计,是一种DBMS工具,它记录数据库资源和权限的使用情况。审计是被动的。
6、数据库系统的管理
(1)数据字典的管理:数据字典是存储在数据库中的所有对象信息的知识库,其中存储的数据称为元数据。数据字典是只读的。
(2)数据完整性维护和管理:作用对象有列、行、表3种。列级约束、主码约束和参照完整性约束是在数据库定义过程中定义的,存在数据字典中。更为复杂的约束可以编写触发器程序实现。
因此,由DBMS管理的约束,可通过修改数据库定义完成维护和管理;
由应用程序实现的复杂的完整性约束,要通过分析修改程序(触发器程序)来实现。
(3)数据库的存储管理:数据库中的数据是以文件形式存储在物理存储设备上的,程序通过DBMS完成I/O操作来访问数据。提高系统访问效率的有效手段就是提高I/O操作的效率。使用这样几种手段管理数据的存储,可以有效地提高性能:
1)索引文件和数据文件分开存储,事务日志文件存储在高速设备上;
2)适时修改数据文件和索引文件的页面大小;
3)定期对数据进行排序;
4)增加必要的索引项。
也可以增加计算机内存,引入调整存储设备等外部方式提高系统的访问效率。
(4)数据库备份与恢复的管理:
设定合理的备份周期和备份时间;
把事务日志文件保存在最稳定的存储设备上;
定期在事务日志文件中加入检查点(checkpoint),检查点记录数据库的正确状态点。在数据库恢复过程中,可以反向扫描日志文件找到第一个检查点,执行UNDO、REDO操作。
(5)数据库的并发控制与死锁管理:多用户数据库DBMS都提供并发控制机制。在实际运行过程中,死锁的产生多是因为事务程序的错误引起。管理员需要使用系统监控工具和系统日志,找出频繁产生死锁的事务。分析原因,修改事务程序,减少死锁。
(6)数据库的安全管理:
建立网络安全(防火墙)
操作系统级安全(登录用户管理)
DBMS级安全(访问DB的用户验证密码)
角色和用户授权管理
使用视图和存储过程
使用审计功能
7、数据库系统的性能调整
1)SQL语句的编码检验:通过DBMS提供的监控和统计功能,找出频繁执行的SQL语句并对其进行优化。步骤为,
(1)尽可能地减少多表查询或建立物化视图;
(2)以不相关子查询代替相关子查询;
(3)只检索需要的列;
(4)用带IN的条件子句等价替换OR子句;
(5)经常提交COMMIT,以尽早释放锁。
2)表设计的评价:首先要求关系都能符合3NF或BCNF,然后还要根据实际运行情况对表进行调整。
调整的原则是: 如果频繁地访问涉及的是对两个相关表进行连接操作,则将这两个表合并;
如果频繁地访问只是在表中的一部分字段上进行,则考虑分解表或将该部分单独拿出作为一个表;
对于很少更新的表,引入物化视图。
3)索引的改进:索引的调整原则如下,
如果查询是瓶颈--在关系上新建适当的索引,通常在作为查询条件的属性上建立索引可以提高查询效率;
如果更新是瓶颈--因为每次更新都会重建表上的索引,引起效率的降低,可以考虑删除某些索引;
选择适当的索引类型--比如经常使用范围查询,可以使用B树索引,比散列索引更高效;
将有利于大多数据查询和更新的索引设为聚簇索引。
4)设备的增强:高速的计算机、增加内存、高速网络设备、高速存储设备。
第十二章 数据库运行与管理
1、数据库系统的运行策略: 从物理环境上保障系统的稳定运行;
从对人员的要求上做保障;
应用数据库的安全性策略;
做好数据库的备份与恢复工作。
2、数据库系统的监控对象和监控方式
监控对象有3个,性能监控、故障监控、安全监控。
监控方式有2种,系统监控和应用程序监控。
3、数据库维护
因为某些原因需要修改数据库的结构,称为数据重构,包括表结构的修改和视图的修改。
视图机制一方面可以实现数据的逻辑独立性,另一方面可以实现数据的安全性。
文档是对系统结构和实现的描述,必须与系统保持调度的一致性。数据库重构过程中的所有修改必须在文档中体现出来。
4、数据库系统的运行统计
系统监控和运行统计是DBA掌握数据库系统运行状态最有效的手段。系统监控用来保障系统的稳定运行,系统统计则用来了解系统性能,作为性能调整的依据。
5、数据库系统的审计,是一种DBMS工具,它记录数据库资源和权限的使用情况。审计是被动的。
6、数据库系统的管理
(1)数据字典的管理:数据字典是存储在数据库中的所有对象信息的知识库,其中存储的数据称为元数据。数据字典是只读的。
(2)数据完整性维护和管理:作用对象有列、行、表3种。列级约束、主码约束和参照完整性约束是在数据库定义过程中定义的,存在数据字典中。更为复杂的约束可以编写触发器程序实现。
因此,由DBMS管理的约束,可通过修改数据库定义完成维护和管理;
由应用程序实现的复杂的完整性约束,要通过分析修改程序(触发器程序)来实现。
(3)数据库的存储管理:数据库中的数据是以文件形式存储在物理存储设备上的,程序通过DBMS完成I/O操作来访问数据。提高系统访问效率的有效手段就是提高I/O操作的效率。使用这样几种手段管理数据的存储,可以有效地提高性能:
1)索引文件和数据文件分开存储,事务日志文件存储在高速设备上;
2)适时修改数据文件和索引文件的页面大小;
3)定期对数据进行排序;
4)增加必要的索引项。
也可以增加计算机内存,引入调整存储设备等外部方式提高系统的访问效率。
(4)数据库备份与恢复的管理:
设定合理的备份周期和备份时间;
把事务日志文件保存在最稳定的存储设备上;
定期在事务日志文件中加入检查点(checkpoint),检查点记录数据库的正确状态点。在数据库恢复过程中,可以反向扫描日志文件找到第一个检查点,执行UNDO、REDO操作。
(5)数据库的并发控制与死锁管理:多用户数据库DBMS都提供并发控制机制。在实际运行过程中,死锁的产生多是因为事务程序的错误引起。管理员需要使用系统监控工具和系统日志,找出频繁产生死锁的事务。分析原因,修改事务程序,减少死锁。
(6)数据库的安全管理:
建立网络安全(防火墙)
操作系统级安全(登录用户管理)
DBMS级安全(访问DB的用户验证密码)
角色和用户授权管理
使用视图和存储过程
使用审计功能
7、数据库系统的性能调整
1)SQL语句的编码检验:通过DBMS提供的监控和统计功能,找出频繁执行的SQL语句并对其进行优化。步骤为,
(1)尽可能地减少多表查询或建立物化视图;
(2)以不相关子查询代替相关子查询;
(3)只检索需要的列;
(4)用带IN的条件子句等价替换OR子句;
(5)经常提交COMMIT,以尽早释放锁。
2)表设计的评价:首先要求关系都能符合3NF或BCNF,然后还要根据实际运行情况对表进行调整。
调整的原则是: 如果频繁地访问涉及的是对两个相关表进行连接操作,则将这两个表合并;
如果频繁地访问只是在表中的一部分字段上进行,则考虑分解表或将该部分单独拿出作为一个表;
对于很少更新的表,引入物化视图。
3)索引的改进:索引的调整原则如下,
如果查询是瓶颈--在关系上新建适当的索引,通常在作为查询条件的属性上建立索引可以提高查询效率;
如果更新是瓶颈--因为每次更新都会重建表上的索引,引起效率的降低,可以考虑删除某些索引;
选择适当的索引类型--比如经常使用范围查询,可以使用B树索引,比散列索引更高效;
将有利于大多数据查询和更新的索引设为聚簇索引。
4)设备的增强:高速的计算机、增加内存、高速网络设备、高速存储设备。
登録:
投稿 (Atom)