如何回收mysql表的片段

來源:互聯網
上載者:User

  由於操作人員大量的刪除了relationship表的資料達2千萬行,但是mysql並不自動回收空間,所以決定做磁碟重組(先測試):

  myisamchk -r relationship

  在mysql運行下做的,結果做完後查詢的時候出現下面的問題:

  ERROR 1030 (00000): Got error 127 from table handler

  這個問題很鬱悶,應該不會出現問題的呀,後來查閱資料發現了問題:

  如果你用--skip-locking運行mysqld(它在一些系統上是預設的,如Linux),當

  mysqld正在使用同一個表時,你不能可靠地使用myisamchk檢查一張表。如果你能

  肯定在你運行myisamchk時沒有人通過mysqld正在存取表,在你開始檢查表之前,

  你僅需做mysqladmin flush-tables。如果你不能保證, 那麼當你檢查表時,你必

  須停掉mysqld。如果你在mysqld正在更新表時運行myisamchk,你可能得到一個表

  已破壞的警告,即使它沒有。

  如果你沒使用--skip-locking,你能在任何時間使用myisamchk檢查表。當你這樣

  時,所有試圖更新表的客戶在繼續前將等到myisamchk就緒。

  如果你使用myisamchk修複或最佳化表,你必須總是保證mysqld伺服器不在使用表(如

  果你正在使用--skip-locking,這也適用)。如果你不停掉mysqld,在你運行

  myisamchk前,你至少應該做一個mysqladmin flush-tables。

  而我的資料庫恰好在linux下,並且是skip-locking啟動的,就出現了這個問題!

  1)這個命令也可以停止mysql後再做,就不會出現這個問題

  2)也可以線上做後重啟資料庫

  3)也可以先運行mysqladmin flush-tables後再執行這個命令,也不會出現這個問題!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.