求助:页面展示大量的统计功能应该如何设计

zhangrf76 2016-06-04 07:44:48
加精
前台页面展示给客户看
页面上有各种维度的数据统计,需要从十几张表中查询不同的数据进行各种统计才能满足需求

我的初步设想是设计N张冗余表,定时填充统计结果,但是统计需求不定期变化,冗余表也要跟着变动 ,甚至是颠覆性的变革,相当于统计重新做

或许有人认为冗余表设计不合理,我想知道什么样的冗余表设计才算合理,我最早是完全按照页面统计好的结果数据设计的表,但页面变动表全废,再后来根据业务抽取必须要统计的,其余部分参照页面展示的结果去建表,定时统计填充数据

现在突然多了很多很多要统计的东西,如果全部冗余设计,稍微变动统计维度可能就是一场地震,直接查询统计不冗余的话又太慢了

苦思不得其解,不知各路大神有没有更好的统计方案可以减少变更时对统计功能的影响

没有接触过BI 不知道BI工具统计的数据是不是可以展示到页面上
...全文
3629 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangrf76 2016-08-11
  • 打赏
  • 举报
回复
补充一句,其实用视图的话,涉及的统计工作量太大,不利于页面的展示速度 感谢各位
zhangrf76 2016-08-11
  • 打赏
  • 举报
回复
结贴,感谢sp1234,虽然统计表的叫法被BS了,不过你明确、清晰了我的汇总的方向 starfd,说的也有道理
  • 打赏
  • 举报
回复
你们叫“冗余表”?这名字多low……一看就不是好东西 我们叫“汇总表”,这名字一看就知道是对已有数据的汇总,虽然数据在整体上存在冗余,但这种亢余是可以接受的 而且不管怎么优化,汇总一般都是必经步骤,唯一的区别就是你汇总的程度
bluedoctor 2016-06-24
  • 打赏
  • 举报
回复
其实楼主可以对查询结果缓存,而不必建立冗余表。
我是一道坎 2016-06-21
  • 打赏
  • 举报
回复
楼主的意思可能是 不同的冗余表对应不同的统计报表吧,现在统计功能变化就变的要去改冗余表结构跟统计代码了。 冗余表只为一个报表工作不好,字段再细一点,一遍满足不同需求吧,感觉可以利用视图对应满足不同统计报表,就不用改统计代码和表结构了,只需改视图的sql就好。 我是小白,蛮说说
正怒月神 2016-06-21
  • 打赏
  • 举报
回复
这个不是应该交给 View做吗? 通过视图,让数据库去统计计算,而不是调用程序通过sql实时计算。 sql基本功不够啊
maichouqu8526 2016-06-11
  • 打赏
  • 举报
回复
我避免建立冗余表的方法是写程序的时候把需要用的表/列获取到然后起个别名,程序随开随获取数据。 这样数据库可以一直保持整洁。
xuzuning 2016-06-10
  • 打赏
  • 举报
回复
不知道你的 冗余表 是什么东西,还要定时充填(由谁来填) 正因为被查询的数据可能分布在多个表中,查询指令可能会很复杂,所以数据库提供了 view(视图)来帮你做摘要 任何视图中所包含字段的发生变化时,这个变化就立刻反映在视图中 获取视图内容和获取表内容的操作是一样的 select * from视图名
zhangrf76 2016-06-04
  • 打赏
  • 举报
回复
抽取表的本质特征,各分公司水质月报 我现在确实是按照这个思路做的,但后续还有对这个本质特征表再做统计的需求,正因为不愿意让用户等待,所以在特征表后面又加了n张统计表来存储再次的统计结果 这个是我设计的,正因为有缺陷所以来看看大家有没有什么好的建议,至于是不是应该叫冗余表不重要,重要的是对于抽取的特征表后面更多维度的统计 我是不是只能设计“冗余表”才能满足需求
sp1234_maJia 2016-06-04
  • 打赏
  • 举报
回复
一个报表的前端展示层,它绝不做统计计算。它解释报表的需求,然后组合为 “[{行:"....",列:"....."},{行:"....",列:"....."}.....] 的需求发给服务器,从服务器上直接拿到数据之后放到各个位置直接展示就行了。报表系统不做任何统计计算,它集中于展示,集中于处理报表样式的变化。 计算是另一个”数据中心“系统做的事情。它具有各种 Agent 终端分布在全国各地、各种服务器上,从各个业务系统中推送或者拉取数据,然后进行统计计算,然后把结果传给报表系统。它有一套配置和控制方式,能够远程智慧数据的采集方法、路由方法、临时汇总统计方法。 每一个系统都只干最简单的事情。一个报表系统,它不干统计工作。除非你们没有能力思路去单独设计一个“数据中心系统”。
  • 打赏
  • 举报
回复
我判断,你并不是自己想出的那个朦胧的想法。但是你没有搞明白,所以无法实现设计。
  • 打赏
  • 举报
回复
水质 所以对于“冗余表”,搞清楚什么才叫做真的冗余。你的前任或者你的老师可能是从细节入手的,而你把这个理念理解为“冗余”,那就是跑偏了。
  • 打赏
  • 举报
