MySQL性能优化的最佳20+条经验

MySQL性能优化的最佳20+条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。

1. 为查询缓存优化你的查询

大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。

这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例:

// 查询缓存不开启
$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");

// 开启查询缓存
$today = date("Y-m-d");
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");

上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像 NOW() 和 RAND() 或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (68 人打了分,平均分: 4.43 )
Loading...
编程语言汽车

编程语言汽车

Oscar Mayer Wienermobile以前宝酷发布过《操作系统航空公司》戏谑了一下如果操作系统是航空公司会怎么样的一种情况。现在,我们来YY一下编程语言,如果编程语言是汽车,又会怎么样?

  • Ada   这是一辆坦克。一个很厚重但很丑的坦克,从不会崩溃。如果你告诉别人你正在驾驶Ada,别人会狂笑不已。但是,你会开着一辆跑车去打战吗?[from Amit Dubey]
  • 汇编语言   只是一个祼露在外的引擎。你不得不自己去造车,并向其提供汽油,但你在驾车时要小心,因为他会像一只从地狱放出来的蝙蝠一样。其实,对于汇编语言,你自己才是车。[From “Subterfug” off digg.com:]
  • Basic   是一辆很简单的车,对于一些短途的交通比如去一些超市商店,他是很有用的。以前这是一个对初学者很流行的车,然而,近来它蜕变成脚本,而更新的车型被抛光以应对长途旅程,但那也只是新瓶装旧酒。[from Przemyslaw Wrzos]
  • C   是一辆赛车,它的速度是令人难以想象的快,可惜的是它每50公里就会损毁一次。
  • Cobol   号称是一辆车,但是,没有哪个“有自尊的司机”会承认以前驾驶过它。
  • C#   是一个竞争性的家庭旅行车。一旦你开始使用,你就别想再使用别的竞争者的产品了。
  • C++   是一个加大马力的C赛车,其有一堆新增的功能,而且,它只会每250公里损毁一次。可是,一旦它有故障,没人会知道故障发生在哪里。
  • 阅读全文 Read More

    好烂啊有点差凑合看看还不错很精彩 (14 人打了分,平均分: 4.00 )
    Loading...
    Eclipse 和 Vim

    Eclipse 和 Vim

    以前,neo和发布过如何在vim中得到你最喜爱的IDE特性,这是一篇在vim中装一些插件而让Vim拥有IDE的功能,比如代码自动提示等功能。当然,目前,可能强大最好用的IDE就是Eclipse和,而最强大的编辑器又是Vim了,可不可以让这两个东西合二为一呢。没有问题,开源社区的创造力永远不会让你低估。

    在Vim中拥有Eclipse的功能,在Eclipse里有Vim的功能,那么eclim是你的选择了。http://eclim.org/ 相关的中文文档。使用eclim,你可以在vim中有Eclipse的功能,也可以在Eclipse中嵌入Vim编辑器。很酷。

    阅读全文 Read More

    好烂啊有点差凑合看看还不错很精彩 (13 人打了分,平均分: 3.69 )
    Loading...
    IE6/IE7 0day 漏洞

    IE6/IE7 0day 漏洞

    昨天(2009年11月21日),Symantec发布了IE的一个0day安全漏洞的消息。关于这个消息,截止本文发布时,在中文社区里还没有报导。这是一个关于IE6/IE7处理CSS时的一个漏洞(关于IE和CSS的BUG)。如果你目前还在使用IE6/IE7,那你现在可能是你升级的时候了,当然,有很多人说IE8是没有问题的,但我个人还是建议在补丁出来之前先使用Firefox或Chrome。

    根据Symantec的的报告,他们在第一时间内测试了那个“Exploit Code”(攻击代码),根据测试结果表时,那个JavaScript的攻击代码并不是100%的可靠,而且很不可靠,但安全专家相信,100%完全可靠的“攻击代码”将会马上出现。这意味着,这段攻击代码会马上如潮水一样地放在各个有恶意的网站上,然后,所有的IE6/IE7的,打开JavaScript的用户都会被危及。

    目前,这段攻击代码,虽然很不可靠,但已经被证明在IE6/IE7的 Windows XP SP3上是可靠的,目前还没有相关报告说明有多少台电脑中招了,但我相信,在过去的这个周末,一定有一些人在拼命地在改善这段攻击代码,他们要赶在相关的补丁出来之前。而Microsoft,相信他还是和以前一样,一定要等到攻击很广泛的时候才会开始真正把补丁提上日程。

    最后,说一下攻击代码,这个代码是在Bugtraq邮件组中,这段攻击代码如下所示,这段代码攻击性并不可靠。

    阅读全文 Read More

    好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 3.14 )
    Loading...
    正则表达式生成器

    正则表达式生成器

     对正则表达式很头疼,是不是?每次看到都觉得像看天书似的,别说让人自己整一个出来了。下面这个网站可以帮你生成正则表达式,而且还可以根据不同的语言生成不同的代码示例,很强大。

    txt2re.com

    http://www.txt2re.com/index.php3

    打开上面那个网页,你会看到有三步。

    • 第一步,输出你想匹配的一个文本示例,然后点“Show Machted”,于是进入第二点。
    • 第二步,当你看到那花花绿绿的界面是不要头大(那个配色也太可怕了),那是这个会把你的这个字串每个字符都拆出来,并把单词分隔。于是,你可以点击那些花绿格子间的链接来组织你的正规表达式。,比如:c表示任意字符,还有什么int,day,string之流的东西。(相当ugly的界面)在这一步,你一点要点点什么,不然不会进入第三步。
    • 第三步,选择一个编程语言,然后你可以看到相关的代码示例。语言支持:Perl  PHP  Python  Java  Javascript  ColdFusion  C  C++  Ruby  VB  VBScript  J#.net  C#.net  C++.net  VB.net (这么多)

    总之,这是一个很酷,但却界面很丑陋的在线的正则表达式生成工具。

     

    好烂啊有点差凑合看看还不错很精彩 (16 人打了分,平均分: 3.75 )
    Loading...
    C语言和sh脚本的杂交代码

    C语言和sh脚本的杂交代码

    在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示。在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了。

    #if 0
    echo "Hello from bash!"
    exit
    #endif
    #include <stdlib.h>
    #include <stdio.h>
    int main(int argc, char* argv[]) {
      puts("Hello from C!");
      return EXIT_SUCCESS;
    }

    下面,让我看看如果来使用这样的程序:

    $ sh test.sh.c
    Hello from bash!
    $ gcc test.sh.c -o test
    $ ./test
    Hello from C!
    

    你甚至还可以做一个自我编译,并自我运行的源代码。如下所示:

    阅读全文 Read More

    好烂啊有点差凑合看看还不错很精彩 (16 人打了分,平均分: 3.75 )
    Loading...
    9个最常见IE的Bug及其fix

    9个最常见IE的Bug及其fix

    9个最常见IE的Bug及其fix

    Internet Explorer – Web程序员的毒药。在IE上开发时间中有超过60%的时间是花在和IE的bug进行搏斗,让你的开发生产率严重下降。下面是一个教程,告诉你9个IE上最常见的BUG以及如何解决它们。

    1. 居中布局

    创建一个CSS定义把一个元素放到中间的位置,可能是每一个Web开发人员都会做的事情。最简单的做法是为你的元素增加一个margin: auto; ,然而 IE 6.0 会出现很多奇怪的行为。让我们来看一个例子。

    #container{
    	border: solid 1px #000;
    	background: #777;
    	width: 400px;
    	height: 160px;
    	margin: 30px 0 0 30px;
    }
    
    #element{
    	background: #95CFEF;
    	border: solid 1px #36F;
    	width: 300px;
    	height: 100px;
    	margin: 30px auto;
    
    }
    

    下面是我们所期望的输出:

    阅读全文 Read More

    好烂啊有点差凑合看看还不错很精彩 (17 人打了分,平均分: 4.29 )
    Loading...
    在上班的时候浏览不相干网页

    在上班的时候浏览不相干网页

    相信大家在上班的时候都要去浏览很多与工作无关的网页,但总是害怕被同事尤其是老板看到,所以,你总是会有个“老板键”什么的。当有人从你身边经过的时候,你会很快速地切换你的桌面屏幕,让人看到你还在干与工作有关的事情了。

    现在,一个具有创意的天才解决方案出来了——为什么不把这些与工作无关的网站的样子都变成和工作相关呢?这里有一个示例,真让人拍案叫绝。不知道大家知不知道一个叫http://www.fmylife.com/的网站?这个网站上都是一些“令人难堪”的小笑话,很多是荤的笑话,而有另一个网站是:http://fml.madsravn.dk/——这个网站就是fmylife的翻版,唯一不同的是,它把fmylife.com伪装成了一个Java 2 Platform SE v1.42的技术文档(请注意这个文档中的函数解释的内容),于是你就可以在上班的时候大胆地浏览fmylife.com上的内容了,因为那看起来就像在看Java的API文档。呵呵。

    Java Doc版的fmlife.com

    好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 3.50 )
    Loading...
    超强:Unix道德经(英文版)

    超强:Unix道德经(英文版)

    主页:http://mercury.ccil.org/~cowan/upc/

    这是一个人主页,博主说,这是一个“黑客式”版本的 Dao De Ching (字面理解是”way power classic”,道路权力名著).他并对中文其实并不懂。他只是为Jonathan Star的 逐字翻译 而工作,其使用了在线的中文一个词典 zhongwen.com对《道德经》一字一字地翻译。

    他对《道德经》并不是很懂,除了知道那是中文,而且知道这是一个相当老的,而且,2500年前的那些是非常喜欢的一个作品,正如 Ursula K. LeGuin她的版本中所说的一样。作者说《道德经》是对道德,政治和宗教信仰做了很多的解释。到了今天,还有人在读这本书,说明了这本书的不朽,美妙和意味深长。

    下面是《道德经》的 81 个章节 ,作者并没有完全写完(或者说是hack完),你可以点击链接查看其中的内容。

    01 02 03 04 05 06 07 08 09
    10 11 12 13 14 15 16 17 18
    19 20 21 22 23 24 25 26 27
    28 29 30 31 32 33 34 35 36
    37 38 39 40 41 42 43 44 45
    46 47 48 49 50 51 52 53 54
    55 56 57 58 59 60 61 62 63
    64 65 66 67 68 69 70 71 72
    73 74 75 76 77 78 79 80 81

    点击第23章,可以看到hack版的充满Unix术语的经文翻译。下面给出原文和转译版的对照。(老实说,翻译的怎是一个强字了得啊)下面给出中英对照版。

    阅读全文 Read More

    好烂啊有点差凑合看看还不错很精彩 (14 人打了分,平均分: 4.00 )
    Loading...