🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

19965閲覧

MySQLで一度レコードが増えたら不要なレコードを消してもディスク容量が減らない

pokaro

総合スコア43

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

2クリップ

投稿2014/07/24 05:50

MySQL5.1を使っています。
開発環境のディスク容量が逼迫してきたので、不要なテストデータをdeleteしたのですがディスク容量が減りません。
削除に失敗したか検証するために該当レコードをSELECTしてみると確かに消えています。
MySQLが使っているディスク容量を減らすにはどうすれば良いでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

基本的に、データベースはデータの完全性、そして速度を優先して動きますので、データベース上からデータを削除してもテーブルが小さくなることはなく、あとで再利用するためにスペースが温存されます。

InnoDBの場合、データベースファイルの容量を削減するには、いったんデータベースをダンプしてファイルを削除、そしてダンプから再作成という危険かつ手間のかかる方法しかないようです(マニュアル)。

投稿2014/07/24 06:42

maisumakun

総合スコア145967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pokaro

2014/07/28 00:49

とても参考になりました!ダンプしてデータを一回削除するのはなかなか怖いですが、背に腹は変えられないのでやってみようと思います!ありがとうございました!
guest

0

maisumakunさんも書かれていますが
削除した件数がどのくらいなのかわかりませんが、innodbはレコードを削除しただけではディスク容量は減りません。
設定次第ではテーブル単位にデータを分割できるのでテーブルだけ消せば、そのテーブル分データ容量を削減できます。(innodb_file_per_table)
開発環境ということなので、一番簡単な方法としてmysqldumpなどでバックアップを取得したあとデータを全て消し、リストアすれば良いかと思います。

今後同様の現象を防ぐためにはテーブルごとにデータを分割する設定にするか、ディスクサイズの自動拡張(autoextend)をしないで固定で指定すれば良いかと思います。
(ただし、ディスク容量を増やしたときにこの上限が足かせになるかもしれませんが)

投稿2014/07/24 07:43

bluecatseye

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問