回复
你要搞清楚什么叫做“冗余表”。可能你从前任软件设计者那里接手了这个产品,但是你并没有理解它原来的意思,所以自己发明了这个含糊的词儿。 比如说在 Excel 上画企业表格,那么我们就会说“【第一水厂】【原水水质】【二氧化氮】那一行,在【2016年5月】那一列,值为3.49”。 也就是说,一个二维表上的数值,它至少是“行、列、值”这样的三元对象。如果是一摞表(多张表),那么再增加一个表格维度。如果“行”或者“列”标题是分组的,那么它可能是组合键。 统计结果必定要保存起来。因为假设有一个表计算一次要15秒钟,10个领导,要在各自的远程终端刷新10000次报表,难道你要给它重新计算15万秒吗?显然在第一个领导第一次查询报表之前计算一次就够了,以后都是直接取结果,而决不可能进行什么计算。因为领导,它等不了1秒钟!“进行计算”这个说法是非常幼稚的,不是干实际项目的,是学生的想法。 但是最终表格的样式确实是变化的,而底层的“快表”不能总是变化。所以你要抽取出表格的本质特征,用其本质特征来保存离散数据。 例如上述报表叫做“各分公司水质月报”,那么里边有15万数据,记录了40个分公司、一共15年的水质数据。这个月报总共不过就是5列、15万行数据。不管谁知月报的样式怎样变化,数据都是从这里直接抽取的。
Poopaye 2016-06-04
  • 打赏
  • 举报
