innodb_defragment=1 でOPTIMIZEしたのに Table does not support optimizeが出る理由(MariaDB 10.2.x)

innodb_defragment=1 でOPTIMIZEしたのに Table does not support optimizeが出る理由(MariaDB 10.2.x)

SN

11/21 02:59



はじめに

職場でMariaDB 10.2.9、自宅でMariaDB 10.3.10を使っています

職場と自宅でOPTIMIZE TABLEの挙動に差異がありました


調べたいこと


MariaDB 10.2.9 で システム変数innodb_defragmentが 効かない理由
MariaDB 10.3.10 で効く理由



innodb_defragment



MariaDB 10.1.1 から導入されたシステム変数

OPTIMIZE TABLE実行時の InnoDBのデフラグ方法(コピー/インプレース)を切り替える

innodb_defragment=0 はコピー、innodb_defragment=1 はインプレース


https://mariadb.com/kb/en/library/defragmenting-innodb-tablespaces/




実行環境


MariaDB 10.2.9
MariaDB 10.3.10
InnoDB
innodb_defragment = 1



調査結果


MariaDB 10.2.6 で システム変数innodb_defragmentは一旦無効になった

→ MariaDB 10.2.9 は無効
MariaDB 10.2.10 で 再度有効になった

→ MariaDB 10.3.10 は有効


10.2.6 Release Notes

「innodb_defragmentが無効になりました」


MDEV-11336: Disabled defragmentation


10.2.10 Release Notes

「innodb_defragmentが有効になりました」


MDEV-11336 innodb_defragment was enabled



OPTIMIZE TABLE実行時の挙動


MariaDB 10.2.9

Msg_textにTable does not support optimize, doing recreate + analyze instead・OKが出力されます

ALTER TABLE tab_name ENGINE = InnoDB;(テーブルコピーをするデフラグ)が実行されます

MariaDB [test]> OPTIMIZE TABLE tb_defragment;
+--------------------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------------+----------+----------+-------------------------------------------------------------------+
| test.tb_defragment | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| test.tb_defragment | optimize | status | OK |
+--------------------+----------+----------+-------------------------------------------------------------------+



MariaDB 10.3.10

Msg_textにOKが出力されます

インプレースのデフラグが実行されます

MariaDB [test]> OPTIMIZE TABLE tb_defragment;
+--------------------+----------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------+----------+----------+----------+
| test.tb_defragment | optimize | status | OK |
+--------------------+----------+----------+----------+





バージョン途中でシステム変数が一旦無効となったことに驚きました:no_mouth:


参考文献

MariaDB 10.2.6 Release Notes - MariaDB Knowledge Base

MariaDB 10.2.10 Release Notes - MariaDB Knowledge Base

[MDEV-11336] Enable defragmentation on 10.2 when tests pass - Jira

PR:デジカフェ

Qiita - MySQLタグが付けられた新着投稿

MAMPを使ってのCakePHP環境構築備忘録

SN

12/17 15:13



前提として

・MAMP導入済み

・もしかすると違うかも(素人なんで)


第一ステップ

・PHPバージョン変更

参考

MAMPとComposerを使ったCakePHP3.xのローカル開発環境の構築

メモ:初心者とし...

MySQLが起動できない

MySQLが起動できない

SN

12/17 13:56



MySQLでエラーになるシーン

mysqlサーバーに入るときや、

$ mysql -u root


railsでmigrationを実行するとき。

$ bundle exec rake db:migrate


上記のようなコマンドを実行すると、正常に起動しない場合...

トランザクション処理を解説「初心者向け」

SN

12/17 13:29

これはユアマイスター Advent Calendar 2018の17日目の記事です。

サンプルコードを元にトランザクション処理を解説します。


サンプルコード


sample
<?php

namespace App\Controller;

use App\Controll...

MySQLでGISデータを扱う

SN

12/17 07:01

こんにちは。@onunuです。本記事はMySQL casual AdventCalendar 17日目の記事です。


本記事ではMySQL8で大幅に強化されたGISデータ周りのtipsについて触れたいと思います。ある程度尽くされた話題ではあ...

CloudSQLのIO性能を観察する(検証編)

SN

12/16 19:23



概要

前回の続き。ディスクサイズが50GB, 100GB, 200GB, 400GB, 600GBのパターンで、それぞれ負荷をかけてIO性能を観察する。

負荷のかけ方は、MySQLのLOAD DATA LOCAL INFILEで巨大なデータを読み込ませる。...

CloudSQLのIO性能を観察する(準備編)

SN

12/16 02:05



概要

CloudSQLのIO性能を観察する。CloudSQLはGCPで提供されているRDBMSのマネジメントサービス。(AWSで言うところのRDS)

CloudSQLのディスクのスループットとIOPSは、ディスクサイズで決定されるため、こ...

jQueryとPHPを使って会員登録用のフォームを作ってみた

jQueryとPHPを使って会員登録用のフォームを作ってみた

SN

12/15 21:35



概要

