Oracle数据库10g:新的SQL和PLSQL功能课件_第1页
Oracle数据库10g:新的SQL和PLSQL功能课件_第2页
Oracle数据库10g:新的SQL和PLSQL功能课件_第3页
Oracle数据库10g:新的SQL和PLSQL功能课件_第4页
Oracle数据库10g:新的SQL和PLSQL功能课件_第5页
已阅读5页,还剩139页未读, 继续免费阅读

下载本文档

kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

kok电子竞技:文档简介

Oracle数据库10g:新的SQL和PLSQL功能课件Oracle数据库10g中新的SQL和PL/SQL功能Oracle数据库10g议程新的SQL特性

新的PL/SQL特性

PL/SQL的速度是原来的两倍

总结

问答议程新的SQL特性

Oracle8OracleSQL

引擎的发展Oracle8iOracle9iOracle9iR2SQL/XML集成(XMLType、URIType等)OLAPDatetime类型ANSI联接CASE表达式XML数据库SQL/XMLW3C标准数据挖掘网络Web服务本地数值结构BLAST对象扩展数据插件SQL/Java集成interMedia类型数据和处理复杂性Oracle8OracleSQL引擎的发展Oracle8新的SQL特性

本地数值结构

LOB增强

集合增强新的SQL特性

简介起源于数学首先在UNIX中计算机化从ed、grep、perl、cgi、web到任何地方多种应用程序HTMLFORMS中的验证生物信息学服务器配置数据挖掘简介起源于数学Oracle对数据库的本地支持SQL和PL/SQL中的接口基于POSIX标准与GNU、PERL、Java、Xquery等同步

描述数据的模式变为数据的一个属性

数据库内部强大的字符串处理Oracle对数据库的本地支持主要特性POSIX扩展的接口REGEXP_LIKE 模式是否匹配?REGEXP_SUBSTR 它与什么匹配?REGEXP_INSTR 它在哪里匹配?REGEXP_REPLACE 替换匹配的记录。匹配选项语言环境支持LOB支持主要特性POSIX扩展的REGEXP_LIKE确定模式是否存在。查找名称‘JonStevens‘的变体John或JonSteven或Stevens或Stephen或StephensSELECTc1FROMt1WHEREREGEXP_LIKE(c1,‘Joh?nSte(ph|v)ens?’);JonStevensJohnStephensJohnStevensREGEXP_LIKE确定模式是否存在。和DDL一起使用允许使用过滤器的数据,并带检查约束邮政编码(ZIPcode)列是VARCHAR2(5),但可以包含任意的5个字符。

使用视图的查询子集和格式化将电话号码格式化为(xxx)xxx-xxxx

创建基于函数的索引和DDL一起使用允许使用过滤器的数据,并带检查约束与PL/SQL一起使用非常强大的字符串处理功能src:=REGEXP_REPLACE(src,‘<regexp_1>’);src:=REGEXP_REPLACE(src,‘<regexp_2>’);src:=REGEXP_REPLACE(src,‘<regexp_3>’);

可以增强现有的功能支持PERL缩写提取第n个子表达式替换大量代码行可以简化字符串处理函数与PL/SQL一起使用非常强大的字符串处理功能性能考虑事项模式匹配可能很复杂需要编译成状态机词法分析检查所有可能的分支,直到发现匹配

每条语句编译一次对于复杂情景可能比LIKE更快邮政编码检查快5倍通常比等价的PL/SQL更快

编写快速执行的表达式性能考虑事项模式匹配可能很复杂本地浮点数据类型两种新的数值数据类型BINARY_FLOAT,BINARY_DOUBLE二进制浮点运算的IEEE754标准是许多其他标准(例如,Java、XML模式)和硬件平台的一部分普遍存在于商务智能、生命科学、工程/科学计算本地浮点数据类型两种新的数值数据类型BINARY_FLOA本地浮点数据类型与数值数据类型比NUMBER

类型效率更高硬件运算/数学运算快5–10倍占用更少的内存/磁盘空间(5/9字节与1–22字节)BINARY_DOUBLE值范围更大(e308与e125)无需类型转换(使用与字节顺序无关的存储格式)本地浮点数据类型与数值数据类型比NUMBER类型效率更高本地浮点函数新的类型转换函数TO_BINARY_FLOAT、TO_BINARY_DOUBLETO_NUMBERSQL函数支持数值函数(sin、cos等)聚合函数(sum、avg、stddev等)分析函数(sum、avg、stddev等)对SQL、PL/SQL、Java、XML模式注册、ODP.NET和OCI/OCCI的无缝支持本地浮点函数新的类型转换函数本地浮点约束createtablefloating_point_table1(fltNnullbinary_floatconstraintflt_nullnotnull,dblNnullbinary_doubleconstraintdbl_nullnotnull,fltUnqbinary_floatconstraintflt_unqunique,dblUnqbinary_doubleconstraintdbl_unqunique,fltChkbinary_floatconstraint flt_chkcheck(fltChkisnotNaN),dblChkbinary_doubleconstraint dbl_chkcheck(dblChkisnotinfinite),fltPrmbinary_floatconstraintflt_prmprimarykey);*NaN(不是数字)–e.g.0/0,infinity/infinity本地浮点约束createtablefloating_po本地浮点约束createtablefloating_point_table2(dblPrmbinary_doubleconstraint dbl_prmprimarykey,fltFrnbinary_floatconstraintflt_frn

referencesfloating_point_table1(fltPrm) ondeletecascade);本地浮点约束createtablefloating_poPL/SQL示例使用欧拉级数计算

