【求助】Delete 之後的MySQL ,其Linux HardDisk Free Space是否會增加?



贊助商連結


chengkui
2002-05-28, 04:50 PM
大家好,

我在phpmyadmin用sql 指令(delete),把某些記錄(大約十萬筆)刪除了.
可是我在linux, 用df指令檢查可用空間,發現沒有增加,反而少了.

請問為什麼呢?

謝謝!!

贊助商連結


repsol
2002-05-28, 05:43 PM
兩個辦法...你可以試試


希望對你有幫助



刪除的記錄以一個鏈接表維持並且隨後的INSERT操作再次使用老的記錄位置。為了回收閑置的空間並減小文件大小,使用OPTIMIZE TABLE語句或myisamchk實用程序重新組織表。OPTIMIZE TABLE較容易,但是myisamchk更快。




OPTIMIZE TABLE tbl_name

如果你刪除了一個表的大部分或如果你用變長的行對一個表(有VARCHAR、BLOB或TEXT列的表)做了改變,應該使用OPTIMZE TABLE。刪除的記錄以一個鏈接表維持並且隨後的INSERT操作再次使用老記錄的位置。你可以使用OPTIMIZE TABLE回收閑置的空間。

OPTIMIZE TABLE通過制作原來的表的一個臨時副本來工作。老的表子被拷貝到新表中(沒有閑置的行),然後原來的表被刪除並且重命名一個新的。這樣做使得所有更新自動轉向新的表,沒有任何失敗的更新。當時OPTIMIZE TABLE正在執行時,原來的表可被另外的客戶讀取。對表的更新和寫入延遲到新表是準備好為止。



為了組合成碎片的記錄並且消除由於刪除或更新記錄而浪費的空間, 以恢復模式運行myisamchk:

shell> myisamchk -r tbl_name

你可以用SQL的OPTIMIZE TABLE語句使用的相同方式來優化一張表,OPTIMIZE TABLE比較容易,但是myisamchk更快。也沒有在一個實用程序和服務器之間不必要的交互可能性,因為當你使用OPTIMIZE TABLE時,服務器做所有的工作。

myisamchk也有你可用來改進一個表的性能的很多其他選項:

-S, --sort-index
 
-R index_num, --sort-records=index_num
 
-a, --analyze
 

chengkui
2002-05-29, 09:29 AM
謝謝您!

其中一個方法"Optimize Table tbl_name",
可利用 phpmyadmin 完成嗎?
還是要登入 Linux 才能做?

謝謝

repsol
2002-05-29, 01:33 PM
應該可以...

我記的phpmyadmin有地方可以自行輸入sql command 去做 Optimize


登入Linux 用 command line 的方式也可以

chengkui
2002-05-30, 04:58 PM
OPTIMIZE TABLE tbl_name
可在phpmyadmin執行.



為了組合成碎片的記錄並且消除由於刪除或更新記錄而浪費的空間, 以恢復模式運行myisamchk:

shell> myisamchk -r tbl_name


myisamchk 要在那裡執行? 我登入Linux後,
執行 myisamchk -r attn
error response : File 'attn' does't exist

repsol
2002-05-30, 08:48 PM
先check 一下的db file放在那邊
有可能是
/usr/local/var/mysql
也有可能是
/var/db/mysql/下

不一定...

可以看一下你的mysql啟動的參數...就可以知道你的db file在那邊
先找出db的目錄...然後進去該目錄...就可以看到相關的table file


就在那邊執行即可....


一個table會有三個table file...
用myisamchk之前...請先詳讀一下各myisamchk參數之間的差異