【背景】
对于一个oltp系统,一段时候之后页面(page)上就会出现“空穴”;通俗点来讲,比如一个页面本来可以保存600行记录了,但是由于行与行
之间出现了“空穴”(一种出现空穴的可能是:之前这个位置上存在的行被删除掉了,这个空间被标记成可复用),也就是说行与行不再是紧密
的排列在一起;这样的话,一来这会占用过多的磁盘空间,二来会对查询性能有一点的影响。
【怎么办】
按官方的说法DBA有三种方式可以让行重新排一下
方法一:
alter table t engine=innodb;
方法二:
alter table t force;
方法三:
1):把表的数据dump出来、2):删除表 3):把数据import进去
【为什么这么点小事还要记一下】
在这之前我知道的就是方法一 和 方法三,还是第一次看到"alter table t force"这样的写法!这里还是记一下要不然哪天看到了吓到自己。
工作这么久还没有遇到过哪个问题是通过上面的方式解决的,我感觉主要原因有两个 a): 在面对一个问题时“原因”是不是由“页面空穴”引
起的,这个比较难回答;没有好的方式去量化这个原因的影响。 a): 还没有被逼到这一步问题就已经解决了,也就是说就算这个问题有影响
通常也不是主要矛盾!
---