飘灵儿 发表于 2015-1-16 22:38:03

MYSQL网页编程之MySQL手册版本 5.0.20-MySQL优化(一)

能够以较低的成本向客户提供IT所有权,当节约成本成为客户最高优先级时,解决方案提供商可以向更多的客户同时提供服务。虽然有许多来自RDBMS固有的局限性。mysql|优化<pstyle="TEXT-INDENT:2em">7MySQL优化<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">数据库优化是一项很庞大的事情,由于这终极必要对体系优化的很好了解才行。只管对体系或使用体系的懂得未几的情形下优化效果还不错,可是假如想优化的效果更好,那末就必要对它懂得更多才行。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">本章次要解说了几种优化MySQL的办法,而且给出了例子。记住,总有各类举措能让体系运转的更快,固然了,这必要更多的勉力。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">7.1优化概述<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">让体系运转得快得最主要要素是数据库基础的计划。而且还必需分明您的体系要用来做甚么,和存在的瓶颈。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">最多见的体系瓶颈有以下几种:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">磁盘搜刮。它渐渐地在磁盘中搜刮数据块。对古代磁盘来讲,平常的搜刮工夫基础上小于10毫秒,因而实际上每秒钟能够做100次磁盘搜刮。这个工夫关于全新的新磁盘来讲进步的未几,而且关于只要一个表的情形也是云云。加速搜刮工夫的办法是将数据分隔寄存到多个磁盘中。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">磁盘读/写。当磁盘在准确的地位上时,就必要读取数据。对古代磁盘来讲,磁盘吞吐量最少是10-20MB/秒。这比磁盘搜刮的优化更简单,由于能够从多个前言中并行地读取数据。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">CPU周期。数据存储在主内存中(大概它已在主内存中了),这就必要处置这些数据以失掉想要的了局。存在多个?硐啾饶诖嫒萘坷此蹈窍拗频囊蛩亍2还孕"砝此担俣韧ǔ2皇俏侍狻?<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">内存带宽。当CPU要将更多的数据寄存在CPU缓存中时,主内存的带宽就是瓶颈了。在年夜多半体系中,这不是罕见的瓶颈,不外也是要注重的一个要素。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">7.1.1MySQL计划的范围性<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">当利用MyISAM存储引擎时,MySQL会利用一个疾速数据表锁以同意同时多个读取和一个写进。这类存储引擎的最年夜成绩是产生在一个单一的表上同时做不乱的更新操纵及慢速查询。假如这类情形在某个表中存在,可使用另外一种表范例。概况请看"15MySQLStorageEnginesandTableTypes"。<pstyle="TEXT-INDENT:2em">MySQL能够同时在事件及非事件表下事情。为了可以光滑的利用非事件表(产生毛病时不克不及回滚),有以下几条划定规矩:<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">一切的字段都有默许值<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">假如字段中拔出了一个"毛病"的值,好比在数字范例字段中拔出过年夜数值,那末MySQL会将该字段值置为"最大概的值"而不是给出一个毛病。数字范例的值是0,最小大概最年夜的大概值。字符串范例,不是空字符串就是字段所能存储的最年夜长度。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">一切的盘算表达式城市前往一个值而呈报前提毛病,比方1/0前往NULL。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">这些划定规矩隐含的意义是,不克不及利用MySQL来反省字段内容。相反地,必需在存储到数据库前在使用程序中来反省。概况请看"1.8.6HowMySQLDealswithConstraints和"14.1.4INSERTSyntax"。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">7.1.2使用计划的可移植性<pstyle="TEXT-INDENT:2em">因为各类分歧的数据库完成了各自的SQL尺度,这就必要我们只管利用可移植的SQL使用。查询和拔出操纵很简单就可以做到可移植,不外因为更多的束缚前提的请求就更加坚苦。想要让一个使用在各类数据库体系上疾速运转,就变得更坚苦了。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">为了能让一个庞大的使用做到可移植,就要先看这个使用运转于哪一种数据库体系之上,然后看这些数据库体系都撑持哪些特征。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">每一个数据库体系都有某些不敷。也就是说,因为计划上的一些让步,招致了功能上的差别。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">能够用MySQL的crash-me程序来看选定的数据库服务器上可使用的函数,范例,限定等。crash-me不会反省各类大概存在的特征,不外这仍旧是符合道理的了解,约莫做了450次测试。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">一个crash-me的信息范例的例子就是,它会告知您假如想利用Informix或DB2的话,就不克不及使字段名长度凌驾18个字符。<pstyle="TEXT-INDENT:2em"><pstyle="TEXT-INDENT:2em">crash-me程序和MySQL基准使每一个准数据库都完成了的。能够经由过程浏览这些基准程序是怎样写的,本人就也许有如何做才干让程序自力于各类数据库这方面的设法了。这些程序能够在MySQL源代码的`sql-bench目次下找到。他们年夜部分都是用Perl写的,而且利用DBI接口。因为它供应了自力于数据库的各类会见体例,因而用DBI来办理各类移植性的成绩。<pstyle="TEXT-INDENT:2em">想要看到crash-me的了局,能够会见:http://dev.mysql.com/tech-resources/crash-me.php.会见http://dev.mysql.com/tech-resources/benchmarks能够看到基准的了局。使用它开发程序也是非常简单的。”

透明 发表于 2015-1-19 19:45:23

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

再现理想 发表于 2015-1-26 10:12:22

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

不帅 发表于 2015-2-4 14:14:37

所以你总能得到相应的升级版本,来满足你的需求。

精灵巫婆 发表于 2015-2-10 01:23:54

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

飘灵儿 发表于 2015-2-28 12:53:44

总感觉自己还是不会SQL

变相怪杰 发表于 2015-3-9 23:45:45

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

深爱那片海 发表于 2015-3-17 03:10:27

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

老尸 发表于 2015-3-23 18:01:54

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
页: [1]
查看完整版本: MYSQL网页编程之MySQL手册版本 5.0.20-MySQL优化(一)