加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL删除操作其实是假删除

发布时间:2019-05-31 15:19:51 所属栏目:编程 来源:谭小谭啊
导读:在 InnoDB 中,你的 delete 操纵,并不会真的把数据删除,mysql 现实上只是给删除的数据打了个标志,标志为删除,因此你行使 delete 删除表中的数据,表文件在磁盘上所占空间不会变小,我们这里临时称之为假删除。 上面这个是结论,我们可以通过一个例子来

以是你想想,假如一个表上存在大量的数据朴陋,本来只需一个数据页就生涯的数据,因为被许多朴陋占用了空间,不得不必要增进其他的数据页来生涯数据,响应的,mysql 在查询沟通数据的时辰,就不得不增进磁盘 IO 操纵,从而影响查询速率。

着实不只仅是删除操纵会造成数据朴陋,插入和更新同样也会造成朴陋,这里就不细说了,你知道就行。

因此,一个数据表在颠末大量频仍的增编削之后,不免会发生数据朴陋,挥霍空间并影响查询服从,凡是在出产情形中会直接示意为本来很快的查询会变得越来越慢。

对付这种环境,我们凡是可以行使下面这个呼吁就能办理数据朴陋题目。

  1. optimize table t 

这个呼吁的道理就是重建表,就是成立一个姑且表 B,然后把表 A(存在数据朴陋的表) 中的全部数据查询出来,接着把数据所有从头插入到姑且表 B 中,最后再用姑且表 B 替代表 A 即可,这就是重建表的进程。

我们再来试验一下,看看结果。

  1. mysql> optimize table t; 
  2. +--------+----------+----------+-------------------------------------------------------------------+ 
  3. | Table  | Op       | Msg_type | Msg_text                                                          | 
  4. +--------+----------+----------+-------------------------------------------------------------------+ 
  5. | test.t | optimize | note     | Table does not support optimize, doing recreate + analyze instead | 
  6. | test.t | optimize | status   | OK                                                                | 
  7. +--------+----------+----------+-------------------------------------------------------------------+ 
  8. 2 rows in set (0.39 sec) 
  9.  
  10. mysql> use information_schema; 
  11. Reading table information for completion of table and column names 
  12. You can turn off this feature to get a quicker startup with -A 
  13.  
  14. Database changed 
  15. mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') from tables where table_schema='test' AND table_name='t'; 
  16. +-------------------------------------------------+ 
  17. | concat(round(sum(DATA_LENGTH/1024/1024),2),'M') | 
  18. +-------------------------------------------------+ 
  19. | 0.02M                                           | 
  20. +-------------------------------------------------+ 
  21. 1 row in set (0.00 sec) 

可以看到表文件巨细已经酿成 0.02M了,声名表空间被开释了,这个 0.02M 应该是界说表布局文件的巨细了。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读