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

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

詳細はこちら
MySQL

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

Q&A

解決済

1回答

7832閲覧

MySQL の DELETE でレコードを消しても、DBの容量は減らないと思っていたが減っていた

oikake

総合スコア15

MySQL

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

1グッド

0クリップ

投稿2019/12/04 10:01

編集2019/12/04 10:08

ちょっと表題だけだと質問の意図が分かりづらいかもしれません。(良い言い回しが思いつかなかった)

内容としては MySQL において DELETE を実行したのですが、DBの容量が減らず、
調べてみると「MySQL の DELETE ではDBの容量は減らず、空いた分は再利用される」との情報が見つかり、
一旦減らすことは諦めて、現状維持を目的として定期的に古いレコードを削除するスクリプトを組み込みました。
※ALTER TABLE や OPTIMIZE TABLE などは実行していないです。DELETE だけです。

しかし1週間後、DBの容量を確認し見ると明らかに容量が減っており、
それ自体は良かったのですが、前情報では減らないという認識だったので戸惑っております。

このあたりの仕様ご存じの方お教えいただけないでしょうか。

なお、当方の環境としては以下のような感じです。

  • DB:MySQL 5.5
  • 削除対象のテーブルのエンジン:Innodb
  • 削除対象のテーブルの容量:200GB
  • 1日に増えるレコードの容量:500MB
  • 定期的に削除するスクリプトの仕様:30分おきに50MB分のレコードを削除

あと、以下情報を参照しました。
https://teratail.com/questions/990

take_3306👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

MySQLの書き込み(追加、変更、削除)は遅延書き込みされるチェンジバッファ機能があるので
ただちに容量が変更することはありません
適当なタイミングでテーブルを書き換えて、適切なサイズになります

投稿2019/12/04 10:13

編集2019/12/04 10:32
yambejp

総合スコア116661

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

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

oikake

2019/12/04 13:08 編集

なるほど、チェンジバッファ機能というのがあるのですね。 自分が参照した情報はMySQL5.1時代のもので、該当機能関して調べてみたら 5.5から機能みたいだったので、そこで認識の誤りを生んでしまったようです。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問