回复
应该尽力避免需求频繁变化,如果避免不了,应该趁早放弃。
VisualNet9.0的中文说明书 VisualNet TM研发背景 不管您是否了解或熟悉VisualNet,我们在对含有各种设备、线路资源的项目进行设计、施工、维护或管理时,都会遇到一个共同特点,即它们存在着大量的设备节点和节点间复杂的连接关系,既难于理解又不便管理。它们带来一系列难以了解清楚的问题是:它是什么?它在哪里?怎么配置?怎样连接?与谁连接?从上层设备到终端要经过哪些路由?l领用的设备用在了哪里?有哪些什么还是空闲的?设备何时投入运行的?哪些设备需要更新维护?员工走了,如何让资料能完整保存下来?新接手的员工如何能快速掌握系统?如何从众多的资料中找到所需要的信息?..... 每天 我们都在和这些成百上千的设备、数据信息打交道,我们很难对这些复杂系统中所有设备位置、参数、使用状态、资产信息等等做到了如指掌。然而,目前却很难找到一条有效的途径来管理这些日益复杂和离散的系统。缺少对这些基础设施的配置和资源使用状况的了解,导致日益严重的设备故障、低效的技术支持、资产的不明流失、投资的重复浪费、资料的严重缺失以及各项管理成本、维护成本和人力成本的增加。 大量的设备线路资源 在什么地方?有多少?谁在管?...... 大量的数据信息与文档资料 有哪些技术参数?怎么配置的?有哪些方案? 复杂的层次结构与关联关系 设备之间怎么连接的?相互有什么关联关系?... 常规实施方式遇到什么问题? 于是我们可能会想到要用各种各样的画图工具去制图,如CAD、Visio等,或者我们用一些信息系统来管理我们的各种图纸资料、设备资源、管网资源、技术文档等等。但大家都有体会的是,纯粹的画图软件,我们很难把众多的设备信息、连接关系信息表达清楚,不同的设计图纸之间也没有直观的连接关系能够表达出来,更不能对设计图中用到的设备材料进行快速定位、准确统计 。可是表格式的MIS系统又很难清楚表达复杂的系统结构和连接关系的。 就是一些花巨资用GIS系统去管理的单位,也已经充分意识到,光是管理设备资源的地理信息数据也是远远不够的,还有众多的信息如技术文档、设备的细节等都无法通过一个设计页面表达出来。因此,无论您目前使用哪一种方式去设计或管理系统,都会觉得存在明显的缺陷。其实原因很简:因为即使是一个很简单的图纸,里面的每一个对象都有其自身的数据属性、技术参数和具体的业务特征,同时它又和系统中的其它对象发生关联。而常见的静态图表软件已经不可能把这些关系、属性和业务特征一一反映出来,更不能做到图形与实物一一对应。 而如果我们采用常规方式购买现成软件或找人开发定制,只能满足当前的需求。 而用户在实际管理应用过程中,很多事情是变化的。譬如:系统结构、管理对象、数据属性、应用场合、操作人员等。在此过程中我们可以发现:无论是用户首次提出功能要求,还是系统定制或者以后提出更新需求,都必须借助于软件商去做这个事情,用户始终处于被动状态中,没有自己去解决这些问题的手段 。这种借助于第三方来满足经常变化着的需求方式,给我们最终用户带来了大量的不可控的、不可预知的变数,让用户始终处于一种被动状态中 。譬如:费用不可控、更新周期不可控、人员掌握的熟练程度不可控、软件本身的生命周期不可控、数据迁移过程不可控等等。 图纸设计软件无法表达大量数据信息 除了图外,怎样还能把大量内置信息表达出来? 数据管理系统无法直观表达复杂关系 这些数据代表是什么?在什么地方? 常规开发更新方式用户受限于开发商 每次更新修改,都得求助于他们,费时费钱费力 VisualNet 是怎么做的? 1、VisualNet提供了图形化的资源设计与管理平台给您。图形容易理解,数据集成能把图形对象与数据关联。 2、VisualNet提供了大量的图库模板,并且这些模板用户是可自定义的。用户只需拖拉设计,就能搭建一套资源管理平台,技术门槛低,并且用户是可以自主完成设计,无需求助于开发商就能完成从初次搭建到后期更改维护的整个过程。 3、VisualNet还提供了大量可自定义的、可灵活组合的查询、统计、定位、路由分析、动态监控等应用工具。 提供图形化设计管理平台 能帮您快速创建“虚拟现实”的管理环境。 提供大量的、可自定义的图库模板 设计、修改、更新、维护,用户都可自己完成。 提供查询分析、统计定位、动态监控工具 查询统计、路由分析、动态监控,都可自己实现!
asprain论坛是一个适合于各中小学、中专、技校、职高建设校园论坛、师生交流论坛,一些教科研部门、公司企业建设内部论坛、IT技术爱好者建设技术交流论坛的免费论坛程序。它有两个版本,分别是asp+Access版和asp+sqlServer版,功能完全一致,建站者可以根据自己的需要选用不同的版本。 Asprain论坛体积小巧,但是功能完整。它前端脚本基于jquery框架,跨浏览器性能出色。对IE6、IE7、IE8、firefox、Chrome、Saferi、Opera七种主流浏览器有良好的兼容性。可以轻松松换肤,制作个性皮肤也很方便,只要修改几个css就可以了。 asprain论坛使用了大量的ajax效果,不仅能够很有效地节省数据流量、应付网络拥堵,而且极酷的脚本动画和遮罩框效果也能使用户获得更好的应用体验。在asprain里,用户切换隐身/在线状态、更换自己的头像、版主删除水帖、加亮优秀帖等很多操作,都只要一键完成,不需要页面刷新或者跳转。asprain论坛还支持版主批量删帖、转移帖子、将帖子设为精华等等操作,并支持用户对帖子的评分、举报帖子等功能。 asprain论坛使用了一个非常独创的可视化UBB在线编辑器,实现了真正的所见即所得的UBB编辑,安全与便捷兼顾。在asprain论坛的在线编辑器中,可以做到一键插入本地图片、一键完成远程图片上传、轻松插入优酷网等视频网站上的的视频地址、插入回复可读、付费可读等标记,还可以插入程序代码。asprain论坛使用了改进版的chili插件,UBB标签[code]****[/code]能够很好地对javascript、php、asp、sql、css、html、C++、C#、Delphi、java、locus这十种开发语言进行语法高亮(这个功能对IT技术爱好者建设技术交流论坛非常有用)。 asprain论坛自带无图版、rss订阅等功能,即将推出wap版(手机版)。asprain支持滚动公告条、帖子引用通告、邮件群发、自定义论坛访问统计代码等功能,支持下载统计、支持文件反盗链、支持支付宝、财付通绑定。用户可以通过支付宝、财付通两种在线支付通道进行站内积分充值。站内积分可以用于悬赏求助、购买付费可读帖的阅读权、下载权等。这既方便了用户,也给站长增加了收入来源。 asprain自带五套漂亮的皮肤,表情和头像都非常可爱搞笑,而且可以轻松更换。网站头也可以根据需要轻松修改。asprain论坛支持多种论坛广告形式,包括页头广告、页脚广告、帖子中的文字广告、帖子右边的图片广告、全屏浮动广告、左右对联广告、页面右下角的弹出广告等。所有的广告位都支持循环轮播。也就是说,你可以在同一个广告位中插入十几条广告内容,然后前台会自动从这十几条预设广告中轮流播送。循环轮播广告比固定广告更容易抢得眼球,不易带来视觉疲劳。 如果你想学习研究asp编程技术或者jquery开发技术,也不妨来下载这个程序。 asprain论坛的后台界面也很漂亮,模仿了yeah邮件的标签功能,而且还可以搜索后台功能。 这个程序初始管理员用户名是Admin,前台密码和后台密码都是987654321。安装方法是:把下载包里的两个文件install.asp和asprain.asa解压出来,放到服务器空间根目录上,然后访问http://yourdomain/install.asp,然后填写几个表单,程序会自动把文件解压出来的。这样可以使论坛安装更方便,因为不需要再把几百个小文件通过ftp上传了,保需要把两个大文件传上去就
Toad 使用快速入门 目录 一.Toad功能综述 二.系统需求 三.安装指南 四.快速入门 1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的用法介绍 4. 如何进行PLSQL的debug 5. 如何使用SQLab Xpert优化SQL 6. 如何使用SQL Modeler来编写查询 7. 如何使用Toad的DBA方面的功能 一、 Toad功能综述 在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of Oracle Application Developers)。在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作。它最大的特点就是简单易用,访问速度快。使用Toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL和PL/SQL代码编辑和测试工作。Toad由Oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化PL/SQL开发环境。 Toad 主要具有如下特点: 模式浏览: 模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。Toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。当我们点击一个单独的数据库对象,Toad立即显示此对象的详细信息。例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL语句以及和其他表的相互引用关系都在同一界面显示出来。为了简化操作,用户可以在浏览窗口操作数据库对象。 SQL 编辑器: SQL 编辑器的主要功能是编辑、运行和调整SQL语句。TOAD 的高级编辑窗口包括众多的特性来提高开发人员编写SQL语句的产品化程度。例如,简单地生成代码模板,在编写SQL前自动发现包的内容和列的名字等等。 SQL编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。便捷的书签可以让开发人员非常容易地找到相关位置。在运行结果窗口可提供用户定义的配置功能,支持LONG 和LONG RAW列,可以将数据卸出到磁盘、打印数据、编辑数据等等。 存储过程编辑器: 存储过程编辑器的主要功能是编辑、编译、测试、调试存储过程和触发器。TOAD提供语法标识、错误标识和其他很多易于使用的功能,如在弹出窗口显示表名、列名和Oracle函数。和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷方式或模板来快速编写PL/SQL,也可以根据需要生成自己的模板。使用Toad可以非常方便地进行编辑工作,可如设置书签、取消注释、格式化SQL语句等等。 PL/SQL Debugger选项: Toad 提供简单易用的PL/SQL 调试功能,可以节省开发人员在大型项目中用于开发和测试的宝贵时间,提高应用开发的质量。在存储过程开发的过程中,Toad可以逐行编辑、调试和运行代码。运行时可以根据需要输入参数,观察相关参数的变化来检查存储过程的正确性。在调式过程中,Toad 可以通过窗口显示所有的断点、参数, 调用堆栈和输出参数。使用Toad,非常容易检测到存储过程的错误,开发人员可以一步一步运行PL/SQL语句来识别问题。调试会话可以和其他程序会话同时进行。 SQLab Xpert Option: 帮助开发人员优化SQL,为他们提供各种优化模式下SQL执行计划,并且能够给出优化的建议,能够比较各种模式下实际的SQL运行结果,帮助开发人员真正高速地开发高效地代码。 Toad还可以外挂一些别的产品,比如PL/Formatter, RevealNet Knowledge Base , SQL Impact等,这些都能够和Toad紧密集成,共同提供了一个完美的集成开发环境。新版本还新增加了DBA模块,更加拓广了Toad这个产品的适用范围。 二、系统要求: 客户端:  Windows 95 / 98 / NT/2000中英文均可 完整安装的SQL*Net 2.0或者Net8  磁盘:一般安装需要20M左右的空间,根据所选择模块的不同和安装方式的不同,最少也要5M的磁盘空间(从网络服务器读取)  内存:Windows 9x/Me:16M 内存;Windows NT/2000: Min 32M]  Tuning模块需要额外的25M空间 服务器端: Oracle 7.3 或者更高,在任何硬件平台上。  需要一个DBA用户帐号 三.安装: 1. 三种安装方式的选择: a) TOAD and Personal Configuration Files to PC 默认安装选择,完成一个完整的Client端的安装,把所有需要的文件拷贝到本地Toad目录。 绝大多数用户应该选择使用这个安装方式。 b) Personal Config Files to PC, read TOAD from Network Server 从网络服务器读取Toad程序,在本地计算机安装一些自定义的文件,并且创建到服务器文件的快捷方式,一般不推荐使用这个方式,而且要求网络服务器已经配置。 c) TOAD to Network Server 把Toad安装到网络服务器上,以便这样别的用户能够进行Personal Config Files to PC, read TOAD from Network Server这种方式的安装。 2. 根据需要使用到的特性,需要运行一些脚本(都在Toad\temps目录下)  如果需要用Toad来查看执行计划,必须运行脚本PrepToad.sql或者notoad.sql 如果希望专门建立一个Toad 用户来存放Toad需要使用的对象的话,就运行preptoad.sql。  如果希望在当前连接用户模式下建立toad需要使用的对象的话,就运行notoad.sql。  注意,如果是选择了专门建立toad这个用户的话,需要先修改一下脚本,指定用户的默认表空间和临时表空间。 需要使用Oracle8i 的Profile analyzer,必须运行ToadProfiler.sql  需要加强Toad的安全性,必须运行ToadSecurity.sql 四、Toad使用快速入门 1. Schema Browser: Schema browser是Toad的极为有特色的模块。在schema browser的帮助下,可以方便的浏览数据库内部的各类数据库对象,比如表,索引,序列,存储过程等,而且可以方便的倒出DDL语句和进行各种修改,重建工作。定位到某一类对象上,这列对象允许的操作都会自动列出来。 特色: 支持Oracle数据库里面所有对象的新建、查看、修改,集成了几乎对所有数据库对象的管理所需要的功能。  按照 模式->对象类别 ->对象->对象可操作属性 -> 对象本身的详细信息和对象相关的信息 来组织,非常有条理,容易定位对象,也能够看到所有你需要的对象的相关信息。 对于表: i. 完备的建表向导,不用输入冗长的语法,更加全面地替你考虑。 ii. 可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除列(在Oracle8i里面),修改表的物理存储属性,Truncate,Drop等。 iii. 可以生成建表的完整的DDl语句,包括存储信息,权限信息,约束,索引和触发器等,而这些手工很难做到。 iv. 可以方便的对表进行分析,查看表地所有信息,可以有条件的倒出表里面的数据,并且保存为sql语句。 v. 可以方便的对表进行重组,可以完成exp/imp作不到的事情,而且更少地人工参与,更加安全。 对于视图,存储过程: i. 可以保存建立视图、存储过程的语句为文本, ii. 重新编译失效的视图,存储过程,修改视图的定义语句等。方便的查看存储过程的代码,相互依赖关系,权限信息等保存为文本等。  回滚段, i. 简洁明了的online,offline状态,方便地online/offline操作 ii. 详细的回滚段物理信息和当前状态。 iii. 可以方便的修改物理存储属性 表空间: i. Tablespace Map;直观的显示数据物理的在表空间上的分布 ii. 直观的查看各个表空间的利用率、剩余空间、破碎情况等信息 iii. 可以进行各种alter操作:online, offline, 增加数据文件,改变数据文件大小,改变物理存储属性等 对其他数据库对象也有完备的操作支持。 2. SQL Editor: a) 激活SQL Editor的三种方式: i. 连接到数据库之后,Toad自动打开SQL Editor这个窗口。 ii. 点击总工具栏上最左边的那个按钮 iii. 从菜单栏:Database -> SQL Editor b) 特点:  允许同时打开多个编辑窗口,同时编辑多个SQL语句 支持同时连接到多个数据库,同时对多个数据库进行操作  允许编辑SQL,PLSQL,JAVA,HTML和文本 使用书签功能,可以在大量SQL语句里,快速定位某个语句所在位置  SQL Editor本身具有强大的编辑功能,非常方便编辑SQL语句。  强大的快捷键支持和工具栏快速按钮的支持,更加高效编写(很多快捷键可以自己定义,在View ->options ->SQL Editor里面) 能够根据前面的条件,智能推测需要输入的代码,可以做到某种程度的代码智能填充  把鼠标定位到表/视图/存储过程名称之上,按F4,可以打开对象描述窗口,方便的查看表和视图的定义,存储过程的源代码,  非常容易对SQL语句的分析其执行计划:单击工具栏上的 按钮就可以看到Explain Plan的结果  支持部分SQL*Plus命令,可以方便的执行大量的为SQL*Plus编写的数据库脚本 可以通过SQLab xpert来对当前SQL语句进行全面的分析,给出各种合理的调优意见,只需要单击工具栏上的Tuning按钮:  可以方便的保存,打开和运行SQL脚本 支持对查询结果进行修改,  可以把查询结果以多种格式保存起来,可以保存为HTML,纯文本,XLS等多种格式 很容易的得到SQL函数的列表和用法描述(Show SQL help Window 按钮) 可以查看SQL语句的执行情况:通过下方的AutoTrace窗口 ,看到SQL语句的实际执行结果和执行效率。 支持历史SQL(F8) :可以方便的查询以前执行过的SQL,不用反复重新输入。  可以执行匿名块,存储过程,从下方的窗口看到DBMS_OUTPUT的结果,如: 3. Stored Procedure Editor a) 打开存储过程编写器的几个途径: 单击总菜单栏上的第三个按钮:   点击Database - > Procedure Editor , 可以通过Schema browser来调用 b) 一些特点和优点: 1. 强大的自定义设置:从保留字的显示方式,到自动替换,到各种快捷键的定义等等,用得越熟越顺手。 2. 3. 自动用不同颜色显示SQL和PL/SQL关键字,语法清晰明了,可根据自己的习惯来具体定制各类关键字的具体显示方式。可以自定义存储过程得模板,在新建存储过程的时候,自动生成程序的框架可以方便的调用Schema Browser,把鼠标定位于某个对象上,F4,Schema Browser打开该对象的详细描述,帮助顺利快速开发程序。支持代码自动更正,如输入ndf,自动替换成NO_DATA_FOUND,输入the自动替换成the,类似的自动替换还可以自己修改和添加。 7. 方便的左边行号显示,单击左边行号就可以实现调试断点的增加/删除 8. 对各种快捷键的支持,不但包括常见的编辑操作,还可以有自己定义的PLSQL块的支持(自己定义快捷方式)。如可以定义CTRL+SHIFT+D:弹出所有PLSQL Block的类型,可以自己选择。 9. 可以在一个集成开发环境里面,一边编码,一边调试,不用多处切换 10. 方便的同时打开多个存储过程,通过页面快速切换 11. 快速编译存储过程,快速定位错误所在,自己选择是否同时编译依赖的存储过程 12. 内置对PL/Formatter,可以用PL/Formatter对存储过程进行格式化,并且可以提供存储过程的概要分析和修改建议 PL/Formatter可以对现有的存储过程进行高速的格式化,使所有的存储过程都符合同样的编写标准,这样既有利于提高程序的可读性,避免不同人写的模块的风格上的很差异。 PL/Formatter 还有助于提高程序的模块化,增强程序的结构清晰度,增强SQL的共用性。 PL/Formatter 还可以帮助完成PL/SQL和Oracle版本之间的管理。 13. 内置RevealNet Knowledge Base,单击鼠标右键就可以打开,快速得到技术上的支持,解决技术难题 PL/SQL: 包含整个开发过程中可能遇到问题的答案 Code Library:大量的严谨的PL/SQL代码例子和现成过程,完全源代码提供 各种错误处理模块可供参考,各类字符日期函数 包含1400多个主题 Admin: 解答DBA日常工作中80%的常见问题,覆盖2400多个主题 从网络到性能优化,从备份恢复到Error message,一应俱全 例子:遇到失效的存储过程怎么办? 4. 如何对存储过程进行Debug?  需要Toad单独的Debug Option(Standard Version 没有这个选项)  要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug,而且必须安装Oracle Probe API v2.0 或者更高的版本。 集成在Stored Precedure Editor里面,可以一边编写一边调试,大大提高开发效率  打开Procedure Editor后,Debug菜单激活,可以开始进行Debug工作。  允许对存储过程进行逐行调试、断点调试,也支持对触发器进行调试。 可以有断点支持,支持Watch变量,允许运行时改变变量的值  允许对多层调用的Debug支持 调试步骤具体举例: 1. 点击菜单栏的第三个按钮: ,打开Procedure Editor 2. 点击Procedure Editor的菜单栏的 按钮,调出需要调试的存储过程 3. 单击工具栏上的按钮 ,输入需要传入的参数,如果不需要传入参数,可以直接单击工具栏上的按钮: ,直接开始调试,如下图输入传入参数: 4. 单击菜单栏的按钮: ,可以单步跟踪,也可以定义一个断点,直接运行到断点在单步执行,在存储过程运行的过程中,当前语句会高亮度显示,并且把鼠标指针定位到变量上,Toad自动显示该变量的当前值。 5. 可以随时中止程序的执行,只要点Debug ->Halt Execution,或者菜单栏上的按钮 ,就可以中止程序的执行 6. 当碰到一个存储过程调用另外一个存储过程的时候,可以选择跳过(Step Over) ,这样就直接运行那个被调用的存储过程,返回调用结果,继续这个存储过程的调试,也可以选择Trace Into ,这样就打开被调用的存储过程,进一步深入调试那个被调用的子存储过程。如果需要保持Debug信息,在编译的时候应该选择Compile Dependencies with Debug Information,就是Procedure Editor工具栏最右边的那个按钮 。 7. 支持对变量实时追踪:使用Watch: 可以在运行前,或者运行过程中对某个变量进行实时跟踪:Add Watch,把鼠标定位到该变量上,然后点击Debug ->Add Watch At Cursor,该变量就会出现在Debug状态窗口上,而且实时反应该变量的当前值。如上图中的变量v_empname。可以运行时刻修改 8. 断点支持: 单击存储过程需要加断点的地方的行号,该行颜色变红,输入参数,单击执行按钮 ,可以直接运行到断点处,可以不必逐行追踪,更加高效率的进行调试。 Debug Option还支持条件断点,只有当满足条件的时候才会在那个地方停止,否则就好像不存在这个断点一样继续运行。  注意DBMS_OUTPUT.PUT_LINE的结果只有当程序执行完成以后才会出现,在程序执行过程中是没有结果的。 4. 如何用SQLab Xpert对存储过程进行调优? 我们知道,Oralce数据库的优化,最主要的步骤就在于SQL的优化。而在没有专门的工具(如Toad)的帮助下,进行SQL优化是一件非常困难和乏味的事情,并且需要对Oracle的深入理解和高超的Oracle调优技巧。使用Toad的SQLab Xpert Tuning模块,可以使我们普通开发人员也能够非常快速,精确的对SQL进行专家级的分析 在SQL Editor和Procedure Editor里面,选中需要调试的SQL语句(SQLab Xpert只能调试Select,Insert, Update,Delete语句),复制到SQL Editor里面,然后点击工具栏上的调优按钮 ,Toad会自动打开SQLab xpert 窗口,捕获当前的SQL语句,并且把它转化为符合explain plan格式的语句。 第一次打开Xpert的时候,Toad会提示你,需要安装一些Server端的表、视图和包等对象,可以把表存储到某个指定的表空间(如Tools)里面。可以简单的按照提示一步一步做就可以了。如果系统设定不允许Job的话(Job_queue_process=0),Toad提示有些部件不会现在安装,可以忽略。安装完成以后,可以选择让某些非DBA用户也可以使用Toad的SQLab Xpert调优功能。 安装完成以后,Toad会提示你一些关于优化目标方面的问题,你可以选择每次优化都可以重新设定,或者一次设定,以后一直使用这个设定。当然如果需要,还是可以更改的,在SQLab Option xpert的窗口的Administration和Preference下面重新设定。 例子: 下面这个SQL语句涉及到多表之间的关联,有一定的复杂性,我们可以借助Toad的SQLab Xpert Option来帮助分析: select a.name. b.name, c.emp_name from dep a, manager b,emp c where a.dep_no=c.DEP_NO and b.manag_id=c.manag_id and c.emp_no=3 我们把这个SQL复制到SQL Editor里面,单击上面的调优按钮,Toad打开SQLab Xpert Option窗口。 如下图: 从上面的图中我们可以方面的看到:在各种优化模式下,该SQL语句的执行计划分别是什么样的,Toad给出了每一种执行计划的具体每一个步骤,每个步骤的成本,该表涉及的相关的数据等,如果SQL存取的表还没有经过分析,Toad会以红色警告显示,并且很方便的帮助你对该表进行分析,收集统计数据,重建索引等,以有助于优化器作出最好的选择。可以把当前的分析结果保存到它的资料库里边,以备以后再次调用之需。 我们还可以求助与SQLab 的自动优化功能:点击Original SQL下面的auto tune按钮,Toad会对执行结果按照tkprof进行分析(当然,这需要你在initsid.ora里面设置好utl_file_dir,如果服务器是在Unix机器上的话,还需要通过FTP方式得到Trace文件,有一些小小的设置)。 自动优化非常高效的对所有执行计划进行实际运行比较,并且给出实际执行的时间的对比,如下图: 我们还可以让Toad给出实际的优化建议:点击Original SQL,单击下面的Advice按钮,Toad根据对SQL的分析和执行结果给出合理的建议: 如: 1. 把表和索引分别放到两个不同的表空间,因为我们在创建表,加上约束的时候没有指定USING INDEX子句,所以表和索引都建立在了用户的默认表空间上了。 2. 对表EMP,DEP和MANAGER进行分析,收集最新的统计数据,有利于CBO得到最优的执行计划 3. 在合适的列上创建索引:EMP的manag_id和dep_no。当表中存在大量的数据的时候,这样可以大大减少由于全表扫描带来的成本。 5. SQL Modeler: SQL Modeler可以帮助开发人员很容易的写出各种复杂的SQL语句,只需通过简单的拖动鼠标,就能够写出复杂的SQL语句来。 打开SQL Modeler的几个途径: i. 菜单栏 Database -> SQL Modeler ,打开窗口 ii. 单击工具栏第四个按钮 ,打开SQL Modeler窗口 窗口由三个主要部分组成:  表选择区域:最右边的那个部分,用来选择From子句中用到的表。拖动到左边的区域或者双击就选择了该表。  表模型区域:用来图形化的显示选择的表和表之间的关联关系。  生成SQL区域:这里显示用图形化方式创建的查询对应的SQL语句, 在SQL Modeler里面,还支持对生成的SQL进行Explain Plan,调试SQL的性能,运行SQL,看是否得到了希望的结果,保存生成的语句,或者把语句粘贴到SQL Editor里面。 有了SQL Modeler的帮助,即使是初级的程序员也能编写出复杂而又高效的SQL查询来。 比如下面的例子; 生成步骤: 1. 选出表emp, dep, manager 2. 用鼠标拖住emp的emp_name和emp_no, dep的name,manager的name 3. 双击criteria窗口的emp_no condition列,弹出窗口,输入查询条件,比如emp_no=3 4. 由于结果里面不希望emp_no出现,双击emp_no列的visible,设置为false 5. 这样就出来了需要的查询,现在可以运行查询得到结果,对查询SQL进行分析,或者在SQL Editor里面打开这个SQL,或者保存为SQL Model文件,或者再进一步处理,比如加排序, 汇总等。 DBA方面的功能: Toad在DBA日常管理方面的能力是非常强大的,可以帮助DBA安全快速地完成许多日常工作,还有Toad特有的一些小工具能完成一些普通方法很难做到的功能。下面大概讲述了各个常用模块的主要功能: a) Database Monitor 提供直观的Oracle数据库运行状况,包括下面这些详细信息: 可以看到逻辑IO,物理IO,各个状态的session数目,SGA的利用率,共享池的使用状况,各类事件的等待状况,以及各类事件随着时间的变化情况 b) Instance Monitor i. 可以用来检查本地tnsnames.ora文件里面定义的所有节点、Listener和数据库的运行状态和版本等相关信息。 ii. 可以远程启动、关闭数据库(如果设置了password验证方式) c) Unix Monitor: i. 可以监控Unix机器的运行状况比如详细的机器启动时间,CPU利用率,主要的进程以及这些进程占用的资源,主要的磁盘IO等。 d) Trace/Kill session i. 方便的查看所有的连接用户相关信息:比如终端,程序,连接时间等 ii. 对某个用户进行跟踪,查看用户执行的SQL语句,查看语句的执行计划, iii. 方便的查阅系统的Lock对象,有没有什么等待别的事务释放锁的情况,并能够轻易查出等待什么用户的什么事件结束,那个用户执行的是什么SQL。 iv. 查看回滚段的使用状态,什么用户,什么语句,使用的什么回滚段,多少读写量等 e) Oracle Parameter i. 可以方便的查看Oracle系统的参数:是否默认值,参数作用的简要描述,是否可以用alter session/alter system来动态改变,对于那些可以动态改变的参数,可以双击鼠标来进行修改 f) NLS_PARAMETER: i. 方便的查看session,instance,database一级的NLS参数值, ii. 可以动态修改session的NLS参数值 g) Extents i. 可以查看某个用户下的表和索引的详细的存储情况, ii. 发现那些占用大量空间的表和索引,可以考虑使用相应的对策,比如分区 iii. 发现那些即将达到max_extents的表和索引并可以及时纠正 iv. 发现那些索引和表处于同一个表空间的情况,并可以及时纠正。 h) Tablespace i. 直观的查看每个表空间的利用率,总空间,已使用空间,剩余可是用空间以及默认存储参数,和表空间是否需要整理等信息 ii. 查看每个表空间的状态,组成的数据文件, 以及每个数据文件的详细信息 iii. 查看每个表空间里面存在的对象和这些对象的详细存储特性 i) Tablespace Map: i. 图形化的显示表空间里面各个表/索引所占用的空间,各个segment的大小,segment是否连续等信息,非常直观 ii. j) Server Statistics: i. 可以非常直观的看到系统总体运行情况,迅速定位系统瓶颈所在 ii. 可以查看系统范围内各类等待事件的状况,查看每个连接会话的状况, k) Pinned Code: i. 我们知道,频繁执行的大的存储过程最好Pin起来,这样可以避免被Oracle在内存不足的情况下换出内存,避免动态加载,也避免flush shared pool的时候被清出内存。 ii. 根据每个模块的大小,执行次数,决定是否要把某个存储过程PIN起来。一个按钮就搞定了。 l) Control Files: 可以查看当前系统有哪几个控制文件,以及控制文件内部记录的详细信息。 (实际上就是V$CONTROLFILE, V$CONTROLFILE_RECORD_SECTION) m) Redo Log Manager: i. 可以方便的查看LOG的组,当前日志,每个组里面的成员名字,大小,方便的增加、删除log组,切换当前日志,对日志归档进行具体的控制。 ii. 可以在这个界面里完成几乎所有的对redo log的操作。 n) Repair chained rows: i. Chained rows影响系统性能,处于系统性能的考虑,需要把chained rows修复成普通的表的行。使用repaie chained rows,就可以比较容易的做到这一点。选择需要分析的表,然后分析一下,看有没有chained rows,如果有,点击repair,Toad就帮你把那些chained rows给修复了。 o) Identify Space Deficits 如果系统出现1659,1653错误,就是一个不合格的DBA。但是要即时预见这些错误,还是有一定的难度的。有了Toad的这个小工具之后,一点某个表空间,就知道这个表空间里面的剩余自由空间是否允许任何表能够扩展到下一个extent。并能够在发现问题之后,直接改正问题。 p) Estimate Table/Index Size i. 数据库的物理规划中,表/索引的存储子句的定义是非常重要的,影响系统。但是没有什么工具的话,要为表定义合理的存储子句也不容易。 ii. 在Toad里面,专门有工具帮助你合理定义表/索引的存储情况: 1. 自己可以定义将来表中需要存储的数据的数目 2. 多种估计方式: a) 根据对已有的数据的分析来定义表的大小(最精确,但是比较慢) b) 根据表定义数据类型来定义表的大小 c) 根据数据字典中以前分析过的数据来估计大小(需要近期分析过该表) q) Analyze All Tables i. 基于CBO的SQL需要CBO提供最优化的执行路径来提高程序的执行效率,但是假如对表进行大量的DML操作之后,不及时更新表的统计数据,这时候CBO就不能选择最为有效的执行路径,导致程序执行效率低。 ii. 手工分析表比较麻烦,一个一个做。 iii. 用Toad的Analyze Alltables这个工具,可以一次分析整个模式下面的所有表,有丰富的控制选项,包括是采用估计还是完全,是否同时分析索引,估计的话,采用多大的百分比等。 r) Rebuild Table i. 当表中的数据被反复大量的DML之后,而且PCTFREE和PCTUSED定义的不合理的情况下,表可能会变得非常破碎,占用大量的extent,索引也会相当破碎,导致效率相当低下。 ii. 传统的方式是通过exp/imp来解决这个问题,但是步骤实在比较麻烦,手工操作也有一定的危险性。 iii. 使用Rebuild Table工具,轻松搞定,而且可以手工修改一些通过EXP/IMP无法修改的参数,比如freelists ,freelists group, tablespace,initial等,还能够更改列的名字。 s) Relocate Index i. 我们知道,表和索引一般都需要分开存放到不同的表空间,这样比较便于管理,性能上也会有一定的提高,因为可以对表和索引同时存取。 ii. 但是实际上很多时候,由于这样那样的原因,常常忽略了索引单独存放这个基本概念,比如建立主键约束的时候没有加USING INDEX子句,后来disable/enable了主键约束/唯一性约束等,都会导致把索引直接存放到和表同一个表空间里面。 iii. 手工发现这些索引,再逐个移动非常麻烦,容易出错,在Toad里面,就很容易根据用户/表空间来发现那些不恰当存放的索引,可以批量移动这些索引,并且允许重新定义索引的存储子句。 t) Generate Schema Scripts: i. 可以用来生成整个用户下所有/部分对象的DDL语句。可以把结果保存为sql语句或者保存为TOAD的自定义格式。 ii. 可以用来复制表结构,(EXP/IMP有非常严重的缺陷,就是从一个大的数据库倒出的表结构,无法导入到一个小的数据库里面,因为里面包含了原来表的存储信息,即使选择rows=N,也要在导入数据库里面占用相当大的空间) u) Compare Schema: i. 在开发的时候,有时候同时在几个开发库上开发,但是最后两个库的结构不完全一样,很难比较 ii. 用TOAD的这个功能,可以对两个数据库的模式(用户)下面的所有对象(包括存储过程)进行比较,可以选择具体的比较内容。 iii. 可以通过直接打开两个到各自数据库的连接,或者根据Toad generate schame scripts生成的文件进行对比。 iv. 可以直接生成同步两个数据库的sql脚本,给出汇总的区别简要和详细报告等。

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