MySQL的optimize的效果太震惊了
今天写的一个页面,用的AJAX,但是总是感觉很慢,查看了一下消耗的时间,600ms左右,太长了,有明显的延迟感。不能这样发布啊,太慢了,于是找哪块消耗的时间最长,发现后台的一条的SQL语句很慢,大概500多ms,但是看上去那条SQL语句不会消耗太多的时间,于是想着想优化表结构,设置索引,正在想要不要做额外的索引的时候,突然想到尝试一下optimize试试看。结果用来之后,时间只有40多ms了,一下子就没有那种延迟感了,效果很明显。
回来后在网上查了一下,有段对optimize的描述:
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,
则应使用OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。
您可以使用OPTIMIZE TABLE来重新
利用未使用的空间,并整理数据文件的碎片。
在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次
即可,只对特定的表运行。
OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。
注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。
因为我那个表,里面有VARCHAR字段,而且,那个表是分了三步生成的,后期有大量的update操作,所以optimize后效果很明显。
thank you ssooooooooooooooo much…. i thought i am alone in having these feelings….
This article hit home for me in multiple ways.
How much more enjoyable to read about your journey now.
i think it’s amazing.
What a beautiful creation
hahaha!
I want to hear more, his blog is pretty cool too.
Thank you, my day was pretty cool.