一门从业4年都没能用上的优化技术

 

背景

  对于一个oltp系统,一段时候之后页面(page)上就会出现“空穴”;通俗点来讲,比如一个页面本来可以保存600行记录了,但是由于行与行

  之间出现了“空穴”(一种出现空穴的可能是:之前这个位置上存在的行被删除掉了,这个空间被标记成可复用),也就是说行与行不再是紧密

  的排列在一起;这样的话,一来这会占用过多的磁盘空间,二来会对查询性能有一点的影响。

 

怎么办

  按官方的说法DBA有三种方式可以让行重新排一下 

  方法一:

alter table t engine=innodb;

  方法二:

alter table t force;

  方法三:

  1):把表的数据dump出来、2):删除表 3):把数据import进去

 

 

为什么这么点小事还要记一下

  在这之前我知道的就是方法一 和 方法三,还是第一次看到"alter table t force"这样的写法!这里还是记一下要不然哪天看到了吓到自己。

  工作这么久还没有遇到过哪个问题是通过上面的方式解决的,我感觉主要原因有两个 a): 在面对一个问题时“原因”是不是由“页面空穴”引

  起的,这个比较难回答;没有好的方式去量化这个原因的影响。 a): 还没有被逼到这一步问题就已经解决了,也就是说就算这个问题有影响

  通常也不是主要矛盾!

 

 

 

---

posted on 2018-12-14 17:02  蒋乐兴的技术随笔  阅读(514)  评论(5编辑  收藏  举报

导航