本人很喜欢Oracle,在工作中也很喜欢总结关于Oracle数据库优化器的经验教训,下面就这个问题来详细说说吧。Oracle数据库优化器共有3种:a. RULE (基于规则)b. COST (基于成本)c. CHOOSE (选择性)
为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须定期更新统计信息,以保证数据库中的对象统计信息(object statistics)的准确性.
如果Oracle数据库优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关. 如果table已经被analyze过, 优化器模式将自动成为CBO , 反之,数据库将采用RULE形式的优化器。 访问Table的方式
Oracle 采用两种访问表中记录的方式:a. 全表扫描:全表扫描就是顺序地访问表中每条记录. Oracle采用一次读入多个数 据块(database block)的方式优化全表扫描。b. 索引扫描:你可以采用基于ROWID的访问方式情况,提高访问表的效率, ROWID包含了表中记录的物理位置信息.Oracle采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.
其中Oracle对索引又有两种访问模式.
a)索引唯一扫描 ( INDEX UNIQUE SCAN)大多数情况下, 优化器通过WHERE子句访问INDEX.
表LOADING有两个索引 : 建立在LOADING列上的唯一性索引LOADING_PK和建立在MANAGER列上的非唯一性索引IDX_MANAGER.
在内部 , 上述SQL将被分成两步执行, 首先 , LOADING_PK 索引将通过索引唯一扫描的方式被访问 , 获得相对应的ROWID, 通过ROWID访问表的方式执行下一步检索.如果被检索返回的列包括在INDEX列中,Oracle将不执行第二步的处理(通过ROWID访问表). 因为检索数据保存在索引中, 单单访问索引就可以完全满足查询结果.下面SQL只需要INDEX UNIQUE SCAN 操作.
b)索引范围查询(INDEX RANGE SCAN)适用于两种情况:1. 基于一个范围的检索2. 基于非唯一性索引的检索
WHERE子句条件包括一系列值, Oracle将通过索引范围查询的方式查询LODGING_PK . 由于索引范围查询将返回一组值, 它的效率就要比索引唯一扫描低一些. 这个SQL的执行分两步, IDX_MANAGER的索引范围查询(得到所有符合条件记录的ROWID) 和下一步同过ROWID访问表得到LOADING列的值. 由于IDX_MANAGER是一个非唯一性的索引,数据库不能对它执行索引唯一扫描.由于SQL返回LOADING列,而它并不存在于IDX_MANAGER索引中, 所以在索引范围查询后会执行一个通过ROWID访问表的操作.WHERE子句中, 如果索引列所对应的值的第一个字符由通配符(WILDCARD)开始, 索引将不被采用.在这种情况下,Oracle将使用全表扫描.以上介绍Oracle数据库优化器。
【编辑推荐】
rar4.0解压软件下载 rar解压缩软件下载
rar4.0解压软件下载 rar解压缩软件下载_extended=true> WinRAR是一个文件压缩管理共享软件,由Eugene Roshal(所以RAR的全名是:Roshal ARchive)开发。 首个公开版本RAR 1.3发布于1993年。 Pocket RAR是为Pocket PC平台发布的免费软件。 它是仅有的几个可以读写RAR文件的软件之一,因为它保留版权。 Eugene Roshal,1972年3月10日生于俄罗斯。 毕业于俄罗斯车里雅宾斯克工业大学(Chelyabinsk Technical University),也是FAR文件管理器的作者。 他开发程序压缩/解压RAR文件,最初用于DOS,后来移植到其它平台。 主要的windows版本编码器,称为WinRAR,以共享软件的形式发行。 不过Roshal公开了解码器源码,UnRAR解码器许可证允许有条件自由发布与修改(条件:不许发布编译RAR兼容编码器)。 而RAR编码器一直是有专利的。 最近的开发者是Alexander Roshal。 虽然其解码器有专利,编译好的解压程序仍然存在于若干平台,例如开源的7-Zip。 尽管业界普遍混乱,似乎没有纯开源模块能解压版本超过2.0的RAR文件 WinRAR 内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO、Z 和 7Z 等多种类型的档案文件、镜像文件和 TAR 组合型文件;具有历史记录和收藏夹功能;新的压缩和加密算法,压缩率进一步提高,而资源占用相对较少,并可针对不同的需要保存不同的压缩配置;固定压缩和多卷自释放压缩以及针对文本类、多媒体类和 PE 类文件的优化算法是大多数压缩工具所不具备的;使用非常简单方便,配置选项也不多,仅在资源管理器中就可以完成你想做的工作;对于 ZIP 和 RAR 的自释放档案文件,点击属性就可以轻易知道此文件的压缩属性,如果有注释,还能在属性中查看其内容;对于 RAR 格式(含自释放)档案文件提供了独有的恢复记录和恢复卷功能,使数据安全得到更充分的保障。 WinRAR 是共享软件。 任何人都可以在40天的测试期内使用它。 如果你希望在测试过期之后继续使用 WinRAR,你必须注册。 它没有其它附加的许可费用。 除了与创建和发布 RAR压缩文件或自解压格式压缩文件相关的注册成本之外,没有其它附加许可费用。 合法的注册用户可以使用他们的 RAR副本制作发布压缩文件而无须任何附加的 RAR 版税。 如果你注册了 WinRAR,可以免费升级所有的最新版本。 目前最新的 WinRAR 版本为 WinRAR V3.93.0.0。 这个要收费的。 运行环境:Windows 9x 及以上版本。 编辑本段软件特点* WinRAR 采用独创的压缩算法。 这使得该软件比其他同类 PC 压缩工具拥有更高的压缩率,尤其是可执行文件、对象链接库、大型文本文件等。 RAR 在 DOS 时代就一直具备这种优势,经过多次试验证明,WinRAR 的 RAR 格式一般要比 WinZIP 的 ZIP 格式高出 10%~30% 的压缩率,尤其是它还提供了可选择的、针对多媒体数据的压缩算法。 * WinRAR 针对多媒体数据,提供了经过高度优化后的可选压缩算法。 WinRAR 对 WAV、BMP 声音及图像文件可以用独特的多媒体压缩算法大大提高压缩率,虽然我们可以将 WAV、BMP 文件转为 MP3、JPG 等格式节省存储空间,但不要忘记 WinRAR 的压缩可是标准的无损压缩。 * WinRAR 支持的文件及压缩包大小达到 9,223,372,036,854,775,807 字节,约合 9000 PB 。 事实上,对于压缩包而言,文件数量是没有限制的。 * WinRAR 完全支持 RAR 及 ZIP 压缩包,并且可以解压缩 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO、Z、7Z 格式的压缩包。 虽然 WinZIP 也能支持 ARJ、LHA 等格式,但却需要外挂对应软件的 DOS 版本,实在是功能有限。 但 WinRAR就不同了,不但能解压多数压缩格式,且不需外挂程序支持就可直接建立 ZIP 格式的压缩文件,所以我们不必担心离开了 WinZIP 如何处理ZIP 格式的问题。 * WinRAR 支持 NTFS 文件安全及数据流。 * WinRAR 提供了 Windows 经典互交界面及命令行界面。 让我们通过开始选单的程序组启动 WinRAR,在其主界面中选择“选项”选单下的“设置”打开设置窗口,分为常规、压缩、路径、文件列表、查看器、综合六大类,非常丰富,通过修改它们,可以更好地使用 WinRAR。
rar4.0解压软件下载 rar解压缩软件下载
关机突然变得很慢是怎么回事?
一、系统本身的原因 计算机某些硬件设备的驱动程序安装不完全或存在问题。 解决问题的办法是查看计算机设备管理器,看看是否有存在驱动问题的硬件设备,如果有请重新安装相关驱动。 二、后台运行软件原因 主要原因是某些后台运行软件在关机的时候正处于运行状态,系统结束这些程序进程需要时间,比如某些防病毒软件。 此外,还有可能是后台在结束某个程序时,出现错误,是系统进程陷入死循环,而系统默认的强行结束死循环的时间较长也会导致系统关机时间过长。 解决的办法是,关机时打开任务管理器,查看有什么非系统的程序在运行,强行结束其进程。 你还可以使用超级兔子等辅助软件,加快系统的关机速度。 三、配置文件文件的原因 平时,我们以自己的用户名登录至Windows后,会运行许多程序来完成各种工作。 当选择退出当前登录(比如:关机、重启或注销)后,正常的情况应该是Windows释放所有开启程序原来所占用的资源(例如内存空间等)。 如果在用户注销时这一步的操作仍然没有完成,用户配置文件便无法被卸载,Windows便会一直停留在注销用户这一步操作上。 导致这种现象的原因很多,有可能是操作系统本身的问题,也有可能是第三方软件(例如打印机驱动程序、病毒扫描程序等)的编码不正确引起的。 但仅仅通过系统提供的有关信息,根本无法找出真正的“凶手”,自然也就没办法去“对症下药”来解决问题了。 paging文件清空 Windows XP操作系统在关机的时候需要清空paging文件()里的临时数据,因为那里可能有敏感信息,这是正确的。 如果关机时不让Windows XP系统执行这项步骤,在注册表里的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management,将learPageFileAtShutdown的值设为0。 这样关机会快不少。 另外,看看是否有些不必要的service,Windows XP每次关机前都要让他们先结束(在一定时间内),减少不必要的service,也能减少Windows关机的时间。 四、Vidia显卡 一些用户在安装了Windows XP后察觉到电脑关机会变得很慢。 如果你安装Vidia显卡,就得找找它的原因了。 很多时候都是由于名为“NVIDIA Driver Helper Service的服务会导致这一现象的出现。 该服务我们一般是不需要的,而且它会占用不少系统资源。 关闭的方法是打开“控制面板→管理工具→服务”,在弹出的窗口中找到并右击NVIDIA Driver Helper Service项,选择“属性”,在已启动的下拉列表框中,选择“已禁用”。 五、调用dll太多 dll介绍 动态链接库就是整个操作系统的基础,那么这有什么作用呢?在dos时代,程序员是通过编写程序来达到预期的目的的,每实现一个目的就需要编写一个程序,这样下去,简单的还好,要是复杂的程序话,那乞不是既浪费时间,又浪费青春。 于是聪明的程序员们想出了一个办法,把的实现一定功能的程序模块存放在一个文件当中,以API函数形式存放在dll当中,当编写程序的时候,需要用到这个功能,那么直接从这个文件当中调用就可以了,于是就出现了dll——动态连接库。 dll作用 一 一些模块压入dll文件之后,在要运行程序的时候只需要调用动态链接库就可以了,而并不需要把dll加载到内存中,节省了大量的内存空间,可以方便运行其他的程序 二 很大的游戏中,通常需要调用许许多多的动态要实现这样一个效果,需要许多程序员编写不同的dll来互相协助,那么这些dll可以用vc++,vb,Delphi,asm等等来完成,只要每个程序员负责编写一个功能,这样只要调用在一起就方便多了,节省了大量的人力,物力,财力链接库来给玩家一个美观震撼的效果 三 启动的时候,错误对话框中提示DLL文件丢失 这是因为在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。 所以当你卸载软件时,就有可能误删共享的DLL文件。 一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。 如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了 不加载DLL文件 浏览器在使用之后往往会有部分DLL文件在内存中缓存好长一段时间,相当大一部分内存会被不用的DLL文件点用。 为了防止这种事情发生,找到注册表如下位置: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorer 接下来建立一个名为AlwaysUnloadDLL,值为1的双字节值。 如果想要去除这项优化,只需把该键值设为0(也可以干脆把键删掉)。 注意:该项优化要在Windows重新启动后才生效。
51单片机变量 51的单片机变量是怎么个定义法。全局变量,局部变量都放在什么存储器里的

不能这样定义,这样定义是错的。 你这个是赋值,不是定义在0x22单元格里。 unsigned char bdata SS _at_ 0x22;只有在Keil编译环境下才可以这样使用。 还有,这种语法不适合用C语言,我说的是不适合,不是不能用。 C语言里面的指针就是针对这个的,不建议使用 _at_ 进行变量在RAM中固定,这样对程序编译优化时,带来很多麻烦,也得不到充分的优化。 其实用C语言指针的方法是可行的。 bdata区虽然有自己独立的位地址,但你用的是char型 ,是一个字节的,所以你说的0x22只是bdata区的字节地址,而不是位地址,那麽用C语言的方式实现 就是这样:unsigned char *p;p=0x22; *p=50;*p 表示指向0x22所在的单元格,就是将50赋值到0x22地址所指向的单元格里。 再从另一个角度讲,如果你没于传参或改变实参的情况下,不建议使用这类,即使有,也不是很建议。 因为单片机高手是不会用_at_这类关键字进行变量定位的。 有什么疑问可以一起探讨。 希望我的回答对你有帮助,谢谢。
发表评论