会員登録の際によく使われるフォームを作成してみました。具体的には、jQueryとPHPを使って、データベースにすでに登録されている場合はエラーを表示し、すべての項目が正しく入力されている場合データベ...

N+1問題をLaravelのEagerローディングで解決!

N+1問題をLaravelのEagerローディングで解決!

SN

12/15 17:42



少しだけ自己紹介

G's ACADEMYアドベントカレンダー2018 15日目!

LAB5の浅海です。現在Laravelをメインにさわっています。

ララボという小中高生向け家庭教師マッチングプラットフォームを運営してい...

[Laravel] DB更新を行うときはトランザクションに気をつけよう

SN

12/15 10:10

Laravel アドベントカレンダー2018 15日目です。

業務でLaravel書いていて、トランザクション管理されていないコード見たときに、

「あれ? Laracvelってトランザクションのコード書かないときどういう動作...

Fluentd + MySQL でログ保存 & 検索システムを考えてみた話

SN

12/15 07:02

食べログ DevOps チームの @e-ronny と申します。

この記事は Advent Calendar の15日目の投稿です。


概要

以下のようなシステムの設計を検討する機会があったので、その過程をまとめてみます。


アプリ...

CentOSにMetabaseを構築する方法

SN

12/15 03:02



構築


単純にやるならめっちゃ簡単。jar取ってきて配置して実行するだけ。

今回は、メタデータの管理DBをデフォルトのH2からMySQLに変更する。

そしてサービスとして運用する。



AP


インストール ...

使用するデータベースを変更する時

SN

12/14 18:05

自分用メモ。

rails newで新しいアプリケーションを生成したときにデフォルトのデータベースを変更するのを忘れていたため、後から修正。

Gemfileのsqliteをmysqlに書き換えるだけ

以上。

DOMAで複数列のIN句(列:条件 = n:n)を実装する。

SN

12/14 17:18



複数列のIN句???

こんなの

SELECT * FROM TEST_TBL
WHERE
(FIRST_NAME, LAST_NAME) IN (
('山田', '太郎'),
('鈴木', '次郎')
)



DOMAで実装

普通にやるとダメなのでfor文で頑...

【MySQL】作成した後のテーブルに主キーの追加

SN

12/14 15:54



何故するのか

主キーを付け忘れた

後々考えたら主キーが必要だった など


自分がこれを行うに至った状況

既に存在するテーブルについてのバックアップを2週間ほど保存しておいて

cronで物理削除を...

【MySQL】Keyのところに出る「MUL」の付け方

SN

12/14 14:34



なぜここに書くのか

前回のMySQL書き込みの際にPRIMARY KEYを後から付ける方法を書きましたが、別テーブルのユニークカラムのところに「MUL」と書いてあり、これがわからなかったため

https://qiita.com/q...

mysqlでダンプファイルからテーブルとcsvデータを読み込む方法

SN

12/14 14:25



はじめに

すでに出来上がってるデータベースに後から追加したいテーブルがある時が発生したので手順を書いていきたいと思います。


手順


ダンプファイルの読み込み

mysql -u username -p dbname < dump...

MySQL環境構築

SN

12/14 07:44



DockerでMySQL

docker-composeに挫折した。。。のでdocker runコマンドで。


MySQL5.7のインストールと起動

Docker Hub - MySQL

https://hub.docker.com/_/mysql/

docker run --name mysql57 -v /Users...

Raspberry PiをSQLサーバーにして、Python3からMySQLのデータを検索して表示させるまで

SN

12/13 23:17



はじめに

備忘録として書いてみます。


必要なパッケージを導入する


Apache2のインストール

$ sudo apt install apache2


IPアドレスを確認

$ ifconfig


IPアドレスにアクセスできればインストールでき...

JSPでデータベースを利用する(Eclipse)

SN

12/13 22:39



概要

JSPの学習をしていて、DBに接続しようとしたときに発生した例外やエラーへの対処法をまとめてみました。また、学習するにあたり、なかなかいいサンプルコードを見つけることができなかったので、最後には...

【MySQL】ソートをした際のNULLの位置について

SN

12/13 17:41



MySQLでソートをした際のNULLの位置について


table




id
name




1
aaa


2
NULL


3
bbb





昇順(NULLが上)

SELECT * FROM table ORDER BY name ASC;


実行結果:




id
name




2
NULL


1
aaa
...

PR:Amazonプライムビデオ

Qiita

Qiita - 人気の投稿

Qiita - AWSタグが付けられた新着投稿

Qiita - Gitタグが付けられた新着投稿

Qiita - Linuxタグが付けられた新着投稿

Qiita - MySQLタグが付けられた新着投稿

Qiita - nginxタグが付けられた新着投稿

Qiita - Dockerタグが付けられた新着投稿

Qiita - Pythonタグが付けられた新着投稿

Qiita - Rubyタグが付けられた新着投稿

Qiita - PHPタグが付けられた新着投稿

Qiita - Javaタグが付けられた新着投稿

Qiita - JavaScriptタグが付けられた新着投稿