<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post/5124/</link>
<title><![CDATA[CHECK TABLE语法--MySql数据库,参见5.9.4节，“表维护和崩溃恢复”]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Fri, 13 Apr 2012 01:22:06 +0000</pubDate> 
<guid>http://jackxiang.com/post/5124/</guid> 
<description>
<![CDATA[ 
	Demo:<br/><textarea name="code" class="php" rows="15" cols="100">
check table db_table_name;
</textarea><br/><br/>CHECK TABLE tbl_name[,tbl_name] ... [option] ...<br/>option= &#123;QUICK &#124; FAST &#124; MEDIUM &#124; EXTENDED &#124; CHANGED&#125;<br/><br/>检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表，关键字统计数据被更新。 <br/>CHECK TABLE也可以检查视图是否有错误，比如在视图定义中被引用的表已不存在。 <br/>CHECK TABLE语句会返回一个含有以下列的表：<br/>列<br/>值<br/>Table<br/>表名称<br/>Op<br/>进行检查<br/>Msg_type<br/>状态、错误、信息或错误之一<br/>Msg_text<br/>消息<br/><br/>注意，该语句可能会为每个被检查的表产生多行信息。最后一行有一个Msg_type状态值。Msg_text通常应为OK。如果您没有得到OK，或表已经更新了，则您通常应该运行修复后的表。请参见5.9.4节，“表维护和崩溃恢复”。表已经更新了，这意味着表的存储引擎指示没有必要检查表。 http://zonghe.17xie.com/book/10001752/23108.html<br/>可以给予的不同的检查选项列于下表中。这些选项只适用于检查MyISAM表。对于InnoDB表和视图，这些选项被忽略。<br/>类型<br/>意义<br/>QUICK<br/>不扫描行，不检查错误的链接。<br/>FAST<br/>只检查没有被正确关闭的表。<br/>CHANGED<br/>只检查上次检查后被更改的表，和没有被正确关闭的表。<br/>MEDIUM<br/>扫描行，以验证被删除的链接是有效的。也可以计算各行的关键字校验和，并使用计算出的校验和验证这一点。<br/>EXTENDED<br/>对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100％一致的，但是花的时间较长。<br/><br/>如果没有指定QUICK, MEDIUM或EXTENDED选项，则对于动态格式MyISAM表，默认检查类型是MEDIUM。这与对表运行myisamchk --medium-checktbl_name的结果相同。对于静态格式MyISAM表，默认检查类型也是MEDIUM，除非CHANGED或FAST已被指定。在此情况下，默认值为QUICK。对于CHANGED和FAST，行扫描被跳过，因为行极少被破坏。 <br/>您可以组合检查选项，如下面的例子所示。该例子对表进行了一个快速检查，来查看该表是否被正确关闭：<br/>CHECK TABLE test_table FAST QUICK;<br/><br/>注释：在有些情况下，CHECK TABLE会更改表。如果表被标记为“corrupted”或“not closed properly”，则出现这种情况。但是CHECK TABLE不会找出表中的问题。在这种情况下，CHECK TABLE会把表标记为良好。 <br/>如果一个表被破坏，很有可能问题在索引中，而不在数据部分中。所有前述的检查类型都可以彻底地检查索引，因此，可以找出多数的错误。 <br/>如果您只想要检查您假定的表是良好的，您应该不使用检查选项或QUICK选项。当您时间匆忙时，应使用QUICK。QUICK无法找出数据文件中的错误的风险非常小。（在多数情况下，在正常使用中，MySQL应能在数据文件中找出错误。如果找出了错误，表被标记为“corrupted”，并不能被使用，直到修复为止。） <br/>如果您想要时常检查表，FAST和CHANGED多数情况下从原本中被使用（例如，从cron中被执行）。在多数情况下，FAST优先于CHANGED。（只有一种情况FAST不优先于CHANGED，那就是当您怀疑您在MyISAM代码中发现了错误。） <br/>当MySQL试图通过关键字更新一行或查找一行时，如果您已经运行了一个常规检查后但仍得到来自表的奇怪的错误，此时使用EXTENDED。（如果常规的检查运行成功，则基本用不着EXTENDED。） <br/>被CHECK TABLE报告的部分问题不会被自动修正： <br/>?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;发现行。此行中，auto_increment列有0值。 <br/>这意味着，您在表中有一行，该行的AUTO_INCREMENT索引列包含0值。（可以通过使用UPDATE语句，明确地把列设置为0，以创建一个AUTO_INCREMENT列为0的行。） <br/>这本身不是一个错误，但是如果您决定转储表并恢复表，或对表进行ALTER TABLE，那么会导致出现麻烦。在此情况下，AUTO_INCREMENT列会根据AUTO_INCREMENT列的结果更改值，这会导致出现问题，如重复关键字错误等。<br/>要消除警告，只需执行一个UPDATE语句，把列设置为除0以外的值。<br/>转自：http://blog.sina.com.cn/s/blog_6d62076c0100n6m1.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post/5124/#blogcomment63700</link>
<title><![CDATA[[评论] CHECK TABLE语法--MySql数据库,参见5.9.4节，“表维护和崩溃恢复”]]></title> 
<author>ahhs18ncw &lt;hgy7650@gmail.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Fri, 13 Apr 2012 16:42:28 +0000</pubDate> 
<guid>http://jackxiang.com/post/5124/#blogcomment63700</guid> 
<description>
<![CDATA[ 
	每次看帖都是觉得评论比题目经典！
]]>
</description>
</item><item>
<link>http://jackxiang.com/post/5124/#blogcomment63702</link>
<title><![CDATA[[评论] CHECK TABLE语法--MySql数据库,参见5.9.4节，“表维护和崩溃恢复”]]></title> 
<author>dsfdsfdsf &lt;4356435@qq.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 16 Apr 2012 12:29:39 +0000</pubDate> 
<guid>http://jackxiang.com/post/5124/#blogcomment63702</guid> 
<description>
<![CDATA[ 
	没有钱的日子不好过啊看来只有认识听取教训了啊
]]>
</description>
</item>
</channel>
</rss>