質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.37%
MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

意見交換

クローズ

6回答

1078閲覧

MariaDBの肥大化対策

ohikazuma

総合スコア9

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

1クリップ

投稿2024/04/10 06:47

0

1

テーマ、知りたいこと

MariaDBの肥大化対策について

背景、状況

フリー(オープン)のDBを比較検討しています。

MariaDBの「肥大化対策」を調べていて…
・データベースをエクスポート(ダンプ)します
・MySQLを停止
・設定ファイを変更してテーブル単位で管理
・MySQLを起動
・データベースをインポート
の様な対策は、ネットにあるのですが、
(週1/月1の)日常的に使える「バキューム」とか「コンパクト化」の様なコマンドはあるのでしょうか?
初心者の疑問で申し訳ありません。

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

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

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

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

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

回答7

#1

m.ts10806

総合スコア80875

投稿2024/04/10 06:57

MySQL/MariaDBだとOPTIMIZE TABLEというのがあります(私はほとんど使ったことがないですが)
https://mariadb.com/kb/en/optimize-table/
紹介・検証記事:https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0035

ただ、肥大化要因は様々なので起きている現象や問題によって対策は変わってくると思います。
場合により正規化を行って移行なんかも視野。

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

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

#2

この回答は、運営により削除されました。

#3

yambejp

総合スコア116468

投稿2024/04/10 08:55

編集2024/04/10 08:56

肥大化対策

そもそも肥大化とは何を気にしているのでしょうか?

1テーブルに格納するデータが多すぎる

  • 大前提として正規化
  • 1つのテーブルを複数に分割して管理:パーティショニング

不要データを捨てる

  • 不要だと判断できる個別データは適当なタイミングで削除
  • そのうえでオプティマイズする

無駄なバイナリーログの削除

SQL

1/* 最後のデータをひろって*/ 2show master logs; 3/* purgeする */ 4purge master logs to 'mysql-bin.最後の番号';

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

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

#4

ohikazuma

総合スコア9

投稿2024/04/11 00:47

#3
お返事ありがとうございます。

「MariaDBではInnoDB テーブルが肥大化して、これを解消するには、ダンプして…」の方法しか無いのかと思いまいした。

そうですよね、
・正規化
・不要データ削除
は基本で、

デーブル毎のオプティマイズはこれでしょうか?↓
ALTER TABLE <テーブル名> ENGINE INNODB;
OPTIMIZE TABLE <テーブル名>;

そして、バイナリーログの削除。
安心しました。

それにしても「ダンプして…」の方は、日頃のメンテを放棄されていたんでしょうかね?
最終手段として有効でしょうが。(笑)

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

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

#5

yambejp

総合スコア116468

投稿2024/04/11 01:07

#4

私の環境では訳あって毎日ダンプ処理して別DBに複製をとっていますが、ダンプファイルのデータ投入はとにかく非効率で時間がかかるのでSQL文の整形は必要になります。それとその運用は大量にバイナリログを吐くので定期的に#3 のバイナリログの削除が必要です

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

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

#6

sazi

総合スコア25300

投稿2024/04/11 04:14

#4

それにしても「ダンプして…」の方は、日頃のメンテを放棄されていたんでしょうかね?

どういった記事を参考にされているのかわかりませんが、innodb_file_per_table=onでない時の話だと思います。
リカバリー後にinnodb_file_per_table=onとなっていればその後発生はしないはずです。

MySQL 5.6.6以降ではデフォルトで有効みたいなので、議論するなら前提として「ダンプして・・・」は外して良いのではないでしょうか。

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

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

#7

ohikazuma

総合スコア9

投稿2024/04/11 04:32

編集2024/04/11 04:34

#6
ありがとうございます。
とても勉強になります。

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

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

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問