MYSQL教程之ORA FAQ 功能调剂系列之――Oracle 9与...
人力成本上的节省,MySQL的用户Spacemonkey实验室的首席执行官MitchPirtle如此表示:“维护MySQL使得你不需要一个年薪15万美元的DBA。oracle|功能Whatisthedifferencebetweencpu_costinginOracle9andtheoldcostingofOracle8?
Oracle9与Oracle8中CPU_COSTING有甚么变更?
Authorsname:JonathanLewis
AuthorsEmail:Jonathan@jlcomp.demon.co.uk
Datewritten:15thDec2002
Oracleversion(s):9
Whatisthedifferencebetweencpu_costinginOracle9andthepreviouscostingmethodsofOracle7and8?
Oracle9与之前的Oracle7和8中CPU_COSTING有甚么变更?
Oracle9introducesamoresubtle,andthoroughcostingmechansim.ItsagreatimprovementontheOracle7/8version,butIthinkthechange-overisgoingtobeabitlikethechange-overfromrule-basedtocost-based.Ifyoudontunderstandhowitworksyoumayseesomestrangeevents.
Oracle9引进了一套更精密和周全的价值机制。这是对Oracle7/8版的严重改善,但我以为这一改动相似从基于划定规矩变化至基于价值。假如你不睬解它是怎样运作的,你会看到奇异的事务。
Youcanenablecpu_costingsimplybycollectingsystem_statisticsforanappropriateperiodoftimewiththedbms_statspackage.Thisrecordsinthetablesys.aux_stats$valuesfor:
你能够用dbms_stats包搜集一段得当的工夫内的体系统计,以此来激活CPU_COSTING。
assumedCPUspeedinMHz假定的CPU速率(MHz)
singleblockreadtimeinmilliseconds单块读工夫(ms)
multiblockreadtimeinmilliseconds多块读工夫(ms)
typicalachievedmultiblockread.一样平常到达的多块读
Thesefiguresareusedtoproducethreemaineffects.
这些数字可发生三个次要功效:
InsteadofOracleassumingthatsingleblockreadsarejustasexpensiveasmultiblockreads,Oracleknowstherelativespeed.Thisisroughlyequivalenttosettingtheparameteroptimizer_index_cost_adjaccordingtothedbfilexxxxreadaveragewaittimes-itwillencourageOracletouseindexedaccesspathsinsteadoftablescansbecauseOraclenowunderstandsthattablescansaremoreexpensivethanitusedtothink.
Oracle其实不假订单块读与多块读一样高贵,它晓得绝对速率。这大抵与依据数据库文件xxxx读取的均匀守候工夫设置参数optimizer_index_cost_adj不异——因为Oracle如今以为表扫描比本来了解更高贵,这将勉励Oracle利用索引会见路径而不是表扫描。
Secondly,Oraclewillusetheachievedaveragemultiblockreadcounttocalculatethenumberofreadrequestsrequiredtoscanatable,insteadofusinganadjustedvalueofdb_file_multiblock_read_count.Sincemanypeopleuseavalueofdb_file_multiblock_read_countthatisinappropriate,theresultofthisisthatOracleislikelytoincreasethecostof,andthereforedecreasetheprobabilityof,doingtablescans(andindexfastfullscans).Note-therecordedvalueisusedinthecalculations,butOracletriestousetheinit.oravaluewhenactuallyrunningatablescan.
其次,Oracle将利用“到达的”(achieved)均匀多块读取数来盘算扫描一张表所需的读哀求数,而不是利用一个db_file_multiblock_read_count的调剂值。因为良多人利用的db_file_multiblock_read_count值其实不符合,如许就形成Oracle大概增添表扫描(和索引疾速全扫描)的价值,并由此削减表扫描(和索引疾速全扫描)的大概性。注重——纪录的值是用于盘算的,认真正举行扫描时,Oracle会实验利用init.ora中的值。
Finally,Oracleknowsthat(e.g.)to_char(date_col)=charactervaluecostsalotmoreCPUthannumber_col=number_value,soitmaychangeitschoiceofindextousealessselectiveindexiftheconsequentialcostofusingthatindexisloweronCPUusage.(Also,Oraclewillre-arrangetheorderofnon-accesspredicatestominimiseCPUcosts,butthedifferenceinperformancefromthisisnotlikelytobevisibleinmostcases).
最初,Oracle晓得(比方)to_char(日期列)=字符值的CPU价值比数字列=数值要打,以是Oracle大概修正索引的选择,若利用一个有更小选择性的索引的一连读价值(consequentialcost)低于CPU的利用价值,则会选择这一索引。(别的,Oracle将从头布置非会见(non-access)的谓词按次来减小CPU价值,但在多半情形下不会发觉功能的差别。)
Overall-itsdefinitelyagoodthing.Inpractice,youmayseeamuchstrongerbiastowardsindexedaccesspathswhichmayimpactperformance.
总之——这一定是一个功德。现实上,你能够发明对索引会见路径更强的偏好,这将影响功能。
Furtherreading:Oracle9.2PerformanceTuningGuideandReference
进一步浏览:Oracle9.2功能调剂指南和参考
--------------------------------------------------------------------------------
本文翻译自http://www.jlcomp.demon.co.uk/faq/译者仅保存翻译版权
DBaaS向客户提供了许多与其他云服务相类似的优势:一个灵活的、可扩展的MySQL学习教程、按需服务的平台,它以自助服务和便捷管理为导向,可以对环境中的资源进行调配。 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。 having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。 个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。 如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。 始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。 如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。 连做梦都在想页面结构是怎么样的,绝非虚言
页:
[1]