如何提高oracle的查询速度
一些简单的步骤改善了Oracle性能 - 我优化数据库的三个技巧。数据库优化的讨论可以说是永恒的话题。
高级Oracle优化人员通常会要求那些提出绩效问题的人为数据库,POST数据库配置等创建状态软件包。
有些人认为应使用最慢的声明声明来优化。
但是现实情况是,提出问题的人可能根本不了解执行计划,放手。
我认为,数据库优化应首先从一个较大的角度考虑:网络,服务器机器配置,操作系统配置,Oracle Server -configuration,数据结构组织以及特定的调整。
实际上,网络,硬件等通常不决定替换,并且应用程序通常无法更改。
并考虑优化缓慢的语句。
在优化我的用户系统的过程中,我总结了一些基本,简单和用户友好的方法来优化数据库,这是我的三个技巧,哈哈。
但是,请注意,这些可能不经常使用,有些甚至可能会产生副作用,但是它们通常对OLTP系统和基于成本的数据库有效。
(注意:附件是由Burleson编写的脚本,用于报告数据库性能和其他信息(本文中使用的其他信息)1 设置适当的SGA投诉,通常是服务器机器产品很好,但Oracle却很慢。
它可能是由不合理的内存分配引起的。
(1 )假设内存具有5 1 2 m,这通常是一个小应用程序。
建议Oracle的SGA约为2 4 0m,其中:共享池(shared_pool_size)可以设置为6 0m至8 0m,这是根据用户数量,查询等的实际数量确定的。
数据阻止程序可以大致分配1 2 0m -1 5 0m。
可以使用db_cache_size直接分配9 i下的数据缓冲区。
(2 )只要是1 G内存,Oracle的SGA可以考虑分配5 00米:共享池分配了1 00至1 5 0m,并且数据羽毛分配了3 00至4 00米。
(3 )2 G内存,SGA可以考虑分配1 .2 G,将池划分3 00至5 00米,其余部分将给予计算机块缓冲区。
(4 )在2 G:3 00至5 00 m以上的内存:首先,您必须为操作系统和其他应用程序留下足够的内存。
大约3 2 位操作系统可以突破此限制。
二。
分析表和索引,选择更改优化模式Oracle的标准优化模式。
这通常会导致磁盘I/O太多,这会导致问题缓慢。
如果未使用执行计划的稳定性,则应分析表和索引,这可以直接提高查询速度。
分析表命令可用于使用分析表分析索引。
对于少于1 00万的表,请考虑分析整个表格。
您可以通过使用DBA_Table的最新_分析列进行分析或分析表,并可以通过dba_indexes的最新_分析列检查索引。
以下是说明分析之前和之后的速度比较的示例。
(Table Case_ga_ajzlz有大约3 5 0,000个数据,带有主键)首先,打开SQLPLUS中的自动执行计划功能。
(您首次需要执行\ rdbms \ admin \ underweo.sql来创建plan_table表)sql> setautotraceon sql> setimingon> setimingon通过setautotraceon显示了该语句的执行计划,并通过SETETIMIMINGON查看语句的术语。
sql> selectCount(*)frace_ga_ajzlz; ………………请注意上面分析中的tablecscess(完整),这意味着该语句执行整个表格。
查询需要2 1 .3 8 秒。
该表尚未分析。
让我们分析下表:SQL> Analyzetablecase_ga_ajzlzlzcomputstatistics; 承诺的时间:00:05 :3 5 7 .6 3 然后再次检查:sql> selectCount(*)frace_ga_ajzlz; ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- --------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------- ------- --------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------ ------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------- ---------)2 1 index(fastfullscan)'pk_ajzlz'(unik)(成本= 3 5 1 card = 3 4 6 3 5 1 )…………………………………………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………… ……………………………………..这要归功于索引(固定扫描)。
通过分析表,查询使用PK_AJZLZ索引,并且磁盘I/O大大降低,速度大大提高! 以下实际语句可用于生成和分析用户的所有表和索引。
。
'| ; 'fromdba_indexeshewoyer ='gaxzusr'; 如果您需要按百分比分析表,则可以更改脚本。
通过上述步骤,我们已经完成了对表和索引的分析,并可以以速度测试改进。
建议定期运行上述语句,尤其是在大量更新数据的情况下。
当然,您还可以通过dbms_stats分析表和索引,这更实用。
但是我仍然习惯上述方法,因为将直接询问成功或失败。
此外,我们可以更改优化模式。
Optimizer_Mode值可以是规则,选择,first_rows和all_rows。
对于OLTP系统,可以将其更改为first_rows,以要求查询尽快返回结果。
这样,即使没有分析,查询性能也可以一般都可以提高。
但是,分析表和索引以找到最合适的执行计划。
三。
设置cursor_sharing = power的方法仅在8 i中可用,而oracle8 05 不支持它。
通过设置此参数,您可以强制共享计划,以分享语句仅使用不同的文本。
可以共享以下两个陈述,例如:SQL>选择*PomytableWherename ='Tom'SQL>选择*PomytableWherename ='Turner'此方法可以减少低缓冲液利用率的问题,并避免再次解释。
通过此功能,可以在很大程度上解决由硬分析引起的性能恶化。
就个人而言,您可以根据系统的实际情况来决定是否将参数更改为强制。
默认情况下,此参数是准确的。
但是,请注意,在更改之前,您需要修补Oracle,否则Oracle将占用1 00%的CPU,并且在更改后不能使用。
对于Oracle9 i,可以将其设置为类似,它结合了权力的好处和精确的。
但是,请谨慎使用此功能,因为此参数也会产生巨大的负面影响! 四个。
保留池数据裤子的经常使用的小表和索引的数据阅读速度比硬盘驱动器要快得多。
如果资源丰富,当然可以在完整桌子中提供经常使用的小型,经常被扫描的表格到指甲内存。
它可以简单地由Altartablenamecache实现,在Oracle8 i之后,可以使用祭坛的tableStorage(Buffer_PoolKeep)。
通常,您可以考虑将表放置在Kee Kee池中的2 00个数据块中,这当然取决于诸如内存大小之类的因素。
对于如何找到这些表或索引符合条件的表格,您可以使用access.sql和access_report.sql。
这两个脚本是由著名的甲骨文专家Burleson撰写的。
对于索引,您可以使用altarindexindexnamenorage(buffer_pooleep)在池中钉。
它需要一些准备工作才能将桌子放入保留池中。
对于Oracle9 i,必须设置db_keep_cache_size,并且必须设置8 i buffer_pool_keep。
在8 i中,还必须更改db_block_lru_latches。
此参数应小于2 * 3 * CPU,但是设置DB_KEEP_CACHE_BUFFER必须大于1 buffer_pool_keep是从db_block_buffers分配的,因此它应该小于db_block_buffers。
将这些参数放置后,您可以永久将常用对象钉在内存中。
五。
设置用于多台式JOIN查询的Optimizer_Max_permutations,使用基于成本的优化(CBO),Oracle将计算许多操作解决方案,并从中选择最佳解决方案。
此参数应设置Oracle以选择最佳解决方案。
如果设置太大,则计算最佳解决方案的过程将相对较长。
Oracle8 05 和8 i是标准8 0000,建议将8 更改为2 000。
对于9 i,标准为2 000。
6 调整排序参数(1 )black_area_size:用于排序的标准black_area_大小为3 2 k,通常看起来很小。
此参数不能设置太大,因为每个连接必须分配相同的排序内存。
(2 )Black_multiblock_read_count:增加此参数可以提高临时桌布的性能。
请注意,此参数的最大值与平台有关。
c++读oracle数据库很慢
C ++中Oracle数据库缓慢读取的原因和解决方案可能是表结构问题。2 远程连接到数据库时,网络传输时间会导致阅读过程缓慢。
2 数据库设计问题:数据库表设计,索引等将影响数据查询的速度。
不合理表或缺乏有效索引的设计可能导致查询效率低下。
3 查询数据的改进不足:SQL的写入数据直接影响数据库处理速度。
复杂的查询或不稳定的查询可能会导致阅读缓慢。
4 数据库服务器性能问题:数据库服务器性能是影响阅读速度的重要因素。
CPU的加载,内存的使用,输入/输出的速度等将影响数据处理的速度。
3 解决方案:1 改进网络连接:确保服务器之间的网络连接稳定且足够快,您可以考虑使用高速网络连接技术。
2 .改进数据库设计:改进数据库表的结构,合理地使用索引,避免擦拭完整表,并提高查询的效率。
3 .改进查询短语:改进SQL查询,简化查询的逻辑,避免使用复杂的子陷阱,遵守同步时间表以及合理使用现有索引。
4 .改善服务器性能:根据实际需求,例如增加内存,更快的存储设备等,将设备组成升级到数据库服务器。
4 建议操作:出于上述可能的原因,您可以一一检查并采取相应的措施。
首先验证网络连接,然后查看数据库设计数据和查询数据,最后考虑服务器性能问题。
根据提高Oracle数据库的C ++阅读速度的特定位置逐渐改进。
如何分析为什么oracle速度慢
查询速度缓慢的查询速度的缓慢查询速度摘要有很多原因,常见类型是: 1 未使用索引或索引(这是慢速查询的最常见问题,即缺陷编程)。数据查询的量太大(可以使用多个查询,其他方法可以减少数据量)7 ,锁定或僵局(这也是慢速查询的最常见问题,因此它是编程的缺陷)。
8 ,sp_lock,sp_who,活跃用户,原因是读写竞争资源。
过去必须将其他I/O设备的索引放在RAID0中。
O. 2 ,垂直和水平段表,表大小(SP_SPACEUSE)3 ,根据查询条件设置索引,优化索引,优化访问方法并限制结果中的数据量,以扩展服务器的内存,您。
可以使用有限数量的值来配置4 -8 G内存。
但是,可以在可以自动评估更多资源(例如并行处理)的工作和处理器中执行服务器CPU的数量。
例如,如果您同时运行查询和连接句子的对齐方式,则根据系统的负载条件确定最佳并行级别。
并行处理,简单地使用它。
如果使用诸如“%a”之类的索引时不使用诸如“%a”之类的索引,如果查询与现场值的总长度成比例消耗,则不能用于char类型,而是查询被消耗。
瓦尔奇。
对于该领域的长期价值,创建了整个文本索引,并且OLTP和OLAP分开。
Union是一个单独的服务器组,但它可以一起工作以共享通过分区数据形成数据库服务器联合的机制。
有关网站上的信息,请参阅Federation数据库服务器设计(在实现分区视图之前,请参见SQL Help File。
在成员服务器中定义了分布式分区视图,并且每个是以这种方式在每个成员服务器上运行的查询。
复制但实际上,数据表和分布式分区仅查看数据和日志DBCSHRINKDB和DBCSHRINKFILE自动降低服务器的性能,该调查表2 ,该语句已提交给DBMS查询优化器3 ,以及查询规范由预制模块产生,并在适当的时间提交到系统,然后最后执行结果。
返回给用户。
字节和8 页是根据b-tree存储的面板。
提交和回滚:回滚:提交:无需提交当前对象SQL。
要写信,写信给外面: 避免桌子扫描。
当返回不必要的数据时,服务器的I/O资源会增加网络上的负担,如果表格很大,请锁定桌子并禁止其他加入访问。
桌子得到了严重的结果。
SQL评论不会影响执行。
在客户端,临时表,表变量,子查询,示例上循环。
FetchNext是允许的提取工作,根据SQL2 000,可以随机提取滚动性。
在第二个用户打开光标和更新行的情况下,更新特定线路的小机会没有锁来使用此选项来控制该行。
如果用户试图修改行,则可以看到该行的当前值,如果最终更改了该行,另一个人已更新了行。
发生错误。
如果值相同,则服务器选择此并发选项。
服务器可以确定该行是否已在SQLServer中进行了更改。
该性能由时间戳记数据类型提供:时间邮票值:@@ DBTS Time Stamp用一行更改。
热量,时间邮票可以比较行为中存储的时间邮票值,而在阅读数据库行时使用服务器光标时,可以比较该行的当前时间邮票值。
当提取事务并在卸下锁定时删除交易时,将在交易中打开光标。
因此,当提取下一行时,每当用户需要完整的悲观并发控制时,光标都不会从获取更新或独家锁中做出另一个任务。
但是行。
由于共享锁没有阻塞,因此第二个任务不需要滚动锁,具体取决于选择中指定的锁定提示符。
光标定义语句,这些光标并发选项可以产生滚动锁,然后关闭下一个提取物或光标。
提交语句不会关闭打开的光标,并且要维护滚动锁的类型,直到光标选项和光标选择语句的锁定提示为止。
锁定提示读取最佳锁定解锁更新更新更新更新更新更新更新更新更新更新更新Unlocked Unlock解锁解锁指定提示。
读取光标提示中指定的表。
使用Profiler找到SQL所需的时间。
与Unionll的不同之处在于,它不使用与查询相同的查询。
在查询期间不要返回不需要的行。
sp_configuregureguregureguregureguregudurost_limit用于限制查询召集的资源。
在查询之前,SetLockTime设置了锁定时间。
SelectTop1 00 /1 0%用于使用用户返回的行数来限制SQL2 000。
“ isnull”,“” <=“”!=“,”!>“,“不是”,“ notexists”,“ notike”,“ notike”和“ like'%5 00”,请勿在所有表扫描中添加函数,例如,在加入的情况下,即使扫描左联盟,索引也是扫描的,并且索引以前没有工作,现在可以处理2 000年的优化。
对于使用QueryAnalyzer的SQL查询,当查询使用SQL优化时,查询不通过索引,请使用“ display声明”。
二进制值使用存储在图像列中的过程,并且未包含在插入中(因为将Java转换为字符串),并且服务器在接收到字符后接收角色。
可以通过查询优化找到更快的范围。
信息。
否则,将添加不必要的开销并查询干扰。
索引3 4 您可以在需要时进行清晰的工作。
JCNAD002 5 4 04 ','JCNAD002 5 4 5 8 5 ', ' JCNAD002 5 4 5 4 5 8 5 ',' JCNAD002 5 8 5 2 4 ',' JCNAD003 3 2 1 3 3 'JCNAD002 6 8 6 1 8 ', 'JCNAD002 7 9 1 9 6 ', 'JCNAD002 6 8 6 1 3 ') OrderBypostdatedSC3 5 is the most frequent value on the value list and the least appears on the back. Sindexes, etc.) and other connections If you在创建临时表而不是selectInto.droptable_lxhbegintranselect时,请阻止存储,使用显示语句。
跨个体可以锁定系统表。
您可以看到系统表已锁定(临时表或系统表),用于要使用的临时表,使用实际的表或临时表变量。
Groupby用于分组统计线,这样,该组具有许多目的,并使用了更多的数据线。
取而代之的是,根据SQL2 000 b,结果集和表类变量比临时表更好。
它在文本,NTEXT,图像数据类型C中不可用。
以下选项是ansi_nulls = on,ansi_padding = on,… 您必须配置.4 1 使用存储过程存储的过程由执行计划组成,并且先前将存储的表(临时表)放置在tempdb中,而SQLServer不支持复杂的数学计算,并且不应支持此功能的复杂数学计算。
太大的返回效果,4 2 ,在句子中不使用相同的功能,废物资源,结果变量,并更快地称呼它们,selectCount(*)是低效率的方法。
同时它存在。
注意差异。
可以删除SelectCount(FieldOfnull)的返回值=最大连接编号 + 5 ,否则使用SQLServer线程池以激活最大数字 + 5 严重损害服务器的性能。
)表A如果未提前设计锁定序列,请检测僵局。
如果此值不时增加,当内存很高时,内存可能是瓶颈。
延迟的程序调用(DPC)以低优先级标准间隔执行。
3 ,%权限表示在许可模式百分比中使用的非IDLE处理器时间(个人信息模式可以操作操作系统组件和硬件驱动程序。
用户模式是水子系统中设计的有限处理模式。
索引的增加并使用简单的表加入,一个大表和其他方法,使用大表格和其他方法,物理磁盘:curretndiskqueuel长度对抗该值不得超过1 .5 到2 次,以提高性能必须在SQLServer之后考虑,因此在一段时间内运行后,您无法反映系统的当前值。
B. referensedandAndArid ='Jcnprh3 9 6 8 1 '(a = b ='number')selecta.personmemicerid,*fromchineseremea sedanda.personmemberid ='jcnprh3 9 6 8 1 'dandandb.referferid =' ')secta.personmemberid,* Chinseresumea编号')
oracle中数据太多,SQL语句为查询视图,怎样提高查询速度?
在ORPRESS数据库中,数据量是攻击视图的巨大视图。在这种情况下,各种策略可以收到请求率。
首先,将表数据考虑到临时表。
此方法可以减少所需的信息量,即在此方法中扫描所需的信息量。
有一个问卷调查表,临时表可以创建临时表。
其次,促进SQL描述也是提高请求请求的有效方法。
等等,等等,等等。
例如,索引可能会减少使用索引的使用和查询速度的使用。
如果问题仅是一种观点,则可以使用分析计划来更好地了解问卷。
感染较少的房间可以在计划的效率较低的部分中被卑微而被监禁。
此外,添加适当的索引也可以提高问题的效率。
搜索信息可以加速过程,您可以改善数据库 / O操作减少,从而降低查询速度。
使用SQL描述,使用SQL描述以及增加的保险计划和上瘾的观点可以有效改进。
这些方法不仅提高了要问的有效性,而且不仅提高了询问的有效性,还提高了提高要求的有效性,还可以减少系统资源并改善一般绩效。