2019年7月5日はじめに花粉症が辛い季節になりました。花粉症も困りますが、本日はMySQL関連で困って調べたことをまとめたいと思います。タイトルですが、InnoDBだとDBを再起動した際にauto_incrementが最適化されてしまうとのこと。多くの知見があるようですが、今回は実際に試してみました。5.5.9のリリースにて、最適化にてリセットされる問題は解消されたようですが、今回は試しにやってみたいと思います。準備MySQLのバージョンは5.7.14になります。wrapperとりあえず、テスト用のDBを作成します。test;ストレージエンジンの一覧を見てみます。現在はInnoDBがデフォルトですね。(というより、こんなにたくさんあるんですね。|+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+今回はInnoDBとよく比較されるMyISAMでも試したいと思います。InnoDBとMyISAMの簡単な特徴は下記になります。InnoDBはレコード単位でロックされるが、MyISAMはテーブル単位。トランザクション機能がMyISAMにはない。InnoDBはMyISAMに比べてデータサイズが大きくなる。InnoDBは更新系、MyISAMは参照系が得意。それでは実際にそれぞれのエンジンのテーブルを作成します。engine=MyISAM;実際に各テーブルのストレージエンジンはinformation_schemaに移動すれば見ることができます。|+-------------+--------+レコード作成それぞれのテーブルにレコードを作成します。|+----+とりあえず、2つレコードを削除しておきます。5);テーブル最適化それでは最適化してみます。|+------------------+----------+----------+-------------------------------------------------------------------+およ、何かメッセージがでています。TABLEとして実行されるそうです。(その通知メッセージのようです。Syntax続きましてMyISAMです。|+------------------+----------+----------+----------+それでは、再度インサートします。|+----+最適化ではやはり戻らないですね。次は再起動を試してみます。MySQL再起動それでは再起動後にインサートしてみます。(再起動前はauto_incrementの値が13でした。incrementが戻っていました。実際、テーブル情報を見ると、戻っていました。NULLCreate_options:Comment:さいごに最適化では確認できませんでしたが、再起動ではInnoDBの方はauto_incrementの値が戻っておりました。incrementのカラムをメモリ上のみに持ち、再起動のタイミングで以下で値を取得しているようです。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト上に表示された文字を入力してください。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。