日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql索引碎片产生原因_解析mysql 表中的碎片产生原因以及清理

發布時間:2025/3/15 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql索引碎片产生原因_解析mysql 表中的碎片产生原因以及清理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大量刪除數據必然會在數據文件中造成不連續的空白空間,而當插入數據時,這些空白空間則會被利用起來 。

對于不同的存儲引擎整理碎片的方式不一樣。

myisam

可以有以下方式:

mysql> show table status from test like 'testusers'G

*************************** 1. row ***************************

....

Rows: 3

Avg_row_length: 45

Data_free: 40

.....

因為在中間刪除,所以留下了空白

mysql> optimize table testusers;

+----------------+----------+----------+----------+

| Table????????? | Op?????? | Msg_type | Msg_text |

+----------------+----------+----------+----------+

| test.testusers | optimize | status?? | OK?????? |

+----------------+----------+----------+----------+

1 row in set (0.00 sec)

mysql> show table status from test like 'testusers'G

*************************** 1. row ***************************

...

Rows: 3

Avg_row_length: 32

Data_length: 96

Data_free: 0

1 row in set (0.00 sec)

在optimize后,Data_free已經變為0.碎片數據被清除。

同樣還可以用以下方式,效果和optimize一樣

./bin/mysqlcheck? -uroot -proot --socket=./tmp/mysql.sock? -o test testusers

innodb

對于innodb 使用optimize和mysqlcheck都不起作用,可以如下進行

對于小表的話直接用ALTER TABLE table_name ;回收表空間,對于大表就不能直接采用這種方式,因為會造成長時間的鎖表。可以采用新建表轉移數據,然后刪除舊表的形式,然后再重命名表。

另外有個python可以查看innodb表空間信息,可以在網上找哈,用python寫的。

總結

以上是生活随笔為你收集整理的mysql索引碎片产生原因_解析mysql 表中的碎片产生原因以及清理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。