<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/orczhou" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/orczhou" type="application/rss+xml"></fs:self_link><lastBuildDate>Thu, 04 Feb 2010 04:57:17 GMT</lastBuildDate><title>Orczhou</title><description>一个故事 一个心情</description><image><url>http://www.feedsky.com/feed/orczhou/sc/gif</url><title>Orczhou</title><link>http://www.orczhou.com</link></image><link>http://www.orczhou.com</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Thu, 04 Feb 2010 04:57:17 GMT</pubDate><item><title>InnoDB Double write</title><link>http://www.orczhou.com/index.php/2010/02/innodb-double-write/</link><content:encoded>&lt;p&gt;记得刚开始看InnoDB文档的时候，&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-io.html&quot;&gt;Double Write一节&lt;/a&gt;（其实只有一小段）就让我很困惑。无奈当时内力太浅，纠缠了很久也没弄明白。时隔几个月，重新来整理一下。&lt;/p&gt;
&lt;p&gt;涉及到的概念：&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/&quot;&gt;Buffer Pool&lt;/a&gt;简称BP，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/&quot;&gt;Dirty Page&lt;/a&gt;，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/&quot;&gt;Log file&lt;/a&gt;，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb_flush_method-file-io/&quot;&gt;Flush&lt;/a&gt;，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/image-innodb-tablespace/&quot;&gt;innodb tablespace&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 什么是Double Write&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;在InnoDB将BP中的Dirty Page刷（flush）到磁盘上时，首先会将Page刷到InnoDB tablespace的一个区域中，我们称该区域为Double write Buffer。在向Double write Buffer写入成功后，再择机将数据拷贝到正在的数据文件对应的位置。&lt;/p&gt;
&lt;p&gt;咋一看，这个过程有些多余&lt;span id=&quot;more-1316&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 为什么需要Double Write&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;InnoDB中有记录（Row）被更新时，先将其在Buffer Pool（简称&lt;strong&gt;BP&lt;/strong&gt;）中的page更新，并将这次更新记录到Log file中，这时候BP中的该page就是被标记为Dirty。在适当的时候（BP不够、系统闲置等），这些Dirty Page会被flush到磁盘上。&lt;/p&gt;
&lt;p&gt;试想，在某个Dirty Page（一般是16K）flush的过程中，发生了系统断电（或者OS崩溃），&lt;strong&gt;16K&lt;/strong&gt;的数据只有&lt;strong&gt;8K&lt;/strong&gt;被写到磁盘上，这种现象被称为（partial page writes、torn pages、fractured writes）。一旦partial page writes发生，那么在InnoDB恢复时就很尴尬：在InnoDB的Log file中虽然知道这个数据页被修改了，但是却无法知道这个页被修改到什么程度，和这个页面相关的redo也就无法应用了。&lt;/p&gt;
&lt;p&gt;举个例子：在InnoDB的log file中有如下Log：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Log sequence number 0 4285149977&lt;br /&gt;
Log sequence number 0 4287355447&lt;br /&gt;
Log sequence number 0 4289260680&lt;br /&gt;
Log sequence number 0 4291279900&lt;br /&gt;
Log sequence number 0 4293359020
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;其中第1、3个Log修改了该page，但是在断电时，BP中该page只被flush了一部分。那么InnoDB是无法决定上面的Log是否应该被应用的。这时，数据就出现了不一致。&lt;/p&gt;
&lt;p&gt;所以，Log file的有效应用，前提是&lt;strong&gt;InnoDB的数据文件中的Page是一致&lt;/strong&gt;的。&lt;/p&gt;
&lt;p&gt;简而言之，Double write就是为了避免Partial page writes而设计的。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;3. Double Write对性能的影响&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;系统需要将数据写两份，一般认为，Double Write是会降低系统性能的。&lt;a href=&quot;http://www.mysqlperformanceblog.com/2006/08/04/innodb-double-write/&quot;&gt;peter&lt;/a&gt;猜测可能会有5-10%的性能损失，但是因为实现了数据的一致，是值得的。&lt;a href=&quot;http://www.facebook.com/note.php?note_id=107329775932&quot;&gt;Mark Callaghan&lt;/a&gt;认为这应该是存储层面应该解决的问题，放在数据库层面无疑是牺牲了很多性能的。&lt;/p&gt;
&lt;p&gt;事实上，Double Write对性能影响并没有你想象（写两遍性能应该降低了50%吧？）的那么大。在BP中一次性往往会有很多的Dirty Page同时被flush，Double Write则把这些写操作，由随机写转化为了顺序写。而在Double Write的第二个阶段，因为Double Write Buffer中积累了很多Dirty Page，所以向真正的数据文件中写数据的时候，可能有很多写操作可以合并，这样有可能会降低Fsync的调用次数。&lt;/p&gt;
&lt;p&gt;基于上面的原因，Double Write并没有想象的那么糟。另外，Dimitri在&lt;a href=&quot;http://dimitrik.free.fr/blog/archives/2009/08/entry_86.html&quot;&gt;测试&lt;/a&gt;后，发现打开和关闭Double Write对效率的影响并不大。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;4. 相关参数与状态&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;是否打开了double write:&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
root@(none) 07:16:16&gt;show variables like &quot;%double%&quot;;
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_doublewrite | ON    |
+--------------------+-------+
&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;Double write的使用情况：&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
root@(none) 07:15:50&gt;SHOW STATUS LIKE &quot;%innodb_dblwr%&quot;;
+----------------------------+-----------+
| Variable_name              | Value     |
+----------------------------+-----------+
| Innodb_dblwr_pages_written | 145373349 |
| Innodb_dblwr_writes        | 2249336   |
+----------------------------+-----------+
&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;上面可以看到，从BP共Flush了145373349个Pages到double write buffer中；一共调用了2249336次write写到真正的数据文件。可见，相当于每次write合并了 145373349 / 2249336 = 64.6次Flush。（这就是为什么double write buffer为什么并不会对效率有很大影响的原因）&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;5. 我的看法&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;在某些文件系统（&lt;a href=&quot;http://dev.mysql.com/tech-resources/articles/mysql-zfs.html&quot;&gt;ZFS&lt;/a&gt;等）层面能够保证不出现Partial page writes时，可以关闭Double Write。因为它对性能影响并不大，一般情况都建议打开，毕竟带来的数据安全性保障可能是我们更关心的。&lt;/p&gt;
&lt;p&gt;参考文献：&lt;/p&gt;
&lt;p&gt;[0]. &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-io.html&quot;&gt;Manual about Double Write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1]. &lt;a href=&quot;http://www.mysqlperformanceblog.com/2006/08/04/innodb-double-write/&quot;&gt;Innodb Double Write&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2]. &lt;a href=&quot;http://www.facebook.com/note.php?note_id=107329775932&quot;&gt;Do you need the InnoDB doublewrite buffer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3]. &lt;a href=&quot;http://dimitrik.free.fr/blog/archives/2009/08/entry_86.html&quot;&gt;MySQL Performance: InnoDB Doublewrite Buffer Impact&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/02/innodb-double-write/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/02/innodb-double-write/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/02/innodb-double-write/&amp;title=InnoDB Double write&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/innodb/&quot; rel=&quot;tag&quot;&gt;innodb&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329465744/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/02/innodb-double-write/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/329465744/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/329465744/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/02/innodb-double-write/feed/</wfw:commentRss><description>&lt;p&gt;记得刚开始看InnoDB文档的时候，&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-io.html&quot;&gt;Double Write一节&lt;/a&gt;（其实只有一小段）就让我很困惑。无奈当时内力太浅，纠缠了很久也没弄明白。时隔几个月，重新来整理一下。&lt;/p&gt;
&lt;p&gt;涉及到的概念：&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/&quot;&gt;Buffer Pool&lt;/a&gt;简称BP，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/&quot;&gt;Dirty Page&lt;/a&gt;，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/&quot;&gt;Log file&lt;/a&gt;，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/innodb_flush_method-file-io/&quot;&gt;Flush&lt;/a&gt;，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/image-innodb-tablespace/&quot;&gt;innodb tablespace&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 什么是Double Write&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;在InnoDB将BP中的Dirty Page刷（flush）到磁盘上时，首先会将Page刷到InnoDB tablespace的一个区域中，我们称该区域为Double write Buffer。在向Double write Buffer写入成功后，再择机将数据拷贝到正在的数据文件对应的位置。&lt;/p&gt;
&lt;p&gt;咋一看，这个过程有些多余[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/02/innodb-double-write/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329465744/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/02/innodb-double-write/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/329465744/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/329465744/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>innodb</category><category>MYSQL</category><pubDate>Thu, 04 Feb 2010 12:57:17 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/02/innodb-double-write/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1316</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/02/innodb-double-write/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/329465744/4031936</fs:itemid></item><item><title>详解MyISAM Key Cache(后篇)</title><link>http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/</link><content:encoded>&lt;p&gt;在前两篇（&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot;&gt;前篇&lt;/a&gt;、&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot;&gt;中篇&lt;/a&gt;）中，分别介绍了Key Cache的基本原理（LRU和Midpoint Insertion Strategy）。最后，将介绍一些相关的参数、状态参数和命令。&lt;/p&gt;
&lt;p&gt;Key Cache的配置很灵活，可以针对全局配置，还可以针对某个单独数据表分配Key Cache的大小；如果一个数据表某部分的索引块被访问的非常频繁（较之其他索引块），那么可以配置Midpoint Insertion Strategy达到最大的利用率(&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot;&gt;参考&lt;/a&gt;)。&lt;span id=&quot;more-1283&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 如何配置Key Cache的大小&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
#配置文件my.cnf&lt;br /&gt;
key_buffer_size=50*1024*1024
&lt;/div&gt;
&lt;p&gt;另外，Key Cache的大小可以动态的改变&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 给数据表划分单独的Key Cache&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;例如：划分一块128K的Key buffer空间，指定数据表t1的Key cache放在里面。最后演示了如何删除这个特定的Key buffer空间。&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
SET GLOBAL hot_cache.key_buffer_size=128*1024;&lt;br /&gt;
CACHE INDEX t1 IN hot_cache;&lt;br /&gt;
SET GLOBAL  hot_cache.key_buffer_size=0;
&lt;/div&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;3. 预先载入某些数据表的索引&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
LOAD INDEX INTO CACHE t1, t2
&lt;/div&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;4. 关于Key Cache的使用情况观察 Flush现象&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
mysql&gt; show status like &quot;key%&quot;;
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| Key_blocks_not_flushed | 14468    |
| Key_blocks_unused      | 0        |
| Key_blocks_used        | 14497    |
| Key_read_requests      | 30586575 |
| Key_reads              | 157      |
| Key_write_requests     | 7100408  |
| Key_writes             | 1199800  |
+------------------------+----------+
mysql&gt; flush tables;             （&lt;strong&gt;&lt;font color=&quot;red&quot;&gt;注意，请不要在业务高峰期执行&lt;/font&gt;&lt;/strong&gt;）
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| Key_blocks_not_flushed | 0        |   #所有修改的block都已经被flush了
| Key_blocks_unused      | 0        |
| Key_blocks_used        | 14497    |
| Key_read_requests      | 38333936 |
| Key_reads              | 207      |
| Key_write_requests     | 8819898  |
| Key_writes             | 1255245  |
+------------------------+----------+
&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;5. 需要注意的事项&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;内存中缓存的索引块（Key Cache），&lt;strong&gt;有时候并不会及时刷新&lt;/strong&gt;到磁盘上，所以对于正在运行的数据表的索引文件（MYI）一般都是不完整的。如果此时拷贝或者移动这些索引文件。多半会出现索引文件损坏的情况。&lt;/p&gt;
&lt;p&gt;可以通过Flush table命令来将Key Cache中的block都flush到磁盘上。所以，一般要动态移动MyISAM表需要执行以下步骤：&lt;/p&gt;
&lt;p&gt;首先，刷新数据表，并锁住数据表：（&lt;strong&gt;&lt;font color=&quot;red&quot;&gt;注意，请不要在业务高峰期执行&lt;/font&gt;&lt;/strong&gt;）&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
FLUSH TABLES WITH READ LOCK;
&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;可以通过下面的命令来查看没有被Flush的索引块数量&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
mysql&gt; show status like &quot;Key_blocks_not_flushed&quot;;
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| Key_blocks_not_flushed | 0        |
+------------------------+----------+
&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;最后，移动对应的文件（MYI MYD FRM）。&lt;/p&gt;
&lt;p&gt;参考&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/myisam-key-cache.html&quot;&gt;MySQL Manual about Key cache&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/&amp;title=详解MyISAM Key Cache(后篇)&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/myisam/&quot; rel=&quot;tag&quot;&gt;MyISAM&lt;/a&gt;, &lt;a href=&quot;http://www.orczhou.com/index.php/tag/myisam-key-buffer/&quot; rel=&quot;tag&quot;&gt;MyISAM Key Buffer&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808366/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808366/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808366/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/feed/</wfw:commentRss><description>&lt;p&gt;在前两篇（&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot;&gt;前篇&lt;/a&gt;、&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot;&gt;中篇&lt;/a&gt;）中，分别介绍了Key Cache的基本原理（LRU和Midpoint Insertion Strategy）。最后，将介绍一些相关的参数、状态参数和命令。&lt;/p&gt;
&lt;p&gt;Key Cache的配置很灵活，可以针对全局配置，还可以针对某个单独数据表分配Key Cache的大小；如果一个数据表某部分的索引块被访问的非常频繁（较之其他索引块），那么可以配置Midpoint Insertion Strategy达到最大的利用率(&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot;&gt;参考&lt;/a&gt;)。[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808366/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808366/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808366/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>MyISAM</category><category>MYSQL</category><category>MyISAM Key Buffer</category><pubDate>Tue, 02 Feb 2010 21:56:43 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1283</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/02/myisam-key-buffer-3/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808366/4031936</fs:itemid></item><item><title>Linux下C语言连接MySQL</title><link>http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/</link><content:encoded>&lt;p&gt;相对于Window下的设置，Linux要简单的很多。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 示例程序&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
$ vi mysql-c-api.c
#include &amp;lt;stdio.h&amp;gt;
#include &quot;mysql/mysql.h&quot;
int main(){
        MYSQL mysql;
        mysql_init(&amp;#038;mysql);
        mysql_options(&amp;#038;mysql,MYSQL_OPT_COMPRESS,0);
        mysql_options(&amp;#038;mysql,MYSQL_INIT_COMMAND,&quot;SET autocommit=0&quot;);
        if (!mysql_real_connect(&amp;#038;mysql,&quot;10.2.3.4&quot;,&quot;user&quot;,&quot;passwd&quot;,&quot;database&quot;,0,NULL,0))
        {
                fprintf(stderr, &quot;Failed to connect to database: Error: %sn&quot;,
                mysql_error(&amp;#038;mysql));
        }
        return 0;
}
&lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 编译命令&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;在MySQL编译后的二进制文件中，有一个很有用的二进制文件“&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/mysql-config.html&quot;&gt;mysql_config&lt;/a&gt;”（一般和mysql命令在同一个目录下），我们可以通过这个程序找到需要的头文件和连接库：&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
$ gcc -o a.out $(mysql_config --cflags) &lt;strong&gt;mysql-c-api.c&lt;/strong&gt; $(mysql_config --libs)
$ ./a.out
&lt;/div&gt;
&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/&amp;title=Linux下C语言连接MySQL&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/linux-programming/&quot; rel=&quot;tag&quot;&gt;Linux Programming&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808367/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808367/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808367/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/feed/</wfw:commentRss><description>&lt;p&gt;相对于Window下的设置，Linux要简单的很多。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 示例程序&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;div class=&quot;mycode&quot;&gt;
$ vi mysql-c-api.c
#include &amp;#60;stdio.h&amp;#62;
#include &quot;mysql/mysql.h&quot;
int main(){
        MYSQL mysql;
        mys[......]&lt;/div&gt;&lt;/pre&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808367/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808367/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808367/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Linux Programming</category><category>技术细节</category><pubDate>Tue, 26 Jan 2010 19:21:30 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1323</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/01/linux-c-mysql-api/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808367/4031936</fs:itemid></item><item><title>详解MyISAM Key Cache(中篇)</title><link>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/</link><content:encoded>&lt;p&gt;在&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot;&gt;前篇&lt;/a&gt;中介绍了Key Cache的基本机制，并且介绍了Key Cache的LRU算法。作为对LRU算法的改进，MyISAM还提供了另一个缓存算法：“Midpoint Insertion Strategy”。本文将重点介绍该算法的原理和配置。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 相关参数&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;该策略涉及的参数有：&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit&quot;&gt;key_cache_division_limit&lt;/a&gt;、&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_age_threshold&quot;&gt;key_cache_age_threshold&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 原理介绍&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;(1)	该策略将前面的LRU队列（LRU Chain）分成两部分，hot sub-chain和warm sub-chain。并根据参数key_cache_division_limit划分，总保持warm sub-chain在这个百分比以上。默认情况key_cache_division_limit是100，所以默认时候只有warm sub-chain,即LRU Chain。&lt;br /&gt;
(注：Multiple Key cache情况，每个key cache都有对应的key_cache_division_limit值)&lt;span id=&quot;more-1263&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;(2)	在warm sub-chain中的某个block如果被访问（Access）次数超过某个值时候，就将该block放到hot sub-chain的底部。&lt;/p&gt;
&lt;p&gt;(3)	在hot sub-chain中的block会随着每一次的hit调整位置，hit越多，越接近底部。在顶部停留时间过长就会被降级到warm sub-chain中，而且是warm sub-chain的顶部（很可能很快就会被移出key cache）。&lt;/p&gt;
&lt;p&gt;(4)	Hot sub-chain中的顶部的block停留时间超过一个阈值后就会被降级到warm sub-chain。这个阈值由参数key_cache_age_threshold决定。具体的计算方法是：设N为key cache中的block个数，如果在最近的（N*key_cache_age_threshold/100）次访问中，key cache顶部的block仍然没有被访问到，那么就会被移到warm sub-chain的顶部。&lt;/p&gt;
&lt;p&gt;(5)	默认情况key_cache_division_limit = 100，这时只有只有一个Chain，所以不使用该策略。即退化的Midpoint Insertion Strategy是LRU算法。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;3. 如何使用Midpoint Insertion Strategy&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;我们可以通过配置&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit&quot;&gt;key_cache_division_limit&lt;/a&gt;、&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_age_threshold&quot;&gt;key_cache_age_threshold&lt;/a&gt;的值来控制。参数&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit&quot;&gt;key_cache_division_limit&lt;/a&gt;控制了Key Cache Chain中warm sub-chain的百分比，如果你的Index Block中明显有30%是非常Hot（较之其他的Block更加被常常访问），那么你可以设置你的warm sub-chain长度为70%，剩余30%作为hot sub-chain。参数&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_age_threshold&quot;&gt;key_cache_age_threshold&lt;/a&gt;定义了warm sub-chain中的block被移除的机制（参照前文介绍）。&lt;/p&gt;
&lt;p&gt;（未完待续）&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&amp;title=详解MyISAM Key Cache(中篇)&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/myisam/&quot; rel=&quot;tag&quot;&gt;MyISAM&lt;/a&gt;, &lt;a href=&quot;http://www.orczhou.com/index.php/tag/myisam-key-buffer/&quot; rel=&quot;tag&quot;&gt;MyISAM Key Buffer&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808368/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808368/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808368/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/feed/</wfw:commentRss><description>&lt;p&gt;在&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot;&gt;前篇&lt;/a&gt;中介绍了Key Cache的基本机制，并且介绍了Key Cache的LRU算法。作为对LRU算法的改进，MyISAM还提供了另一个缓存算法：“Midpoint Insertion Strategy”。本文将重点介绍该算法的原理和配置。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 相关参数&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;该策略涉及的参数有：&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit&quot;&gt;key_cache_division_limit&lt;/a&gt;、&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_age_threshold&quot;&gt;key_cache_age_threshold&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 原理介绍&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;(1)	该策略将前面的LRU队列（LRU Chain）分成两部分，hot sub-chain和warm sub-chain。并根据参数key_cache_division_limit划分，总保持warm sub-chain在这个百分比以上。默认情况key_cache_division_limit是100，所以默认时候只有warm sub-chain,即LRU Chain。&lt;br /&gt;
(注：Multiple Key cache情况，每个key cache都有对应的key_cache_division_limit值)[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808368/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808368/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808368/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>MyISAM</category><category>MYSQL</category><category>MyISAM Key Buffer</category><pubDate>Sun, 17 Jan 2010 18:14:46 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1263</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-2/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808368/4031936</fs:itemid></item><item><title>详解MyISAM Key Cache(前篇)</title><link>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/</link><content:encoded>&lt;p&gt;本文将分为前、中、后三篇，分别介绍MyISAM Key Cache的一般机制、Mid-point strategy、状态、参数和命令。&lt;/p&gt;
&lt;p&gt;“Cache为王”，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/query-cache-1/&quot;&gt;无所不在&lt;/a&gt;。为了最小化磁盘I/O，MyISAM将最频繁访问的索引块（“index block”）都放在内存中，这样的内存缓冲区我们称之为Key Cache，它的大小可以通过参数key_buffer_size来控制。在MyISAM的索引文件中（MYI），连续的单元（contiguous unit）组成一个Block，Index block的大小等于该BTree索引节点的大小。Key Cache就是以Block为单位的。&lt;span id=&quot;more-1252&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. MyISAM如何使用Key Cache&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;当MySQL请求(读或写)MyISAM索引文件中某个Index Block时，首先会看Key Cache队列中是否已经缓存了对应block。如果有，就直接在Key Cache队列中进行读写了，不再需要请求磁盘。如果是写请求，那么Key Cache中的对应Block就会被标记为Dirty（和磁盘不一致）。在MyISAM在Key Cache成功请求（读写）某个Block后，会将该Block放到Key Cache队列的头部。&lt;/p&gt;
&lt;p&gt;如果Key Cache中没有待请求（读或写）的Block，MyISAM会向磁盘请求对应的Block，并将其放到Key Cache的队列头部。队列如果满了，会将队列尾部的Block删除，该Block如果是Dirty的，会将其Flush到磁盘上。我们看到MyISAM维护了一个LRU（Least Recently Used）的Key Cache队列。队列中的Dirty Block会在Block被踢出队列时Flush到磁盘上。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 图解&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;下图展示了访问Index Block的过程：（黑色部分为磁盘中的Index文件）&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4268165359/&quot; title=&quot;Key_Cache by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2776/4268165359_9f4e322c1f_o.png&quot; width=&quot;550&quot; height=&quot;598&quot; alt=&quot;Key_Cache&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;3. 并发访问&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Key Cache中的index Block是可以被并发访问的（Shared access ），下面是一些规则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;多个没有更新操作的session可以并发同一个block buffer&lt;/li&gt;
&lt;li&gt;多个session同时访问某一个block buffer，如果某个session是update操作，则优先访问&lt;/li&gt;
&lt;li&gt;多个session如果都需要进行block replacement，是可以并发操作。（从index file中读取block更新到key cache，但是key cache已满，需要删除一些block buffer的操作叫做block replacement）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;4. 补充说明&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Key cache中的Block大小可能和索引文件中的Index Block大小不同，可能是大于、小于、等于中的任何一种，但是一般都是成倍数关系的。Key Cache的block大小由参数&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_block_size&quot;&gt;Key_cache_block_size&lt;/a&gt;控制。&lt;/p&gt;
&lt;p&gt;（未完待续）&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/#comments&quot;&gt;2 comments&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&amp;title=详解MyISAM Key Cache(前篇)&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/myisam/&quot; rel=&quot;tag&quot;&gt;MyISAM&lt;/a&gt;, &lt;a href=&quot;http://www.orczhou.com/index.php/tag/myisam-key-buffer/&quot; rel=&quot;tag&quot;&gt;MyISAM Key Buffer&lt;/a&gt;, &lt;a href=&quot;http://www.orczhou.com/index.php/tag/%e5%9b%be%e8%a7%a3/&quot; rel=&quot;tag&quot;&gt;图解&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808369/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808369/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808369/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/feed/</wfw:commentRss><description>&lt;p&gt;本文将分为前、中、后三篇，分别介绍MyISAM Key Cache的一般机制、Mid-point strategy、状态、参数和命令。&lt;/p&gt;
&lt;p&gt;“Cache为王”，&lt;a href=&quot;http://www.orczhou.com/index.php/2009/08/query-cache-1/&quot;&gt;无所不在&lt;/a&gt;。为了最小化磁盘I/O，MyISAM将最频繁访问的索引块（“index block”）都放在内存中，这样的内存缓冲区我们称之为Key Cache，它的大小可以通过参数key_buffer_size来控制。在MyISAM的索引文件中（MYI），连续的单元（contiguous unit）组成一个Block，Index block的大小等于该BTree索引节点的大小。Key Cache就是以Block为单位的。[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808369/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808369/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808369/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>简单生活</category><category>图解</category><category>MyISAM</category><category>MyISAM Key Buffer</category><pubDate>Thu, 14 Jan 2010 10:12:40 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1252</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/01/myisam-key-buffer-1/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808369/4031936</fs:itemid></item><item><title>The “Google” strikes back</title><link>http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/</link><content:encoded>&lt;p&gt;After a &lt;a href=&quot;http://www.orczhou.com/index.php/2009/06/why-google-bloc/&quot;&gt;long war&lt;/a&gt;, I‘m glad to see that finally the &amp;#8220;Google.cn&amp;#8221; &lt;a href=&quot;http://googleblog.blogspot.com/2010/01/new-approach-to-china.html&quot;&gt;strikes back&lt;/a&gt; in spit of maybe it&amp;#8217;s a &lt;a href=&quot;http://searchengineland.com/google-says-no-to-china-censorship-33390&quot;&gt;negtive way&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since &lt;a href=&quot;http://blog.sina.com.cn/s/blog_475b3d560100erg5.html&quot;&gt;Kaifu Li&lt;/a&gt; has left &lt;a href=&quot;http://www.google.cn&quot;&gt;Google.cn&lt;/a&gt;, what&amp;#8217;s the final state of the game between Google and Chinese goverment ? &lt;/p&gt;
&lt;p&gt;Show me.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/&amp;title=The &amp;#8220;Google&amp;#8221; strikes back&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/google/&quot; rel=&quot;tag&quot;&gt;Google&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808370/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808370/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808370/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/feed/</wfw:commentRss><description>&lt;p&gt;After a &lt;a href=&quot;http://www.orczhou.com/index.php/2009/06/why-google-bloc/&quot;&gt;long war&lt;/a&gt;, I‘m glad to see that finally the &amp;#8220;Google.cn&amp;#8221; &lt;a href=&quot;http://googleblog.blogspot.com/2010/01/new-approach-to-china.html&quot;&gt;strikes back&lt;/a&gt; in spit of maybe it&amp;#8217;s a &lt;a href=&quot;http://searchengineland.com/google-says-no-to-china-censorship-33390&quot;&gt;negtive way&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since &lt;a href=&quot;http://blog.sina.com.cn/s/blog_475b3d560100erg5.html&quot;&gt;Kaifu Li&lt;/a&gt; has [......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808370/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808370/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808370/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>大千世界</category><category>Google</category><pubDate>Wed, 13 Jan 2010 11:01:23 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1266</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/01/the-google-strikes-back/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808370/4031936</fs:itemid></item><item><title>Sphinx之配置篇</title><link>http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/</link><content:encoded>&lt;p style=&quot;text-indent:0&quot;&gt;
&lt;strong&gt;作者：&lt;/strong&gt;周振兴 &lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/3933896112/&quot; title=&quot;mail by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2614/3933896112_8ebfd42177_o.png&quot; width=&quot;163&quot; height=&quot;22&quot; alt=&quot;mail&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;摘要：&lt;/strong&gt;MySQL提供了LIKE子句可以很好的实现对数据库中数据的模糊搜索，使用LIKE很多时候可以帮助我们解决一些站内搜索的问题。但是随着MySQL中数据量逐渐增加，LIKE模糊查询的效率将成为MySQL数据库的主要压力。这时候&lt;a href=&quot;http://orczhou.com/index.php/2009/08/sphinx-1/&quot;&gt;尝试使用sphinx&lt;/a&gt;，可以很好的帮你解决这个问题。本文将继续介绍具体如何部署sphinx。在阅读本文前，建议先浏览&lt;a href=&quot;http://orczhou.com/index.php/2009/08/sphinx-1/&quot;&gt;sphinx使用介绍(前篇)&lt;/a&gt;，或者跳过本文直接&lt;a href=&quot;http://www.sphinxsearch.com/docs/&quot;&gt;RTFM&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-619&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-indent:0&quot;&gt;
+++++++++++++++++++++++++++++++++&lt;br /&gt;
&lt;strong&gt;正文：&lt;/strong&gt;&lt;br /&gt;
+++++++++++++++++++++++++++++++++
&lt;/p&gt;
&lt;p style=&quot;text-indent:0&quot;&gt;&lt;font size=4&gt;&lt;b&gt;一、下载，安装&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;下载&lt;a href=&quot;http://www.sphinxsearch.com/downloads.html&quot;&gt;sphinx-0.9.8.1.tar.gz&lt;/a&gt;(在撰写本文时，0.9.8.1是最新版)&lt;/p&gt;
&lt;p&gt;安装过程够简洁，在GNU/Linux 2.6.24  Ubuntu 8.04.3 LTS:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;
tar zxvf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1
./configure    #这里你可以加上你的安装路径如：./configure --prefix=/usr/local/sphinx
make
sudo make install&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-indent:0&quot;&gt;&lt;font size=4&gt;&lt;b&gt;二、配置sphinx的数据源&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;sphinx主要有两个进程indexer和searchd，在他们运行前，我们需要配置好sphinx.conf文件，告诉他们如何工作。(默认配置文件的路径/usr/local/etc/)&lt;/p&gt;
&lt;p&gt;首先，我需要配置一个数据源(source)，告诉indexer到哪儿去获取原始数据。例如，我们将配置一个名为mars的数据源：&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;
cd /usr/local/etc/
cp sphinx.conf.dist sphinx.conf
vi sphinx.conf
source mars
{
	type = mysql
	sql_host = localhost
	sql_user = sphinxuser
	sql_pass = sI9sWb2uFYxz
	sql_db = discuzdb
	sql_sock = /var/run/mysqld/mysqld.sock
	sql_port = 3306
	……
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;这里我配置了一个名为mars的数据源。数据类型是mysql，表示indexer将从mysql中获取我要的数据(除了mysql，sphinx还支持很多种类的数据源，如文本，xml文档等)。这里还配置了访问该数据库的主机名、用户、密码、数据库名、数据库端口、以及连接该数据库的socket文件。(注意：配置文件中有一些多余的source需要删除，如source src1throttled : src1)&lt;/p&gt;
&lt;p&gt;现在indexer知道去那个数据库取数据了，但是具体取哪个数据表中的哪些列的数据呢？好，我们继续。编写需要索引的数据列的SQL，例如我需要索引字段为cdb_thread.threadtitle，那么sphinx需要用到的SQL是:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;
	sql_query = SELECT tid AS id, threadtitle FROM cdb_threads;
}
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们注意到，我们的query中一个时id字段，第二个才是我们需要索引的内容。sphinx有这样的规则，你的Query中获取的第一个字段必须是一个唯一的数字（使用自增的字段是很方便的），后面才是你需要索引的内容（另外，也可以你想排序的字段，这里暂不介绍）。&lt;/p&gt;
&lt;p&gt;到这，我们就完成了一个数据源的配置，这里的我们的数据源名字是mars（如果需要，我们还可以配置更多数据源，例如Juliet等）。&lt;/p&gt;
&lt;p style=&quot;text-indent:0&quot;&gt;&lt;font size=4&gt;&lt;b&gt;三、配置sphinx的索引任务&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;现在有了：数据源以及需要索引的内容。接下来，我们需要在配置文件中，指定一个某个索引任务去索引前面的内容。这个索引任务应该包含：数据源用哪一个、数据数据放在什么目录下、以及其他的一些索引算法的细节参数。&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;
index explorer{
	source = mars              #还记得前面建立的source吧？
	path    = /var/data/sphinx/catalog    #任务的工作空间在哪，sphinx需要一些空间建立索引
	morphology              = stem_en      #搜索的一些“词法”  我也不知道这是什么！:-(

	min_word_len            = 3   
	min_prefix_len          = 0   
	min_infix_len           = 3   
}
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-indent:0&quot;&gt;&lt;font size=4&gt;&lt;b&gt;四、sphinx搜索配置&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;最后，还剩一点点工作。那就是配置searchd，你甚至保持默认就可以了。searchd中定义了一些搜索行为，例如当搜索结果集太大的时候，最多返回多少个（默认1000），等等。&lt;/p&gt;
&lt;p&gt;搞定配置文件，98%的事情就算完成了。&lt;/p&gt;
&lt;p style=&quot;text-indent:0&quot;&gt;&lt;font size=4&gt;&lt;b&gt;五、启动、使用Sphinx&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;所有工作都已经就绪了，现在是倒计时启动的时间了。&lt;/p&gt;
&lt;p&gt;执行indexer，对数据进行一次索引。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
sudo /usr/local/bin/indexer [&amp;#45;&amp;#45;rotate] &amp;#45;&amp;#45;config /usr/local/etc/sphinx.conf explorer&lt;br /&gt;
//这里的explorer就是前面配置文件中一个索引任务
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;启动搜索相应进程（searchd）：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
sudo mkdir -p /var/data/sphinx&lt;br /&gt;
sudo /usr/local/bin/searchd &amp;#45;&amp;#45;config /usr/local/etc/sphinx.conf &amp;#038;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;好了，搞定。我们来测试一下吧：（早就迫不及待了吧）&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
例如查找字符串 “ENG”&lt;br /&gt;
sudo usr/local/bin/search &amp;#45;&amp;#45;config /usr/local/etc/sphinx.conf ENG&lt;br /&gt;
看看你的搜索结果
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;如果搜索结果正常，到这，我们就完成全部的sphinx配置和启动工作。在接下来的一篇文章中我将介绍如果使用php向sphinx发送搜索请求，并处理返回结果。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/&amp;title=Sphinx之配置篇&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/sphinx/&quot; rel=&quot;tag&quot;&gt;sphinx&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808371/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808371/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808371/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/feed/</wfw:commentRss><description>&lt;p style=&quot;text-indent:0&quot;&gt;
&lt;strong&gt;作者：&lt;/strong&gt;周振兴 &lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/3933896112/&quot; title=&quot;mail by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2614/3933896112_8ebfd42177_o.png&quot; width=&quot;163&quot; height=&quot;22&quot; alt=&quot;mail&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;摘要：&lt;/strong&gt;MySQL提供了LIKE子句可以很好的实现对数据库中数据的模糊搜索，使用LIKE很多时候可以帮助我们解决一些站内搜索的问题。但是随着MySQL中数据量逐渐增加，LIKE模糊查询的效率将成为MySQL数据库的主要压力。这时候&lt;a href=&quot;http://orczhou.com/index.php/2009/08/sphinx-1/&quot;&gt;尝试使用sphinx&lt;/a&gt;，可以很好的帮你解决这个问题。本文将继续介绍具体如何部署sphinx。在阅读本文前，建议先浏览&lt;a href=&quot;http://orczhou.com/index.php/2009/08/sphinx-1/&quot;&gt;sphinx使用介绍(前篇)&lt;/a&gt;，或者跳过本文直接&lt;a href=&quot;http://www.sphinxsearch.com/docs/&quot;&gt;RTFM&lt;/a&gt;。
&lt;/p&gt;
&lt;p&gt;[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808371/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808371/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808371/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>sphinx</category><category>技术细节</category><pubDate>Thu, 07 Jan 2010 20:33:31 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/#comments</comments><guid isPermaLink="false">http://orczhou.com/?p=619</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/01/sphinx-how-to-2/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808371/4031936</fs:itemid></item><item><title>MySQL Slow Log慢日志分析(一)</title><link>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/</link><content:encoded>&lt;p&gt;医生给病人诊断的时候，一般会使用听诊器来诊断肺部是否正常。如果你的MySQL出现了性能问题，第一个需要“诊断”的就是slow log（慢日志）了。&lt;/p&gt;
&lt;p&gt;slow log文件很小，使用more less等命令就足够了。如果slow log很大怎么办？这里介绍MySQL自带的工具mysqldumpslow来帮你解析慢日志(也可以跳过本文，直接阅读&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html&quot;&gt;Manual&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 基本使用&lt;/font&gt; &lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
$mysqldumpslow slow.log &gt; slow.dat&lt;br /&gt;
$more slow.dat
&lt;/div&gt;
&lt;p&gt;&lt;span id=&quot;more-1163&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;输出的数据：&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
Count: 3  Time=62.67s (188s)  Lock=0.00s (0s)  Rows=1623770.7 (4871312), root[root]@localhost&lt;br /&gt;
  SELECT /*!N SQL_NO_CACHE */ * FROM `feed_receive_0287`
&lt;/div&gt;
&lt;p&gt;这里我们能够获得：这条语句在满日志中的出现次数、平均执行时间、总共执行时间、row send等。例如：SELECT /*!N SQL_NO_CACHE */ * FROM `feed_receive_0287`一共执行了3次，平均每次使用62秒。&lt;/p&gt;
&lt;p&gt;在默认情况下，mysqlslowdump的输出结果会使用N和S代替SQL中出现的数字和字符串。例如：如下慢日志&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
  SELECT COUNT(*) as counter FROM feed_receive f WHERE f.RATED_UID=21621 AND f.suspended=-1 AND f.rater_type=4 AND f.rate=-2 AND f.username=&amp;#8221;orczhou.com&amp;#8221;
&lt;/div&gt;
&lt;p&gt;会被mysqlslowdump抽象为：&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
  SELECT COUNT(*) as counter FROM feed_receive f WHERE f.RATED_UID=N AND f.suspended=-N AND f.rater_type=N AND f.rate=-N AND f.username=&amp;#8221;S&amp;#8221;
&lt;/div&gt;
&lt;p&gt;如果想禁用这种抽象，可以使用-a参数&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;2. 排序参数&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;mysqlslowdump默认输出结果是按照count（SQL出现的次数）排序的。可以通过如下的参数控制：&lt;/p&gt;
&lt;style&gt;
.mytable {
border-color:#000000;
border-style:dashed;
border-width:1px 0 0 1px;
border-collapse:collapse;
margin-left:25px;
}
.mytd {
border-color:#000000;
border-style:dashed;
border-width:0 1px 1px 0;
text-align:center;
}
&lt;/style&gt;
&lt;table width=&quot;500&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; align=&quot;center&quot; class=&quot;mytable&quot;&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-s t&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按总query time排序&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;-s at&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按平均query time排序&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-s l&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按总locktime排序&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;-s al&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按平均lock time排序&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-s s&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按总row send排序&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;-s as&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按平均row send排序&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-s c&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;按count排序&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;&amp;#8211;&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;&amp;#8211;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
mysqldumpslow -s at slow.log.old &gt; slow.2.dat	#按照平均query time排序查看日志
&lt;/div&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;3. 其他参数&lt;/font&gt;&lt;/p&gt;
&lt;table width=&quot;500&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; align=&quot;center&quot; class=&quot;mytable&quot;&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-r&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;倒着排序&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-a&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;不要将数字和字符串抽象成N和S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;mytd&quot;&gt;-g&lt;/td&gt;
&lt;td class=&quot;mytd&quot;&gt;仅仅分析相匹配的query&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;4. 常用命令&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;由上面的常用参数就可以组合出如下的常用命令：&lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
mysqldumpslow -s t slow.log.old &gt; slow.1.dat	#按照query time排序查看日志&lt;br /&gt;
mysqldumpslow -s at slow.log.old &gt; slow.2.dat	#按照平均query time排序查看日志&lt;br /&gt;
mysqldumpslow -a -s at slow.log.old &gt; slow.3.dat	#按照平均query time排序并且不抽象数字的方式排序&lt;br /&gt;
mysqldumpslow -a -s c slow.log.old &gt; slow.4.dat #安装执行次数排序
&lt;/div&gt;
&lt;p&gt;参考：&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html&quot;&gt;mysqldumpslow Manual&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;（全文完）&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2010. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/#comments&quot;&gt;2 comments&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/&amp;title=MySQL Slow Log慢日志分析(一)&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/slow-log/&quot; rel=&quot;tag&quot;&gt;slow log&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808372/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808372/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808372/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/feed/</wfw:commentRss><description>&lt;p&gt;医生给病人诊断的时候，一般会使用听诊器来诊断肺部是否正常。如果你的MySQL出现了性能问题，第一个需要“诊断”的就是slow log（慢日志）了。&lt;/p&gt;
&lt;p&gt;slow log文件很小，使用more less等命令就足够了。如果slow log很大怎么办？这里介绍MySQL自带的工具mysqldumpslow来帮你解析慢日志(也可以跳过本文，直接阅读&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html&quot;&gt;Manual&lt;/a&gt;)。&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;1. 基本使用&lt;/font&gt; &lt;/p&gt;
&lt;div class=&quot;mycode&quot;&gt;
$mysqldumpslow slow.log &gt; slow.dat&lt;br /&gt;
$more slow.dat
&lt;/div&gt;
&lt;p&gt;[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808372/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808372/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808372/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>slow log</category><category>MYSQL</category><pubDate>Tue, 05 Jan 2010 20:32:36 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1163</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2010/01/mysql-slow-log-1/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808372/4031936</fs:itemid></item><item><title>WOW 2009</title><link>http://www.orczhou.com/index.php/2009/12/wow-2009/</link><content:encoded>&lt;p&gt;清晰记得刚步入2009年的时候，我的MSN签名档就是WOW 2009，转眼，一年就过去了。&lt;/p&gt;
&lt;p&gt;欣喜：来到杭州，风景何止如画； 痛苦：忙至拂晓，但为系统稳定&lt;/p&gt;
&lt;p&gt;坚持：方向正确，何惧路途荆棘； 期待：天下风景，待我尽收眼底&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4230909132/&quot; title=&quot;gushi2 by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2779/4230909132_1ebd76ef13_o.jpg&quot; width=&quot;546&quot; height=&quot;228&quot; alt=&quot;gushi2&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2009. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2009/12/wow-2009/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2009/12/wow-2009/#comments&quot;&gt;No comment&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2009/12/wow-2009/&amp;title=WOW 2009&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808373/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2009/12/wow-2009/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808373/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808373/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2009/12/wow-2009/feed/</wfw:commentRss><description>&lt;p&gt;清晰记得刚步入2009年的时候，我的MSN签名档就是WOW 2009，转眼，一年就过去了。&lt;/p&gt;
&lt;p&gt;欣喜：来到杭州，风景何止如画； 痛苦：忙至拂晓，但为系统稳定&lt;/p&gt;
&lt;p&gt;坚持：方向正确，何惧路途荆棘； 期待：天下风景，待我尽收眼底&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4230909132/&quot; title=&quot;gushi2 by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2779/4230909132_1ebd76ef13_o.jpg&quot; width=&quot;546&quot; height=&quot;228&quot; alt=&quot;gushi2&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2009. &amp;#124;
[......]&lt;/small&gt;&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2009/12/wow-2009/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808373/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2009/12/wow-2009/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808373/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808373/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>简单生活</category><pubDate>Thu, 31 Dec 2009 17:21:43 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2009/12/wow-2009/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1159</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2009/12/wow-2009/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808373/4031936</fs:itemid></item><item><title>Chrome扩展一键翻墙</title><link>http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/</link><content:encoded>&lt;p&gt;写在前头：翻墙的前提仍然是“&lt;font color=&quot;red&quot;&gt;你得有能够翻墙的代理服务器，或者自己的ssh tunnel&lt;/font&gt;”，关于如何获得这样的代理，那是&lt;a href=&quot;http://www.google.cn/search?hl=zh-CN&amp;#038;newwindow=1&amp;#038;q=%E7%BF%BB%E5%A2%99%E4%BB%A3%E7%90%86+ssh&amp;#038;btnG=Google+%E6%90%9C%E7%B4%A2&amp;#038;aq=f&amp;#038;oq=&quot;&gt;另一个故事&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;正文：尝试过IE、Friefox、Opera、Chrome浏览器之后，最终被Chrome的快速、简洁征服。现在浏览网站，90%的时候使用Chrome。还有10%我不得不使用其他的浏览器：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;偶尔的网页前端开发时，我不得不使用Firefox（Fire Bug等扩展）&lt;/li&gt;
&lt;li&gt;网页有ActiveX控件的时候，我不得不用IE（也可以使用Firefox的IE Tab）&lt;/li&gt;
&lt;li&gt;某些网站的Html对Chrome支持不好的时候，我也不得不使用IE，不过最近一年这种情况越来越少了&lt;/li&gt;
&lt;li&gt;快速翻墙的时候，我也会使用Firefox（Foxy proxy扩展），虽然其他的浏览器也可以使用代理，但是都不能自动匹配URL使用代理，而且设置起来都很麻烦&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4203184510/&quot; title=&quot;fengtianxia by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2630/4203184510_e4abb01475_o.jpg&quot; width=&quot;574&quot; height=&quot;130&quot; alt=&quot;fengtianxia&quot; /&gt;&lt;/a&gt;&lt;span id=&quot;more-1115&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Chrome的最新&lt;a href=&quot;http://www.google.com/landing/chrome/beta/&quot;&gt;Beta版本&lt;/a&gt;已经可以支持扩展了（稳定版目前只能支持主题扩展），登录&lt;a href=&quot;https://chrome.google.com/extensions/&quot;&gt;Chrome扩展页面&lt;/a&gt;，搜索了一下&amp;#8221;firebug&amp;#8221;、&amp;#8221;Proxy&amp;#8221;、&amp;#8221;IE Tab&amp;#8221;都有了相应的扩展。如果使用方便，上面的(1)、(2)、(4)三种情况就可以解决了。&lt;/p&gt;
&lt;p&gt;书归正传，还是来说说如何使用Chrome的&lt;a href=&quot;https://chrome.google.com/extensions/detail/caehdcpeofiiigpdhbabniblemipncjj&quot;&gt;Switchy!&lt;/a&gt;扩展（&lt;font color=&quot;red&quot;&gt;当然，你得有能够翻墙的代理服务器，或者自己的ssh tunnel&lt;/font&gt;）。一般使用IE（或者当前稳定版的Chrome）时，如果你想翻墙的话，打开和关闭代理操作是很繁琐的。Chrome的Switchy!扩展则实现了一键设置和取消代理，翻墙更轻松。&lt;/p&gt;
&lt;p&gt;1.下载&lt;a href=&quot;http://www.google.com/landing/chrome/beta/&quot;&gt;Chrome Beta&lt;/a&gt;版&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4198988991/&quot; title=&quot;Google Chrome Beta by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2695/4198988991_0e3d9f665b_o.png&quot; width=&quot;299&quot; height=&quot;105&quot; alt=&quot;Google Chrome Beta&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;点击下载后，Chrome会自动完成安装，并提示重新启动chrome。在新的Chrome首页有如下提示：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4199002311/&quot; title=&quot;Google Chrome Beta II by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2545/4199002311_6906b98135_o.png&quot; width=&quot;428&quot; height=&quot;46&quot; alt=&quot;Google Chrome Beta II&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【靠，升级后原来的主题又没了！！！装上&lt;a href=&quot;https://tools.google.com/chrome/intl/pt/themes/theme_grass.html&quot;&gt;主题&lt;/a&gt;先。(另外，书签同步也是个好东西)】&lt;/p&gt;
&lt;p&gt;2.进入&lt;a href=&quot;https://chrome.google.com/extensions/detail/caehdcpeofiiigpdhbabniblemipncjj&quot;&gt;Switchy!&lt;/a&gt;扩展页面，并点击Install。下载完成后，Chrome会弹出对话框“确定安装”，安装后会自动跳转到一个Switchy!的配置页面。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4203148942/&quot; title=&quot;Google Chrome Beta IIII by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2711/4203148942_5058f2cc97_o.jpg&quot; width=&quot;432&quot; height=&quot;329&quot; alt=&quot;Google Chrome Beta IIII&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上图是我的代理配置。参照此，填写你的代理配置，然后点击Save就可以了。安装Switchy!后，在你的Chrome浏览器右上角就会多了一个小图标，如下图：&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4199821088/&quot; title=&quot;SwitchyIII by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2694/4199821088_678676d933_o.png&quot; width=&quot;555&quot; height=&quot;192&quot; alt=&quot;SwitchyIII&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通过该图标，你就可以自由的控制什么时候使用代理，什么时候禁用了。虽然没有Firefox的FoxyProxy自动匹配URL方便，但比起每次手动修改还是好多了。&lt;/p&gt;
&lt;p&gt;(全文完)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;small&gt;© orczhou for &lt;a href=&quot;http://www.orczhou.com&quot;&gt;一个故事@MySQL DBA&lt;/a&gt;, 2009. |
&lt;a href=&quot;http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/&quot;&gt;Permalink&lt;/a&gt; |
&lt;a href=&quot;http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/#comments&quot;&gt;13 comments&lt;/a&gt; |
Add to
&lt;a href=&quot;http://del.icio.us/post?url=http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/&amp;title=Chrome扩展一键翻墙&quot;&gt;del.icio.us&lt;/a&gt;
&lt;br/&gt;
Post tags: &lt;a href=&quot;http://www.orczhou.com/index.php/tag/chrome/&quot; rel=&quot;tag&quot;&gt;Chrome&lt;/a&gt;&lt;br/&gt;
&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Feed enhanced by &lt;a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'&gt;Better Feed&lt;/a&gt; from  &lt;a href='http://planetozh.com/blog/'&gt;Ozh&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808374/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808374/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808374/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/feed/</wfw:commentRss><description>&lt;p&gt;写在前头：翻墙的前提仍然是“&lt;font color=&quot;red&quot;&gt;你得有能够翻墙的代理服务器，或者自己的ssh tunnel&lt;/font&gt;”，关于如何获得这样的代理，那是&lt;a href=&quot;http://www.google.cn/search?hl=zh-CN&amp;#038;newwindow=1&amp;#038;q=%E7%BF%BB%E5%A2%99%E4%BB%A3%E7%90%86+ssh&amp;#038;btnG=Google+%E6%90%9C%E7%B4%A2&amp;#038;aq=f&amp;#038;oq=&quot;&gt;另一个故事&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;正文：尝试过IE、Friefox、Opera、Chrome浏览器之后，最终被Chrome的快速、简洁征服。现在浏览网站，90%的时候使用Chrome。还有10%我不得不使用其他的浏览器：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;偶尔的网页前端开发时，我不得不使用Firefox（Fire Bug等扩展）&lt;/li&gt;
&lt;li&gt;网页有ActiveX控件的时候，我不得不用IE（也可以使用Firefox的IE Tab）&lt;/li&gt;
&lt;li&gt;某些网站的Html对Chrome支持不好的时候，我也不得不使用IE，不过最近一年这种情况越来越少了&lt;/li&gt;
&lt;li&gt;快速翻墙的时候，我也会使用Firefox（Foxy proxy扩展），虽然其他的浏览器也可以使用代理，但是都不能自动匹配URL使用代理，而且设置起来都很麻烦&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/26825745@N06/4203184510/&quot; title=&quot;fengtianxia by orczhou, on Flickr&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2630/4203184510_e4abb01475_o.jpg&quot; width=&quot;574&quot; height=&quot;130&quot; alt=&quot;fengtianxia&quot; /&gt;&lt;/a&gt;[......]&lt;/p&gt;&lt;p class='read-more'&gt;&lt;a href='http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/'&gt;继续阅读&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/328808374/orczhou/feedsky/s.gif?r=http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/orczhou/328808374/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/orczhou/328808374/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>大千世界</category><category>Chrome</category><pubDate>Mon, 21 Dec 2009 19:18:02 +0800</pubDate><author>orczhou</author><comments>http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/#comments</comments><guid isPermaLink="false">http://www.orczhou.com/?p=1115</guid><dc:creator>orczhou</dc:creator><fs:srclink>http://www.orczhou.com/index.php/2009/12/google-chrome-gfw/</fs:srclink><fs:srcfeed>http://www.orczhou.com/?feed=rss2</fs:srcfeed><fs:itemid>feedsky/orczhou/~5903491/328808374/4031936</fs:itemid></item></channel></rss>