版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、彼得罗萨尼大学经济学年鉴,2010,X(4),201-214指导MYSQL优化查询的策略摘要:本文探讨了MySQL勺索引能力。它首先回顾索引的工作原理以及结构。接下来,它会回顾每个主要MySQ散据存储引擎特有的索引功能。然后,本文将检查各种各样的索引可能有助于加快应用程序的情况。除了检查索引如何帮助。在本文中,我们提供索引使用类型:B-树,散列和位图,以优化查询,尽管MySQL已经实现和索引宽敞的R树。索引类型对应于用于实现索引的特定种类的内部算法和数据结构。在MySQL中,对特定索引类型的支持取决于存储引擎。关键词:优化数据库结构,数据库性能,优化查询,索引,B树索引,哈希索引,位图索引,存
2、储引擎关于MYSQL据库索引的考虑数据库调优是通过最小化响应时间(完成语句所需的时间)和最大化数据库可以每秒同时处理的语句数量来提高数据库性能的过程(Schwarty等,2004)调整是由DBA,数据库设计人员,应用程疗:设计人员和数据库用片共同执行的团队练习,对数据库的理解。调整两者都取决于和影响如下:表格设计,关系,索引设计和其他组件;查询设计,数据读取大小和检索和执行顺序;读取和插入/更新/删除操作的性质和频率;数据库服务器和客户端之间的工作分区;将表,索引或部分加载到内存中的时序,事件和效果;语句的并发特性。数据库性能成为存在大量数据,复杂查询,处理大量数据的查询,长时间运行查询,锁定
3、每个其他数据的查询,大量同时事务,大量用户和有限带宽的重要问题。一般来说,大多数数据库系统都是为了表现良好而设计的。最初的设计阶段可以实现最佳的改进,但是有时候数据库的特性还没有足够的信息。后来,在生产用途中改变大型数据库可能是昂贵的,实际的考虑对可以改变的内容给予约束。调整可以使查询之间的差异需要毫秒或儿分钟甚至更多的执行。数据库系统是管理信息系统的核心,基于数据库的在线交易处理(OLTP)和在线分析处理(OLAP)是银行,商业,政府等部门最重要的计算机应用(Viliams&Lane,2007)。从大多数系统的应用来看,查询操作在各种数据库操作中占用的最大,而查询操作是基于SELECT吾句的
4、SQL语句中的一个语句成本最大的。例如,如果数据M在一定程度上累积,如银行账号到数据库表中的信息就会累积数白万甚至数千万条记录,全表扫描通常需要儿十分钟的时间,棋至儿个小时。如果比全表扫描查询策略更好,往往可以减少到儿分钟来进行查询,我们可以看到查询优化技术的重要性。很多程序员认为查询优化是一个DBMS(数据库管理系统)的任务,用程序员编写的与SQL语句没有什么关系,这是错误的。良好的查询计划性能往往可以提高次数。查询讣划是山用片提交的SQL语句集合,查询计划经过优化处理后的语句收集生成。DBM旌询计划处理过程如下:在查询后的词法,语法检查中,该语句将提交给DBMS勺查询优化器,优化器经过代数
5、优化和优化访问路径后跟预编译模块处理语句并生成查询,规划,然后在正确的时间对系统实现,最终的结果将返回给用户。在实际的数据库产品(如Oracle,Sybase等)都是基于成本优化方法的所有版本,这种从系统中优化的字典基于信息表来估计不同成本的规划查询,以及然后选择一个更好的规划(Opell,2006)o虽然在数据库查询优化方面已经做得更好,但是山用尸根据SQL语句提交给系统的优化,很难想象出原来的查询计划在系统优化后变得有效,所以写说明用户的优缺点至关重要。系统我们没有讨论查询优化,着重于以下计划来改进用户查询解决方案像美丽一样,最有吸引力的索引策略非常注重持之以恒。对于主要,连接和过滤键(一
6、个通用的索引美容标准,也许?),索引是适用的,应用程序A可能是错误的方法。应用程序A可能是一个事务系统,可以支持与数据库的成千上万的快速交互,其数据修改必须以毫秒为单位进行。应用程序B可能是决策支持系统,用片可以在其中创建大量服务器查询。这两个应用程序需要非常不同的索引策略。MySQL勺优化器总是尝试使用手头的信息来开发最有效的查询计划。然而,要求随时间而变化;用户和应用程序可以随时引入不可预测的请求。这些请求可能包括新的事务,报告,集成等。索引是您加快查询最重要的工具。您也可以使用其他技术,但通常最大的区别就是正确使用索引。在MySQLSB件列表中,人们经常要求帮助使查询运行更快。在令人惊讶
7、的情况下,表中没有索引,添加索引通常会立即解决问题。它并不总是这样工作,因为优化并不总是简单。不过,如果您不使用索引,在许多情况下,您只是浪费时间尝试通过其他方式提高性能。首先使用索引获得最大的性能提升,然后查看其他技术可能有帮助。索引实现的具体细节因不同的MySQ存储引擎而异。例如,对于MylSAM表,表的数据行保存在数据文件中,索引值保存在索引文件中。表上可以有多个索引,但它们都存储在同一个索引文件中。索引文件中的每个索引都包含用于快速访问数据文件的关键记录的排序数组。相比之下,BD环口InnoDB存储引擎不会以相同的方式分离数据行和索引值,尽管它们将索引维护为排序值集合。默认情况下,BD
8、B引擎使用每个表中的单个文件来存储数据和索引值。InnoDB引擎使用单个表空间来管理所有InnoDB表的数据和索引存储。IrmoDB可以配置为使用自己的表空间创建每个表,但即使如此,表的数据和索引也存储在同一表空间文件中。MySQL以多种方式使用索引。如上所述,索引用于加速搜索与WHER孑句匹配的行或执行连接时与其他表中的行匹配的行。对于使用()或MAX()函数的查询,可以快速找到索引列中的最小或最大值,而不检查每一行。MySQLg常可以使用索引对ORDERBY和GROUPB件句进行快速排序和分组操作。MylSAM表中的MySQL 从索引文获得。没有理有时,MySQlM以使用索引来读取查询所需
9、的所有信息。假设您从索引数字列中选择值,而不是从表中选择其他列。在这种情况下,当件中读取索引值时,它将获得与该索引值相同的值将通过读取数据文件由读取值两次,所以甚至不需要查询数据文件(Dubois,2008)o一般来说,如果MySQL够找出如何使用索引来更快地处理查询,那么它会。有缺点。时间和空间都有成本。在实践中,这些缺点往往被优势所超越,但你应该知道它们是什么。首先,索引加快检索速度,但是减慢插入和删除速度,以及更新索引列中的值。也就是说,指数减缓了涉及写作的大多数操作。发生这种情况是因为写入记录需要不仅写入数据行,还需要更改任何索引。表的索引越多,需要做的更多变化,平均性能下降越大(Du
10、bois,2008)o其次,索引占用磁盘空间,多个索引占用相应的空间。这可能会导致比没有索引更快地达到表大小限制:对于MylSAM表,对其进行高度索引可能会导致索引文件比数据文件更快地达到其最大大小。对于将数据和索引值存储在同一文件中的BDB表,添加索引会使表格更快地达到最大文件大小。位于InnoDB共享表空间内的所有InnoDB表都会竞争相同的公共空间池,并且添加索引会更快地在此表空间内删除存储空间。但是,与MylSAM和BDB表使用的文件不同,InnoDB共享表空间不受操作系统的文件大小限制的约束,因为它可以配置为使用多个文件。只要您有额外的磁盘空间,您可以通过向其添加新组件来扩展表空间。
11、使用单个表空间的InnoDB表格与BDB表格相同,因为数据和索引值一起存储在单个文件中。AnnalsoftheUniversity7ofPetrosaniEconomics,2010,X(4):201-214.INDEXINGSTRATEGIESFOROPTIMIZINGQUERIESONMYSQLANCAMEHEDINTU,CERASELAPIRVU,CRISTIETEGANABSTRACT:ThisarticleinvestigatesMySQLsindexcapabilities?Itbeginsbyreviewinghowindexeswork,aswellastheirstructu
12、re?Next,itreviewsindexingfeaturesspecifictoeachofthemajorMySQLdatastorageengines?Thisarticlethenexaminesabroadrangeofsituationsinwhichindexesmighthelpspeedupyourapplication?Inadditiontoexamininghowindexescanbeofassistance?Inthisarticlewepresentindexusagetype:B-trees,hashandbitmap,inordertooptimizequ
13、eries,althoughMySQLhasimplementedandindexesspaciousR-trees?Theindextypecorrespondstotheparticularkindsofinternalalgorithmsanddatastructuresusedtoimplementtheindex?InMySQL,supportforaparticularindextypeisdependentuponthestorageengine?KEYWORD:SOptimizingdatabasestructure,Databaseperformance,Optimizing
14、queries,Indexes,B-treeIndex,HashIndex,BitmapIndex,StorageenginesCONSIDERATIONSONTHEMYSQLDATABASEINDEXINGDatabasetuningistheprocessofimprovingdatabaseperformancebyminimizingresponsetime(thetimeittakesastatementtocomplete)andmaximizingthroughputthenumberofstatementsadatabasecanhandleconcurrentlypersec
15、ond)(Schwarty,etal?,2004).Tuningisateamexercise-collectivelyperformedbyDBAs,databasedesigners,applicationdesignersanddatabaseusers,basedunderstandingofthedatabase?Tuningbothdependsonandimpactsthefollowing:tabledesign,relationships,indexdesign,andothercomponents;querydesign,sizeofdatareadandretrieved
16、,andorderofexecution;natureandfrequencyofreadandinsert/update/deleteoperations;partitioningoftheworkbetweentheDatabaseserverandtheclient;timing,eventsandeffectofloadingtables,indexesorpartsthereofintomemory;concurrencycharacteristicsofstatements?Databaseperformancebecomesanimportantissueinthepresenc
17、eoflargeamountsofdata,complexqueries,queriesmanipulatinglargeamountsofdata,longrunningqueries,queriesthatlockeveryoneelseout,largenumberofsimultaneoustransactions,largenumbersofusersandlimitedbandwidth?Ingeneral,mostdatabasesystemsaredesignedforgoodperformance?Thebestimprovementscanbeachievedinthein
18、itialdesignphasebutsometimesnotenoughinformationisavailableaboutthecharacteristicsofadatabase?Later,alteringalargedatabaseinproductionusecanbeexpensiveandpracticalconsiderationsputconstraintsonwhatcanbechanged?Tuningcanmakethedifferencebetweenaquerytakingmillisecondsorminutesorevenmoretoexecute?Data
19、basesystemisthecoreofmanagementinformationsystems,databasebasedonlinetransactionprocessing(OLTP)andonlineanalyticalprocessing(OLAP)isabanking,business,governmentandotherdepartmentsofthemostimportantoneofcomputerapplications(Williams&Lane,2007)?Fromtheapplicationofmostsystems,thequeryoperationinavari
20、etyofdatabaseoperationsinthelargestoccupied,andthequeryoperationisbasedontheSELECTstatementintheSQLstatementisastatementofthecostofthelargest?Forexample,iftheamountofdataaccumulatedtoacertainextent,suchasabankaccounttothedatabasetableofinformationontheaccumulationofmillionsoreventensofmillionsofreco
21、rds,fulltablescanoftenrequirestensofminutestime,andevenafewhours?Ifbetterthanthefulltablescanquerystrategycanoftenbereducedtoafewminutestomakeinquiries,wecanseetheimportanceofqueryoptimizationtechnology?ManyprogrammersthinkthatqueryoptimizationisaDBMS(databasemanagementsystem)tasks,preparedwiththepr
22、ogrammerhaslittletodowithSQLstatement,whichiswrong?Agoodqueryplanperformanceoftencanimprovethenumberoftimes?QueryplanissubmittedbyusersacollectionofSQLstatements,queryplanisoptimizedtodealwiththestatementafterthecollectionofproduce?DBMSqueryplantodealwiththeprocessisasfollows:inthequeryafterthelexic
23、al,syntaxcheck,thestatementwillbesubmittedtotheDBMS*squeryoptimizer,optimizerafteralgebraicoptimizationandoptimizationofaccesstothepathfollowedbypre-compiledmodulesprocessingofstatementsandgenerateinquiries,planning,andthenattherighttimetothesystemimplementation,thefinalresultswillbereturnedtotheuse
24、r?Intheactualdatabaseproducts(suchasOracle,Sybase,etc?)areallversionsofthehighcost-basedoptimizationmethod,thisoptimizationofthedictionaryfromthesystembasedontheinformationtabletoestimatethedifferentcostsofplanninginquiries,andthenselectabetterplanning(Opell,2006)?Whileitisinthedatabasequeryoptimiza
25、tionhasbeendonebetter,butbytheuseroftheSQLstatementsubmittedtothesystembasedonoptimization,itisdifficulttoimagineaworseoriginalqueryplanafterthesystemhasbecomeefficientafteroptimization,sowrittenstatementoftheadvantagesanddisadvantagesofusersisessentia1?Systemwedidnotdiscussqueryoptimization,focusin
26、gonthefollowingplantoimprovetheusersquerysolution?Likebeauty,themostattractiveindexingstrategyisverymuchintheeyeofthebeholder?Afterindexesareinplaceforprimary,join,andfilterkeys(auniversalstandardofindexingbeauty,perhaps?),whatworksforapplicationAmightbethewrongapproachforapplicationB?ApplicationAmi
27、ghtbeatransactionalsystemthatsupportstensofthousandsofquickinteractionswiththedatabase,anditsdatamodificationsmustbemadeinmilliseconds?ApplicationBmightbeadecisionsupportsysteminwhichuserscreateanampleassortmentofserver-hoggingqueries?Thesetwoapplicationsrequireverydifferentindexingtactics?MySQLsopt
28、imizeralwaystriestousetheinformationathandtodevelopthemostefficientqueryplans?However,requirementschangeovertime;usersandapplicationscanintroduceunpredictedrequestsatanypoint?Theserequestsmightincludenewtransactions,reports,integration,andsoforth?Indexingisthemostimportanttoolyouhaveforspeedingupque
29、ries?Othertechniquesareavailabletoyou,too,butgenerallytheonethingthatmakesthemostdifferenceistheproperuseofindexes?OntheMySQLmailinglist,peopleoftenaskforhelpinmakingaqueryrunfaster?Inasurprisinglylargenumberofcases,therearenoindexesonthetablesinquestion,andaddingindexesoftensolvestheproblemimmediat
30、ely.Itdoesntalwaysworklikethat,becauseoptimizationisntalwayssimple?Nevertheless,ifyoudon,tuseindexes,inmanycasesyou*rejustwastingyourtimetryingtoimproveperformancebyothermeans?Useindexingfirsttogetthebiggestperformanceboostandthenseewhatothertechniquesmightbehelpful?Theparticulardetailsofindeximplem
31、entationsvaryfordifferentMySQLstorageengines?Forexample,foraMyISAMtable,thetable,sdatarowsarekeptinadatafile,andindexvaluesarekeptinanindexfile?Youcanhavemorethanoneindexonatable,butthey*reallstoredinthesameindexfile?Eachindexintheindexfileconsistsofasortedarrayofkeyrecordsthatareusedforfastaccessin
32、tothedatafile?Bycontrast,theBDBandInnoDBstorageenginesdonotseparatedatarowsandindexvaluesinthesameway,althoughbothmaintainindexesassetsofsortedvalues?Bydefault,theBDBengineusesasinglefilepertabletostorebothdataandindexvalues?TheInnoDBengineusesasingletablespacewithinwhichitmanagesdataandindexstorage
33、forallInnoDBtables?InnoDBcanbeconfiguredtocreateeachtablewithitsowntablespace,butevenso,atable*sdataandindexesarestoredinthesametablespacefile?MySQLusesindexesinseveralways?Asjustdescribed,indexesareusedtospeedupsearchesforrowsmatchingtermsofaWHEREclauseorrowsthatmatchrowsinothertableswhenperforming
34、joins?ForqueriesthatusetheMINOorMAX0functions,thesmallestorlargestvalueinanindexedcolumncanbefoundquicklywithoutexaminingeveryrow?MySQLcanoftenuseindexestoperformsortingandgroupingoperationsquicklyforORDERBYandGROUPBYclausesSometimesMySQLcanuseanindextoreadingalltheinformationrequiredforaquery.Suppo
35、sethatyou*reselectingvaluesfromanindexednumericcolumninaMylSAMtable,andyou,renotselectingothercolumnsfromthetable?Inthiscase,whenMySQLreadsanindexvaluefromtheindexfile,itobtainsthesamevaluethatitwouldgetbyreadingthedatafile?There*snoreasontoreadvaluestwice,sothedatafileneednotevenbeconsulted(Dubois,
36、2008)?Ingeneral,ifMySQLcanfigureouthowtouseanindextoprocessaquerymorequickly,itwil1.Thereareanddisadvantages?Therearecostsbothintimeandinspace?Inpractice,thesedrawbackstendtobeoutweighedbytheadvantages,butyoushouldknowwhattheyare?First,indexesspeedupretrievalsbutslowdowninsertsanddeletes,aswellasupdatesofvalue
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智慧社区小区沥青路面施工与养护合同2篇
- 2024年贵黄高速扩建工程土地征收与房屋补偿合同
- 2024年版医药冷链运输合同
- 二零二五年度体育赛事招投标合同2篇
- 2025年度合同封面设计创意元素库共享合同3篇
- 2024年版地下建筑防水施工分包合同版
- 2025版货车租赁及冷链物流服务合同范本3篇
- 2024沙卵石开采与环保监管服务合同2篇
- 2024年货物集装箱内河运输合同
- 2024年重庆大数据中心建设合同
- 河北省百师联盟2023-2024学年高二上学期期末大联考历史试题(解析版)
- 2021年四川省凉山州九年级中考适应性考试理科综合(试卷)
- 骨科疼痛的评估及护理
- 【MOOC】概率论与数理统计-南京邮电大学 中国大学慕课MOOC答案
- 2024年度软件开发分包合同技术要求与交底2篇
- 居家养老人员培训管理制度
- 抗菌药物的合理应用培训
- 初三数学老师家长会发言稿
- 湖北第二师范学院《操作系统》2023-2024学年期末试卷
- 2021-2022学年河北省唐山市高一上学期期末语文试题
- 光明乳业财务报表分析报告
评论
0/150
提交评论