仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2490|回复: 10
打印 上一主题 下一主题

[学习教程] MSSQL教程之SQL语句的主动优化

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。优化|语句<Pclass=a14>在数据库使用体系中编写可实行的SQL语句能够有多种体例完成,但哪一条是最好计划却难以断定。为懂得决这一成绩,有需要对SQL实行优化。复杂地说,SQL语句的优化就是将功能低下的SQL语句转换成到达一样目标的功能更好的SQL语句。<Pclass=a14>优化SQL语句的缘故原由<Pclass=a14>数据库体系的性命周期能够分红:计划、开辟和制品三个阶段。在计划阶段举行优化的本钱最低,收益最年夜。在制品阶段举行优化的本钱最高,收益最小。假如将一个数据库体系比方成一座楼房,在楼房建好落后行改正常常本钱很高而见效很小(乃至大概基本没法改正),而在楼房计划、临盆阶段把持好每块砖瓦的质量就可以到达消费小而奏效高的目标。<Pclass=a14>为了取得最年夜效益,人们常必要对数据库举行优化。数据库的优化一般能够经由过程对收集、硬件、操纵体系、数据库参数和使用程序的优化来举行。依据统计,对收集、硬件、操纵体系、数据库参数举行优化所取得的功能提拔全体加起来只占数据库使用体系功能提拔的40%摆布,其他60%的体系功能提拔全体来自对使用程序的优化。很多优化专家乃至以为对使用程序的优化能够失掉80%的体系功能提拔。因而能够一定,经由过程优化使用程序来对数据库体系举行优化能取得更年夜的收益。<Pclass=a14>对使用程序的优化一般可分为两个方面:源代码的优化和SQL语句的优化。因为触及到对程序逻辑的改动,源代码的优化在工夫本钱微风险上价值很高(特别是对正在利用中的体系举行优化)。另外一方面,源代码的优化对数据库体系功能的提拔见效无限,由于使用程序对数据库的操纵终极要体现为SQL语句对数据库的操纵。<Pclass=a14>对SQL语句举行优化有以下一些间接缘故原由:<Pclass=a14>1.SQL语句是对数据库(数据)举行操纵的唯一路子,使用程序的实行终极要回结为SQL语句的实行,SQL语句的效力对数据库体系的功能起到了决意性的感化。<Pclass=a14>2.SQL语句损耗了70%~90%的数据库资本。<Pclass=a14>3.SQL语句自力于程序计划逻辑,对SQL语句举行优化不会影响程序逻辑,相对对程序源代码的优化,对SQL语句的优化在工夫本钱微风险上的价值都很低。<Pclass=a14>4.SQL语句能够有分歧的写法,分歧的写法在功能上的差别大概很年夜。<Pclass=a14>5.SQL语句易学,难精晓。SQL语句的功能常常同实践运转体系的数据库布局、纪录数目等有关,不存在广泛合用的纪律来提拔功能。<Pclass=a14>传统的优化办法<Pclass=a14>SQL程序职员在传统上接纳手工重写来对SQL语句举行优化。这次要依托DBA或资深程序员对SQL语句实行企图的剖析,依托履历,实验重写SQL语句,然后对了局和功能举行对照以试图找到功能较佳的SQL语句。这类做法存在着以下不敷:<Pclass=a14>1.没法找出SQL语句的一切大概写法。极可能消费了大批的工夫也没法找到功能较佳的SQL语句。即使找到了某本性能较佳的SQL语句也没法晓得是不是存在功能更好的写法。<Pclass=a14>2.十分依附于人的履历,履历的多寡常常决意了优化后SQL语句的功能。<Pclass=a14>3.十分耗工夫。重写-->校验准确性-->对照功能,这一轮回历程必要大批的工夫。<Pclass=a14>依据传统的SQL优化工具的功效,人们一样平常将优化工具分为以下三代产物:<Pclass=a14>第一代的SQL优化工具是实行企图剖析工具。这类工具对输出的SQL语句从数据库提取实行企图,并注释实行企图中关头字的寄义。<Pclass=a14>第二代的SQL优化工具只能供应增添索引的倡议,它经由过程对输出的SQL语句的实行企图的剖析来发生是不是要增添索引的倡议。这类工具存在着致命的弱点――只剖析了一条SQL语句就得出增添某个索引的结论,基本不睬会(实践上也没法评价到)增添的索引对全体数据库体系功能的影响。<Pclass=a14>第三代工具是使用野生智能完成主动SQL优化。<Pclass=a14>野生智能主动SQL优化<Pclass=a14>跟着野生智能手艺的开展和在数据库优化范畴使用的深切,在20世纪90年月末优化手艺获得了冲破性的停顿,呈现了野生智能主动SQL优化。野生智能主动SQL优化的实质就是借助野生智能手艺,主动对SQL语句举行重写,找到功能最好的等效SQL语句。LECCOSQLExpert就接纳了这类野生智能手艺,其SQLExpert撑持Oracle、Sybase、MSSQLServer和IBMDB2数据库平台。其凸起特性是主动优化SQL语句。除此之外,还能够以野生智能常识库“反应式搜刮引擎”来重写SQL语句,并找出一切等效的SQL语句及大概的实行企图,经由过程测试运转为使用程序和数据库主动找到功能最好的SQL语句,供应微秒级的计时;可以优化Web使用程序和有大批用户的在线事件处置中运转工夫很短的SQL语句;能经由过程对照源SQL和待选SQL的分歧的地方,为开辟职员供应“边做边学式练习”,敏捷进步开辟职员的SQL编程妙技等等。<Pclass=a14>该工具针对数据库使用的开辟和保护阶段供应了数个出格的模块:SQL语法优化器、PL/SQL集成化开辟调试情况(IDE)、扫描器、数据库监督器等。其中心模块之一“SQL语法优化器”的事情道理大抵以下:输出一条源SQL语句,“野生智能反应式搜刮引擎”对输出的SQL语句分离检测到的数据库布局和索引举行重写,发生N条等效的SQL语句输入,发生的N条等效SQL语句再送进“野生智能反应式搜刮引擎”举行重写,直至没法发生新的输入或搜刮限额满,接上去对输入的SQL语句举行过滤,选出具有分歧实行企图的SQL语句(分歧的实行企图意味着分歧的实行效力),最初,对失掉的SQL语句举行批量测试,找出功能最好的SQL语句(拜见下图)。<P>

