<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>评论：InnoDB之Dirty page、Redo log</title>
	<atom:link href="http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/</link>
	<description>一个故事@MySQL DBA</description>
	<lastBuildDate>Tue, 17 Jan 2012 07:17:56 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>来自：orczhou</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-3506</link>
		<dc:creator>orczhou</dc:creator>
		<pubDate>Tue, 03 Jan 2012 06:00:03 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-3506</guid>
		<description>@楼上，只刷日志的。数据的刷新是另外的线程做，不是同步的。脏页的刷新有很多的触发条件，innodb_max_dirty_pages_pct就是其中的一个触发条件。</description>
		<content:encoded><![CDATA[<p>@楼上，只刷日志的。数据的刷新是另外的线程做，不是同步的。脏页的刷新有很多的触发条件，innodb_max_dirty_pages_pct就是其中的一个触发条件。</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：匿名</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-3497</link>
		<dc:creator>匿名</dc:creator>
		<pubDate>Mon, 02 Jan 2012 03:08:02 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-3497</guid>
		<description>想问下innodb_flush_log_at_trx_commit =1，这个参数，如果等于1了，是立即把log_buffer刷新到log_file里，然后再写入磁盘里，还是只刷新log_file，数据要等到脏页的控制参数innodb_max_dirty_pages_pct超过这个值后，再写入磁盘？</description>
		<content:encoded><![CDATA[<p>想问下innodb_flush_log_at_trx_commit =1，这个参数，如果等于1了，是立即把log_buffer刷新到log_file里，然后再写入磁盘里，还是只刷新log_file，数据要等到脏页的控制参数innodb_max_dirty_pages_pct超过这个值后，再写入磁盘？</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：王洪泽</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-3167</link>
		<dc:creator>王洪泽</dc:creator>
		<pubDate>Mon, 17 Oct 2011 03:04:41 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-3167</guid>
		<description>谢谢，我觉得应该也是这么处理的，不过没时间看mysql的代码验证；现在也看不太懂 :)</description>
		<content:encoded><![CDATA[<p>谢谢，我觉得应该也是这么处理的，不过没时间看mysql的代码验证；现在也看不太懂 <img src='http://www.orczhou.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：orczhou</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-3145</link>
		<dc:creator>orczhou</dc:creator>
		<pubDate>Thu, 13 Oct 2011 13:08:08 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-3145</guid>
		<description>1. 被mark成delete的记录，并不应该立刻删除的，（至少需要等待该事务之前所有的事务都完成）
2. 被mark成delete的记录，InnoDB有一个专门的线程做后续的清除操作
3. “脏页”在重新flush到disk了，就认为是clean的了。OS不会处理，也不会被移除LRU。“脏页”并不表示该也无效了，只是表示该内存页与磁盘上数据页有不一致；当恢复一致后，该也又是clean了。</description>
		<content:encoded><![CDATA[<p>1. 被mark成delete的记录，并不应该立刻删除的，（至少需要等待该事务之前所有的事务都完成）<br />
2. 被mark成delete的记录，InnoDB有一个专门的线程做后续的清除操作<br />
3. “脏页”在重新flush到disk了，就认为是clean的了。OS不会处理，也不会被移除LRU。“脏页”并不表示该也无效了，只是表示该内存页与磁盘上数据页有不一致；当恢复一致后，该也又是clean了。</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：王洪泽</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-3140</link>
		<dc:creator>王洪泽</dc:creator>
		<pubDate>Thu, 13 Oct 2011 08:09:09 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-3140</guid>
		<description>想问一下，如果脏页被flush到磁盘后； 那其中的被mark成delete的记录应该不存在了。那这个脏页是否会被重置为clean？ 不会被交还给os？ 只能通过内部的lru移除该页？</description>
		<content:encoded><![CDATA[<p>想问一下，如果脏页被flush到磁盘后； 那其中的被mark成delete的记录应该不存在了。那这个脏页是否会被重置为clean？ 不会被交还给os？ 只能通过内部的lru移除该页？</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：[mysql]InnoDB Double write &#124; web开发</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-2785</link>
		<dc:creator>[mysql]InnoDB Double write &#124; web开发</dc:creator>
		<pubDate>Mon, 25 Jul 2011 06:36:15 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-2785</guid>
		<description>[...] 涉及到的概念：Buffer Pool简称BP，Dirty Page，Log file，Flush，innodb tablespace。 [...]</description>
		<content:encoded><![CDATA[<p>[...] 涉及到的概念：Buffer Pool简称BP，Dirty Page，Log file，Flush，innodb tablespace。 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：匿名</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-1877</link>
		<dc:creator>匿名</dc:creator>
		<pubDate>Thu, 31 Mar 2011 08:08:48 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-1877</guid>
		<description>谢谢楼主的解释 我现在才弄明白BP中的flush到data file是根logfile没有关系的,logfile只是起到一个backup,recovery和什么时候flush dirty page的作用</description>
		<content:encoded><![CDATA[<p>谢谢楼主的解释 我现在才弄明白BP中的flush到data file是根logfile没有关系的,logfile只是起到一个backup,recovery和什么时候flush dirty page的作用</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：orczhou</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-1874</link>
		<dc:creator>orczhou</dc:creator>
		<pubDate>Wed, 30 Mar 2011 09:56:19 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-1874</guid>
		<description>回复楼上：情况比想象的更简单，在InnoDB中update，其实是把原来的记录mark成delete，然后insert一条新纪录，并记录相应的Transaction ID，所以Dirty页面里面值有两条记录； SELECT的时候，会根据当前的Transaction ID和记录上标记的ID对比，确定是否读对应的记录。参考InnoDB MVCC</description>
		<content:encoded><![CDATA[<p>回复楼上：情况比想象的更简单，在InnoDB中update，其实是把原来的记录mark成delete，然后insert一条新纪录，并记录相应的Transaction ID，所以Dirty页面里面值有两条记录； SELECT的时候，会根据当前的Transaction ID和记录上标记的ID对比，确定是否读对应的记录。参考InnoDB MVCC</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：匿名</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-1873</link>
		<dc:creator>匿名</dc:creator>
		<pubDate>Wed, 30 Mar 2011 08:17:14 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-1873</guid>
		<description>当update mark成dirty后,这个dirty页面的值是update以后的值还是update之前的值呢?如果是之前的值,那当要再次读取数据的时候,data还在log file里面没有flush到data file里面,那select到哪去读取数据?如果是update之后的值,那么是不是commit后这个page应该是clean的而不是dirty呢?如果是clean的,又在什么情况下,dirty page的比例会达到max呢? 因为如果是那样,所有的dirtypage都会直接变成clean after commit.</description>
		<content:encoded><![CDATA[<p>当update mark成dirty后,这个dirty页面的值是update以后的值还是update之前的值呢?如果是之前的值,那当要再次读取数据的时候,data还在log file里面没有flush到data file里面,那select到哪去读取数据?如果是update之后的值,那么是不是commit后这个page应该是clean的而不是dirty呢?如果是clean的,又在什么情况下,dirty page的比例会达到max呢? 因为如果是那样,所有的dirtypage都会直接变成clean after commit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：也说快速关闭MySQL/InnoDB - 一个故事@MySQL DBA</title>
		<link>http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/#comment-1498</link>
		<dc:creator>也说快速关闭MySQL/InnoDB - 一个故事@MySQL DBA</dc:creator>
		<pubDate>Wed, 01 Dec 2010 19:09:59 +0000</pubDate>
		<guid isPermaLink="false">http://orczhou.com/?p=624#comment-1498</guid>
		<description>[...] 事实上，并不是每次关闭InnoDB都很慢的。Why？InnoDB较之MyISAM，一个重要特性是InnoDB会在内存中开辟一个Buffer Pool来存储最近访问的数据块/索引块，使得下次再次访问这个块时速度能够很快。当InnoDB对需要修改数据块的时候，会先记录修改日志，然后直接对Buffer_Pool中的数据块的操作。记录日志是顺序写，对数据块的操作是内存操作，这让InnoDB在很多场景下有这很好的速度优势。 [...]</description>
		<content:encoded><![CDATA[<p>[...] 事实上，并不是每次关闭InnoDB都很慢的。Why？InnoDB较之MyISAM，一个重要特性是InnoDB会在内存中开辟一个Buffer Pool来存储最近访问的数据块/索引块，使得下次再次访问这个块时速度能够很快。当InnoDB对需要修改数据块的时候，会先记录修改日志，然后直接对Buffer_Pool中的数据块的操作。记录日志是顺序写，对数据块的操作是内存操作，这让InnoDB在很多场景下有这很好的速度优势。 [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