=sqrt(6*(1+1/2*2+1/3*2+...))

使用牛顿方法近似真值的平方根赋值、加、乘、除、比较、绝对值PL/SQL示例使用欧拉级数计算

=sqrt

procedureEuler_Pi_Seriesis...beginpi:=one;prev_pi:=zero;prod_over_six:=zero;step:=zero;whilepi-prev_pi>tolerloopprev_pi:=pi;step:=step+one;prod_over_six:=prod_over_six+one/(step*step);prod:=six*prod_over_six;prev_root:=prod;root:=prod/two;whileAbs(root-prev_root)>root_tolerloopprev_root:=root;root:=(root+prod/root)/two;endloop;pi:=root;endloop;endEuler_Pi_Series;procedureEuler_Pi_Seriesis

subtypeMy_Numberisnumber;zeroconstantMy_Number:=0.0;oneconstantMy_Number:=1.0;twoconstantMy_Number:=2.0;sixconstantMy_Number:=6.0;tolerconstantMy_Number:=0.00000000001;root_tolerconstantMy_Number:=toler/1000.0;rootMy_Number;prev_rootMy_Number;prod_over_sixMy_Number;prodMy_Number;piMy_Number;prev_piMy_Number;stepMy_Number;Oracle数据库10g:新的SQL和PLSQL功能课件

subtypeMy_Numberisbinary_double;zeroconstantMy_Number:=0.0d;oneconstantMy_Number:=1.0d;twoconstantMy_Number:=2.0d;sixconstantMy_Number:=6.0d;tolerconstantMy_Number:=0.00000000001d;root_tolerconstantMy_Number:=toler/1000.0d;rootMy_Number;prev_rootMy_Number;prod_over_sixMy_Number;prodMy_Number;piMy_Number;prev_piMy_Number;stepMy_Number;Oracle数据库10g:新的SQL和PLSQL功能课件PL/SQL示例使用欧拉级数计算

近似300,000次迭代

NUMBER花费约27.7秒

BINARY_DOUBLE花费约3.7秒

提高倍数:约7倍PL/SQL示例使用欧拉级数计算