图野生智能主动SQL优化表示图<Pclass=a14>LECCOSQLExpert不但可以找到最好的SQL语句,它所供应的“边做边学式练习”还可以教会开辟职员和数据库办理员怎样写出功能最好的SQL语句。LECCOSQLExpert的SQL语句主动优化功效使SQL的优化变得极为复杂,只需可以写出SQL语句,它就可以帮开辟职员找到最好功能的写法。<Pclass=a14>小结SQL语句是数据库使用中一个十分关头的部分,它实行功能的上下间接影响着使用程序的运转效力。正由于云云,人们在SQL语句的优化上投进了很年夜的精神,呈现了很多SQL语句优化工具。跟着野生智能等相干手艺的日趋成熟,一定还会有更多更好的工具呈现,这将会给开辟职员供应更多的匡助。
Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失
分手快乐 该用户已被删除
沙发
发表于 2015-1-17 13:19:31 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-20 19:10:52 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
小女巫 该用户已被删除
地板
发表于 2015-1-29 15:40:22 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
admin 该用户已被删除
5#
发表于 2015-1-29 15:40:22 来自手机 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
老尸 该用户已被删除
6#
发表于 2015-2-6 02:30:55 | 只看该作者
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
山那边是海 该用户已被删除
7#
发表于 2015-2-15 02:58:47 | 只看该作者
无法深入到数据库系统层面去了解和探究
谁可相欹 该用户已被删除
8#
发表于 2015-3-4 11:09:44 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-11 18:44:01 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
柔情似水 该用户已被删除
10#
发表于 2015-3-19 07:55:43 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
不帅 该用户已被删除
11#
发表于 2015-3-27 16:10:51 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 08:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表