chengkui
2002-05-28, 04:50 PM
大家好,
我在phpmyadmin用sql 指令(delete),把某些記錄(大約十萬筆)刪除了.
可是我在linux, 用df指令檢查可用空間,發現沒有增加,反而少了.
請問為什麼呢?
謝謝!!
贊助商連結
我在phpmyadmin用sql 指令(delete),把某些記錄(大約十萬筆)刪除了.
可是我在linux, 用df指令檢查可用空間,發現沒有增加,反而少了.
請問為什麼呢?
謝謝!!
贊助商連結
【求助】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參數之間的差異 |
|