LOB增强LOB普遍用于存储非结构化的数据(文本、AVI、基因/蛋白序列等)LOB增强LOB普遍用于存储非结构化的数据(文本、AVILOB性能改善访问内联(<4KB)LOB时获得5倍的性能增益(在9iR2中)

临时LOB使用引用计算提供了几个数量级的性能增益在读取时引用(ReferenceonRead)在写入时复制(CopyonWrite)LOB性能改善访问内联(<4KB)LOB时获得5超大型LOBTB大小的Lob(8–128TB)DB_BLOCK_SIZE(2–32KB)x(4GB–1)新的DBMS_LOB.GET_STORAGE_LIMIT函数OCI、JDBC和DBMS_LOB现在支持大于4GB的LOBOCILobRead2()、OCIWriteAppend2()和OCILobWrite2()函数为JDBC和DBMS_LOB提供相同的API超大型LOBTB大小的Lob(8–128TB)集合类型增强用户定义的类型、集合类型和引用类型简化了结构复杂的数据建模

集合类型用于映射实际世界应用程序中的包含关系例如,一个购物车包含了许多商品集合类型增强用户定义的类型、集合类型和引用类型简化了结构复杂VARRAY增强VARRAY的类型发展CREATETYPEemail_list_typASOBJECT(section_noNUMBER,emailsemail_list_arr);/CREATETYPEemail_varray_typASVARRAY(5)OFemail_list_typ;/ALTERTYPEemail_varray_typMODIFYLIMIT100CASCADE;在临时表中支持VARRAY列提供应用程序开发灵活性VARRAY增强VARRAY的类型发展嵌套表增强将一个不同的表空间用于嵌套表的存储表带嵌套表的列的表可以在表空间之间分配I/O负载CREATETABLEpurchase_orders(order_items_columnorder_items_typ)NESTEDTABLEorder_items_columnSTOREASorder_items_column_nt(TABLESPACEusers);嵌套表增强将一个不同的表空间用于嵌套表的存储表为嵌套表提供的ANSISQL多集合操作嵌套表存储无序的元素集合只包含唯一的元素多集合可以包含重复的元素嵌套表上的各种多集合操作为嵌套表提供的ANSISQL多集合操作嵌套表存储无序的为嵌套表提供的多集合操作Cardinality、Collect、MultisetExcept、MultisetIntersection、MultisetUnion、Powermultiset、Powermultiset_by_Cardinality和Set操作查找热销商品集合的强大工具(市场指数总览分析)为嵌套表提供的多集合操作Cardinality、Collec多集合操作示例createtypecategoriesastableofint;/createtablecarts(c1int,c2categories)

nestedtablec2storeastb1_c2;insertintocartsvalues(1,categories(1,2,3,4));insertintocartsvalues(2,categories(2,4,6));selectt1.c2multisetintersectt2.c2fromcartst1,cartst2

wheret1.c1=1andt2.c1=2;categories(2,4)<-frequentset多集合操作示例createtypecategories嵌套表比较Equal和NotEqual、In、Submultiset、MemberOf、Empty和Is[Not]ASetSELECT*FROMcustomercWHEREitem_typ(2)MEMBEROFc.freq_set;嵌套表比较Equal和NotEqual、In、Subm在PL/SQL中也提供declaretypeTab_tistableofpls_integer;aTab_t:=Tab_t(1,2,3,4,5);beginif3memberofathenShow('member');endif;end;在PL/SQL中也提供declareSQL小结Oracle数据库10gSQL引擎聚合来自不同的分布式数据源的数据网格信息无缝地集成Java、XML和基本数据处理功能一个全面的高性能和基于标准(SQL-2003W3C、J2SE、POSIX等)的特性集简化的应用程序开发、部署和管理RAS、可管理性和安全性

SQL小结Oracle数据库10gSQL引擎议程新的SQL特性

新的PL/SQL特性

PL/SQL的速度是原来的两倍

总结

问答议程新的SQL特性

新的PL/SQL特性刚才讨论的所有SQL语言特性

FORALL语句中的稀疏绑定数组

编译器警告

新的Utl_Mail

和Utl_Compress

程序包新的PL/SQL特性刚才讨论的所有SQL语言特性

FORALL语句中的稀疏绑定数组您的PL/SQL表最初是密集的,

例如,是由BULKCOLLECT填充的您删除了一些元素您想将这些元素插入到某个表中foralljinINDICESOFsparse_emp_records

BETWEEN<lb>AND<ub>--optionalinsertintonew_employeesvaluessparse_emp_records(j);FORALL语句中的稀疏绑定数组您的PL/SQL表最初FORALL语句中的稀疏绑定数组您有一个PL/SQL表(密集或稀疏)您想将这些记录的一个指定的子集插入到某个表中foralljinVALUESOFpointer_tabinsertintonew_employeesvaluesemp_records(j);FORALL语句中的稀疏绑定数组您有一个PL/SQL表编译器警告createorreplaceprocedurePisdebuggingboolean:=false;beginifdebuggingthenDbms_Output.Put_Line('debugging');endif;endP;/SP2-0804:ProcedurecreatedwithcompilationwarningsShowErrorsPLW-06002:Unreachablecodealtersessionsetplsql_warnings='ENABLE:ALL';编译器警告createorreplaceprocedu编译器警告createorreplaceprocedureP(iinoutclob)isbegini:='x';endP;/SP2-0804:ProcedurecreatedwithcompilationwarningsShowErrorsPLW-07203:parameter'I'maybenefitfromuseoftheNOCOPYcompilerhintaltersessionsetplsql_warnings='ENABLE:PERFORMANCE';编译器警告createorreplaceprocedu新提供的程序包Utl_Mail它的API反映了,比如说,NetscapeCommunicator的最终用户的思维模式无需SMTP协议的知识

(与使用Utl_Smtp相比)确保简单化的一些限制Utl_Compress提供了一个API来压缩和解压缩RAW或BLOB(服务器端)新提供的程序包Utl_Mail议程新的SQL特性

新的PL/SQL特性

PL/SQL的速度是原来的两倍

总结

问答议程新的SQL特性

PL/SQL编译和执行101PL/SQL源代码前端IR==Diana后端对象代码==MCodePVMPL/SQL编译和执行101PL/SQL源代码前端IR全新的后端10g

引进了一个全新的后端,又叫做优化代码生成器

它全面地查看源代码所表达的内容,然后删除对最终的正确结果确实没有影响的所有计算

提供了实现巨大性能的潜力全新的后端10g引进了一个全新的后端,又叫做优化代码生成器全新的后端在9iR2中的ORACLE可执行文件中,新的代码生成器与旧的代码生成器并存,一个允许在两者之间进行选择的开关

两者都曾在回归测试中使用

因此我们保证它是安全的!

我们没有将这个开关提供给客户全新的后端在9iR2中的ORACLE可执行文件中,新重要的pvm升级删除了过时的指令

增加了新的指令

例如

one-shotmulticoncatenate

简化了用于使用PVM指令的系统

实施经过调整的指令的C例程重要的pvm升级删除了过时的指令

改进了本地编译数据库中的DLL

对于数据库管理员,配置更加简单

改进了生成的C代码

让我们修改其工作方式……改进了本地编译数据库中的DLL

PL/SQL源代码前端IR==Diana后端对象代码==MCodePVMPL/SQL编译和执行101对象代码==MCode或本地计算机代码硬件PL/SQL源代码前端IR==Diana后端对象代码性能实验结果由PL/SQL小组进行的测试Beta程序测试由Oracle的应用程序部进行的测试性能实验结果由PL/SQL小组进行的测试由PL/SQL小组进行的测试17个自包含的PL/SQL程序的基准测试套件

设计用来实践大范围的结构和编程习惯一些测试选择用来演示特定的优化器效果例如,从一个循环中删除一个常量赋值由PL/SQL小组进行的测试17个自包含的PL/SQ由PL/SQL小组进行的测试下一张幻灯片显示了每一个程序在9iR2INTERPRETED

和10g

NATIVE中的速度

9iR2中速度相同10g

中显示了两种测量方式的完成CPU时间之比由PL/SQL小组进行的测试下一张幻灯片显示了每一个程序Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试大多数测试程序速度提高超过2倍

一些测试程序速度提高远超过2倍

速度提高10倍的程序使用BINARY_INTEGER,并拥有特别易于优化的编程习惯由PL/SQL小组进行的测试大多数测试程序速度提高超过

procedurePis

/*constrainedbinary_integersubtypes*/apositiven:=1;bpositiven:=1;cpositiven:=1;dpositiven:=1;beginforjin1..i_nof_iterationsloopb:=j/*constraintcheck*/;d:=42/*constantassignmentwithinaloop*/;c:=d+b/*canbecombined...*/;a:=b+c/*...cnotusedexcepthere*/;endloop;endP;Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试下一张幻灯片显示了更多详细信息基准是OracleVersion8.0.6

显示了8i9iR2INTERPRETED9iR2NATIVE10g

INTERPRETED10g

NATIVE速度提高的倍数由PL/SQL小组进行的测试下一张幻灯片显示了更多详细信Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试TMI?下一张幻灯片为每一个测试的kok电子竞技本显示了这17个程序的集合的统计信息:中值最大和最小值第1和第3四分点

(一半的观察都落在第1和第3四分点之间)由PL/SQL小组进行的测试TMI?Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试8i

比8.0.6快

9iR2比8i快

NATIVE

始终比INTERPRETED快在9iR2中在10g中10g

始终比9iR2快INTERPRETED

与INTERPRETEDNATIVE

与NATIVE由PL/SQL小组进行的测试8i比8.0.6快

由IFS进行的Beta程序测试由IFS进行的Beta程序测试由IFS进行的Beta程序测试IFS应用程序基于web和门户技术

提供用于制造、供应链管理、客户关系管理、服务供应、财务管理、产品开发、维护和人力资源管理的60多种企业应用程序组件由IFS进行的Beta程序测试IFS应用程序由IFS进行的Beta程序测试IFS应用程序广泛使用Oracle

大多数业务逻辑用PL/SQL编写约3000个表约5000个视图约5000个程序包约420万行PL/SQL代码

所有的PL/SQL代码都在数据库中执行由IFS进行的Beta程序测试IFS应用程序广泛使10gBeta程序的IFS结果程序1程序22.59x1.76x两个模拟典型应用程序处理的纯PL/SQL测试程序

将10g

NATIVE

与9iR2INTERPRETED

进行比较(在10gBeta1中)10gBeta程序的IFS结果程序1程序22.5“在最初的测试中看到的测试结果让我们非常激动。

我们希望在真正的基准测试情景中看到同样出色的测试结果。”“在最初的测试中看到的测试结果让我们非常激动。

我们希望在10gBeta程序的IFS结果1.18x使用大量的SQL对真正的应用程序情景进行高强度的测试

同样将10g

NATIVE

与9iR2INTERPRETED

进行比较(在10gBeta1中)10gBeta程序的IFS结果1.18x使用大量的“测试结果让我们非常激动。

总体性能18%的提高对我们的客户真的非常有益。”“测试结果让我们非常激动。

总体性能18%的提高对我们的由甲骨文公司的应用程序开发小组

进行的测试初步结果,对10gBeta2和9iR2进行了比较

纯PL/SQL处理速度提高的倍数在2个数量级上

模拟数据输入处理(大量的SQL)的吞吐量提高的倍数在1.10x

到1.15x

的范围之间由甲骨文公司的应用程序开发小组

进行的测试初步结果,对10总结:

Oracle数据库10g

带来了……SQL新语言特性同样在PL/SQL中无缝地提供PL/SQL新语言特性新的PL/SQL程序包PL/SQL的速度是原来的两倍典型纯PL/SQL程序将在10g

NATIVE

与9iR2INTERPRETED的比较中获得至少2倍的速度提高从较早kok电子竞技本升级的客户将获得甚至更大的速度提高总结:

Oracle数据库10g带来了……SQL新语接下来,您可以……有关详细信息,请访问相关网站/products/database/

application_development/OTNSQL/PL-SQL论坛接下来,您可以……有关详细信息,请访问相关网站提醒—

请完成OracleWorld在线讲座调查

谢谢!提醒—

请完成OracleWorld在线讲座调查

AQ&问答AQ&问答Oracle数据库10g:新的SQL和PLSQL功能课件Oracle数据库10g:新的SQL和PLSQL功能课件Oracle数据库10g中新的SQL和PL/SQL功能Oracle数据库10g议程新的SQL特性

新的PL/SQL特性

PL/SQL的速度是原来的两倍

总结

问答议程新的SQL特性

Oracle8OracleSQL

引擎的发展Oracle8iOracle9iOracle9iR2SQL/XML集成(XMLType、URIType等)OLAPDatetime类型ANSI联接CASE表达式XML数据库SQL/XMLW3C标准数据挖掘网络Web服务本地数值结构BLAST对象扩展数据插件SQL/Java集成interMedia类型数据和处理复杂性Oracle8OracleSQL引擎的发展Oracle8新的SQL特性

本地数值结构

LOB增强

集合增强新的SQL特性

简介起源于数学首先在UNIX中计算机化从ed、grep、perl、cgi、web到任何地方多种应用程序HTMLFORMS中的验证生物信息学服务器配置数据挖掘简介起源于数学Oracle对数据库的本地支持SQL和PL/SQL中的接口基于POSIX标准与GNU、PERL、Java、Xquery等同步

描述数据的模式变为数据的一个属性

数据库内部强大的字符串处理Oracle对数据库的本地支持主要特性POSIX扩展的接口REGEXP_LIKE 模式是否匹配?REGEXP_SUBSTR 它与什么匹配?REGEXP_INSTR 它在哪里匹配?REGEXP_REPLACE 替换匹配的记录。匹配选项语言环境支持LOB支持主要特性POSIX扩展的REGEXP_LIKE确定模式是否存在。查找名称‘JonStevens‘的变体John或JonSteven或Stevens或Stephen或StephensSELECTc1FROMt1WHEREREGEXP_LIKE(c1,‘Joh?nSte(ph|v)ens?’);JonStevensJohnStephensJohnStevensREGEXP_LIKE确定模式是否存在。和DDL一起使用允许使用过滤器的数据,并带检查约束邮政编码(ZIPcode)列是VARCHAR2(5),但可以包含任意的5个字符。

使用视图的查询子集和格式化将电话号码格式化为(xxx)xxx-xxxx

创建基于函数的索引和DDL一起使用允许使用过滤器的数据,并带检查约束与PL/SQL一起使用非常强大的字符串处理功能src:=REGEXP_REPLACE(src,‘<regexp_1>’);src:=REGEXP_REPLACE(src,‘<regexp_2>’);src:=REGEXP_REPLACE(src,‘<regexp_3>’);

可以增强现有的功能支持PERL缩写提取第n个子表达式替换大量代码行可以简化字符串处理函数与PL/SQL一起使用非常强大的字符串处理功能性能考虑事项模式匹配可能很复杂需要编译成状态机词法分析检查所有可能的分支,直到发现匹配

每条语句编译一次对于复杂情景可能比LIKE更快邮政编码检查快5倍通常比等价的PL/SQL更快

编写快速执行的表达式性能考虑事项模式匹配可能很复杂本地浮点数据类型两种新的数值数据类型BINARY_FLOAT,BINARY_DOUBLE二进制浮点运算的IEEE754标准是许多其他标准(例如,Java、XML模式)和硬件平台的一部分普遍存在于商务智能、生命科学、工程/科学计算本地浮点数据类型两种新的数值数据类型BINARY_FLOA本地浮点数据类型与数值数据类型比NUMBER

类型效率更高硬件运算/数学运算快5–10倍占用更少的内存/磁盘空间(5/9字节与1–22字节)BINARY_DOUBLE值范围更大(e308与e125)无需类型转换(使用与字节顺序无关的存储格式)本地浮点数据类型与数值数据类型比NUMBER类型效率更高本地浮点函数新的类型转换函数TO_BINARY_FLOAT、TO_BINARY_DOUBLETO_NUMBERSQL函数支持数值函数(sin、cos等)聚合函数(sum、avg、stddev等)分析函数(sum、avg、stddev等)对SQL、PL/SQL、Java、XML模式注册、ODP.NET和OCI/OCCI的无缝支持本地浮点函数新的类型转换函数本地浮点约束createtablefloating_point_table1(fltNnullbinary_floatconstraintflt_nullnotnull,dblNnullbinary_doubleconstraintdbl_nullnotnull,fltUnqbinary_floatconstraintflt_unqunique,dblUnqbinary_doubleconstraintdbl_unqunique,fltChkbinary_floatconstraint flt_chkcheck(fltChkisnotNaN),dblChkbinary_doubleconstraint dbl_chkcheck(dblChkisnotinfinite),fltPrmbinary_floatconstraintflt_prmprimarykey);*NaN(不是数字)–e.g.0/0,infinity/infinity本地浮点约束createtablefloating_po本地浮点约束createtablefloating_point_table2(dblPrmbinary_doubleconstraint dbl_prmprimarykey,fltFrnbinary_floatconstraintflt_frn

referencesfloating_point_table1(fltPrm) ondeletecascade);本地浮点约束createtablefloating_poPL/SQL示例使用欧拉级数计算

=sqrt(6*(1+1/2*2+1/3*2+...))

使用牛顿方法近似真值的平方根赋值、加、乘、除、比较、绝对值PL/SQL示例使用欧拉级数计算

=sqrt

procedureEuler_Pi_Seriesis...beginpi:=one;prev_pi:=zero;prod_over_six:=zero;step:=zero;whilepi-prev_pi>tolerloopprev_pi:=pi;step:=step+one;prod_over_six:=prod_over_six+one/(step*step);prod:=six*prod_over_six;prev_root:=prod;root:=prod/two;whileAbs(root-prev_root)>root_tolerloopprev_root:=root;root:=(root+prod/root)/two;endloop;pi:=root;endloop;endEuler_Pi_Series;procedureEuler_Pi_Seriesis

subtypeMy_Numberisnumber;zeroconstantMy_Number:=0.0;oneconstantMy_Number:=1.0;twoconstantMy_Number:=2.0;sixconstantMy_Number:=6.0;tolerconstantMy_Number:=0.00000000001;root_tolerconstantMy_Number:=toler/1000.0;rootMy_Number;prev_rootMy_Number;prod_over_sixMy_Number;prodMy_Number;piMy_Number;prev_piMy_Number;stepMy_Number;Oracle数据库10g:新的SQL和PLSQL功能课件

subtypeMy_Numberisbinary_double;zeroconstantMy_Number:=0.0d;oneconstantMy_Number:=1.0d;twoconstantMy_Number:=2.0d;sixconstantMy_Number:=6.0d;tolerconstantMy_Number:=0.00000000001d;root_tolerconstantMy_Number:=toler/1000.0d;rootMy_Number;prev_rootMy_Number;prod_over_sixMy_Number;prodMy_Number;piMy_Number;prev_piMy_Number;stepMy_Number;Oracle数据库10g:新的SQL和PLSQL功能课件PL/SQL示例使用欧拉级数计算

近似300,000次迭代

NUMBER花费约27.7秒

BINARY_DOUBLE花费约3.7秒

提高倍数:约7倍PL/SQL示例使用欧拉级数计算

LOB增强LOB普遍用于存储非结构化的数据(文本、AVI、基因/蛋白序列等)LOB增强LOB普遍用于存储非结构化的数据(文本、AVILOB性能改善访问内联(<4KB)LOB时获得5倍的性能增益(在9iR2中)

临时LOB使用引用计算提供了几个数量级的性能增益在读取时引用(ReferenceonRead)在写入时复制(CopyonWrite)LOB性能改善访问内联(<4KB)LOB时获得5超大型LOBTB大小的Lob(8–128TB)DB_BLOCK_SIZE(2–32KB)x(4GB–1)新的DBMS_LOB.GET_STORAGE_LIMIT函数OCI、JDBC和DBMS_LOB现在支持大于4GB的LOBOCILobRead2()、OCIWriteAppend2()和OCILobWrite2()函数为JDBC和DBMS_LOB提供相同的API超大型LOBTB大小的Lob(8–128TB)集合类型增强用户定义的类型、集合类型和引用类型简化了结构复杂的数据建模

集合类型用于映射实际世界应用程序中的包含关系例如,一个购物车包含了许多商品集合类型增强用户定义的类型、集合类型和引用类型简化了结构复杂VARRAY增强VARRAY的类型发展CREATETYPEemail_list_typASOBJECT(section_noNUMBER,emailsemail_list_arr);/CREATETYPEemail_varray_typASVARRAY(5)OFemail_list_typ;/ALTERTYPEemail_varray_typMODIFYLIMIT100CASCADE;在临时表中支持VARRAY列提供应用程序开发灵活性VARRAY增强VARRAY的类型发展嵌套表增强将一个不同的表空间用于嵌套表的存储表带嵌套表的列的表可以在表空间之间分配I/O负载CREATETABLEpurchase_orders(order_items_columnorder_items_typ)NESTEDTABLEorder_items_columnSTOREASorder_items_column_nt(TABLESPACEusers);嵌套表增强将一个不同的表空间用于嵌套表的存储表为嵌套表提供的ANSISQL多集合操作嵌套表存储无序的元素集合只包含唯一的元素多集合可以包含重复的元素嵌套表上的各种多集合操作为嵌套表提供的ANSISQL多集合操作嵌套表存储无序的为嵌套表提供的多集合操作Cardinality、Collect、MultisetExcept、MultisetIntersection、MultisetUnion、Powermultiset、Powermultiset_by_Cardinality和Set操作查找热销商品集合的强大工具(市场指数总览分析)为嵌套表提供的多集合操作Cardinality、Collec多集合操作示例createtypecategoriesastableofint;/createtablecarts(c1int,c2categories)

nestedtablec2storeastb1_c2;insertintocartsvalues(1,categories(1,2,3,4));insertintocartsvalues(2,categories(2,4,6));selectt1.c2multisetintersectt2.c2fromcartst1,cartst2

wheret1.c1=1andt2.c1=2;categories(2,4)<-frequentset多集合操作示例createtypecategories嵌套表比较Equal和NotEqual、In、Submultiset、MemberOf、Empty和Is[Not]ASetSELECT*FROMcustomercWHEREitem_typ(2)MEMBEROFc.freq_set;嵌套表比较Equal和NotEqual、In、Subm在PL/SQL中也提供declaretypeTab_tistableofpls_integer;aTab_t:=Tab_t(1,2,3,4,5);beginif3memberofathenShow('member');endif;end;在PL/SQL中也提供declareSQL小结Oracle数据库10gSQL引擎聚合来自不同的分布式数据源的数据网格信息无缝地集成Java、XML和基本数据处理功能一个全面的高性能和基于标准(SQL-2003W3C、J2SE、POSIX等)的特性集简化的应用程序开发、部署和管理RAS、可管理性和安全性

SQL小结Oracle数据库10gSQL引擎议程新的SQL特性

新的PL/SQL特性

PL/SQL的速度是原来的两倍

总结

问答议程新的SQL特性

新的PL/SQL特性刚才讨论的所有SQL语言特性

FORALL语句中的稀疏绑定数组

编译器警告

新的Utl_Mail

和Utl_Compress

程序包新的PL/SQL特性刚才讨论的所有SQL语言特性

FORALL语句中的稀疏绑定数组您的PL/SQL表最初是密集的,

例如,是由BULKCOLLECT填充的您删除了一些元素您想将这些元素插入到某个表中foralljinINDICESOFsparse_emp_records

BETWEEN<lb>AND<ub>--optionalinsertintonew_employeesvaluessparse_emp_records(j);FORALL语句中的稀疏绑定数组您的PL/SQL表最初FORALL语句中的稀疏绑定数组您有一个PL/SQL表(密集或稀疏)您想将这些记录的一个指定的子集插入到某个表中foralljinVALUESOFpointer_tabinsertintonew_employeesvaluesemp_records(j);FORALL语句中的稀疏绑定数组您有一个PL/SQL表编译器警告createorreplaceprocedurePisdebuggingboolean:=false;beginifdebuggingthenDbms_Output.Put_Line('debugging');endif;endP;/SP2-0804:ProcedurecreatedwithcompilationwarningsShowErrorsPLW-06002:Unreachablecodealtersessionsetplsql_warnings='ENABLE:ALL';编译器警告createorreplaceprocedu编译器警告createorreplaceprocedureP(iinoutclob)isbegini:='x';endP;/SP2-0804:ProcedurecreatedwithcompilationwarningsShowErrorsPLW-07203:parameter'I'maybenefitfromuseoftheNOCOPYcompilerhintaltersessionsetplsql_warnings='ENABLE:PERFORMANCE';编译器警告createorreplaceprocedu新提供的程序包Utl_Mail它的API反映了,比如说,NetscapeCommunicator的最终用户的思维模式无需SMTP协议的知识

(与使用Utl_Smtp相比)确保简单化的一些限制Utl_Compress提供了一个API来压缩和解压缩RAW或BLOB(服务器端)新提供的程序包Utl_Mail议程新的SQL特性

新的PL/SQL特性

PL/SQL的速度是原来的两倍

总结

问答议程新的SQL特性

PL/SQL编译和执行101PL/SQL源代码前端IR==Diana后端对象代码==MCodePVMPL/SQL编译和执行101PL/SQL源代码前端IR全新的后端10g

引进了一个全新的后端,又叫做优化代码生成器

它全面地查看源代码所表达的内容,然后删除对最终的正确结果确实没有影响的所有计算

提供了实现巨大性能的潜力全新的后端10g引进了一个全新的后端,又叫做优化代码生成器全新的后端在9iR2中的ORACLE可执行文件中,新的代码生成器与旧的代码生成器并存,一个允许在两者之间进行选择的开关

两者都曾在回归测试中使用

因此我们保证它是安全的!

我们没有将这个开关提供给客户全新的后端在9iR2中的ORACLE可执行文件中,新重要的pvm升级删除了过时的指令

增加了新的指令

例如

one-shotmulticoncatenate

简化了用于使用PVM指令的系统

实施经过调整的指令的C例程重要的pvm升级删除了过时的指令

改进了本地编译数据库中的DLL

对于数据库管理员,配置更加简单

改进了生成的C代码

让我们修改其工作方式……改进了本地编译数据库中的DLL

PL/SQL源代码前端IR==Diana后端对象代码==MCodePVMPL/SQL编译和执行101对象代码==MCode或本地计算机代码硬件PL/SQL源代码前端IR==Diana后端对象代码性能实验结果由PL/SQL小组进行的测试Beta程序测试由Oracle的应用程序部进行的测试性能实验结果由PL/SQL小组进行的测试由PL/SQL小组进行的测试17个自包含的PL/SQL程序的基准测试套件

设计用来实践大范围的结构和编程习惯一些测试选择用来演示特定的优化器效果例如,从一个循环中删除一个常量赋值由PL/SQL小组进行的测试17个自包含的PL/SQ由PL/SQL小组进行的测试下一张幻灯片显示了每一个程序在9iR2INTERPRETED

和10g

NATIVE中的速度

9iR2中速度相同10g

中显示了两种测量方式的完成CPU时间之比由PL/SQL小组进行的测试下一张幻灯片显示了每一个程序Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试大多数测试程序速度提高超过2倍

一些测试程序速度提高远超过2倍

速度提高10倍的程序使用BINARY_INTEGER,并拥有特别易于优化的编程习惯由PL/SQL小组进行的测试大多数测试程序速度提高超过

procedurePis

/*constrainedbinary_integersubtypes*/apositiven:=1;bpositiven:=1;cpositiven:=1;dpositiven:=1;beginforjin1..i_nof_iterationsloopb:=j/*constraintcheck*/;d:=42/*constantassignmentwithinaloop*/;c:=d+b/*canbecombined...*/;a:=b+c/*...cnotusedexcepthere*/;endloop;endP;Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试下一张幻灯片显示了更多详细信息基准是OracleVersion8.0.6

显示了8i9iR2INTERPRETED9iR2NATIVE10g

INTERPRETED10g

NATIVE速度提高的倍数由PL/SQL小组进行的测试下一张幻灯片显示了更多详细信Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试TMI?下一张幻灯片为每一个测试的kok电子竞技本显示了这17个程序的集合的统计信息:中值最大和最小值第1和第3四分点

(一半的观察都落在第1和第3四分点之间)由PL/SQL小组进行的测试TMI?Oracle数据库10g:新的SQL和PLSQL功能课件由PL/SQL小组进行的测试8i

比8.0.6快

9iR2比8i快

NATIVE

始终比INTERPRETED快在9iR2中在10g中10g

始终比9iR2快INTERPRETED

与INTERPRETEDNATIVE

与NATIVE由PL/SQL小组进行的测试8i比8.0.6快

由IFS进行的Beta程序测试由IFS进行的Beta程序测试由IFS进行的Beta程序测试IFS应用程序基于web和门户技术

提供用于制造、供应链管理、客户关系管理、服务供应、财务管理、产品开发、维护和人力资源管理的60多种企业应用程序组件由IFS进行的Beta程序测试IFS应用程序由IFS进行的Beta程序测试IFS应用程序广泛使用Oracle

大多数业务逻辑用PL/SQL编写约3000个表约5000个视图约5000个程序包约420万行PL/SQL代码

所有的PL/SQL代码都在数据库中执行由IFS进行的Beta程序测试IFS应用程序广泛使10gBeta程序的IFS结果程序1程序22.59x1.76x两个模拟典型应用程序处理的纯PL/SQL测试程序

将10g

NATIVE

与9iR2INTERPRETED

进行比较(在10gBeta1中)10gBeta程序的IFS结果程序1程序22.5“在最初的测试中看到的测试结果让我们非常激动。

我们希望在真正的基准测试情景中看到同样出色的测试结果。”“在最初的测试中看到的测试结果让我们非常激动。

我们希望在10gBeta程序的IFS结果1.18x使用大量的SQL对真正的应用程序情景进行高强度的测试

同样将10g

NATIVE

与9iR2INTERPRETED

进行比较(在10gBeta1中)10gBeta程序的IFS结果1.18x使用大量的“测试结果让我们非常激动。

总体性能18%的提高对我们的客户真的非常有益。”“测试结果让我们非常激动。

总体性能18%的提高对我们的由甲骨文公司的应用程序开发小组

进行的测试初步结果,对10gBeta2和9iR2进行了比较

纯PL/SQL处理速度提高的倍数在2个数量级上

模拟数据输入处理(大量的SQL)的吞吐量提高的倍数在1.10x

到1.15x

的范围之间由甲骨文公司的应用程序开发小组

进行的测试初步结果,对10总结:

Oracle数据库10g

带来了……SQL新语言特性同样在PL/SQL中无缝地提供PL/SQL新语言特性新的PL/SQL程序包PL/SQL的速度是原来的两倍典型纯PL/SQL程序将在10g

NATIVE

与9iR2INTERPRETED的比较中获得至少2倍的速度提高从较早kok电子竞技本升级的客户将获得甚至更大的速度提高总结:

Oracle数据库10g带来了……SQL新语接下来,您可以……有关详细信息,请访问相关网站/products/database/

application_development/OTNSQL/PL-SQL论坛接下来,您可以……有关详细信息,请访问相关网站提醒—

请完成OracleWorld在线讲座调查

谢谢!提醒—

请完成OracleWorld在线讲座调查

AQ&问答AQ&问答Oracle数据库10g:新的SQL和PLSQL功能课件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论