0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Amazon Aurora(MySQL互換)】create tableする前に確認しておきたい設定項目まとめ

Posted at

Amazon Aurora(MySQL互換のもの)で、create tableする前に確認しておきたい設定項目をまとめました。

環境

  • Amazon Aurora:2.08.1(MySQL5.7と互換性のあるもの)

    • 「開発/テスト」用
    • DBインスタンスサイズ:db.r5.large
  • クライアントOS:Windows10

確認項目

対象DBに割り当てられている「DBクラスターのパラメータグループ」を確認します。
Amazon Aurora(MySQL5.7互換)の場合、デフォルトでは「default.aurora-mysql5.7」が割り当てられていますが、こちらの編集はできないので、DBクラスターのパラメータグループを新規作成して割り当て、編集するようにしましょう。

パラメータグループの新規作成と割り当ての方法については、
【Amazon Aurora】日本の環境で快適に使うための初期設定手順 ~ 文字コード、タイムゾーン、パブリックアクセス ~ | Qiita
の手順2, 3に記載していますので、そちらをご覧ください。

1. 文字コード

(1)設定内容に関して

日本語を扱うのであれば、「utf8」もしくは「utf8mb4」にしましょう。
両者の違いは、以下の通り。

文字コード UnicodeのSMPのサポート
(絵文字の使用などに必要)
1文字当たりのサイズ
utf8 なし 3バイト
utf8mb4 あり 4バイト

絵文字も使用する可能性が少しでもあるなら、後者を選びましょう。

(2)デフォルト値と設定値

以下の通り設定を変更します。

名前 デフォルト値
(一度も変更を適用していない場合)
設定値
character_set_client utf8mb4 utf8mb4
character_set_connection utf8mb4 utf8mb4
character_set_database latin1 utf8mb4
character_set_results utf8mb4 utf8mb4
character_set_server latin1 utf8mb4

2. タイムゾーン

(1)設定内容に関して

日本時間で使用する場合は、「time_zone」の設定値を「Asia/Tokyo」にします。

「time_zone」のデフォルト値は「SYSTEM」で、「system_time_zone」を参照することを意味し、その設定値は、日本時間より、9時間遅れている「UTC」(協定世界時)となっています。
文章だと分かりづらいので、以下の通り、表にまとめておきます。

名前 デフォルト値 内容(意味合い)
system_time_zone UTC 協定世界時(日本時間より9時間遅れ)
time_zone SYSTEM 「system_time_zone」の設定値を摘要

「system_time_zone」の変更はできないため(2020年7月24日現在)、「time_zone」を変更します。

(2)デフォルト値と設定値

上記内容を踏まえ、以下の通り設定を変更します。

名前 デフォルト値 設定値
time_zone SYSTEM Asia/Tokyo

3. デフォルトストレージエンジン

(1)設定内容に関して

create tableでエンジンを指定しなかった際に設定されるストレージエンジンです。
デフォルトでは、InnoDBになっていて、特別な理由がない限りは設定を変更しなくても大丈夫。

ちなみに、MySQLの代表的なストレージエンジンとしては以下の5種類があり、その違いは以下の通り(公式サイトより一部項目を抜粋)。

機能 MyISAM Memory InnoDB Archive NDB
Bツリーインデックス × ×
Tツリーインデックス × × × ×
全文検索インデックス × ○(note3) × ×
外部キーのサポート × × × ○(note5)
データキャッシュ × N/A ×
ストレージの制限 256Tバイト RAM 64Tバイト なし 384Eバイト
ロック粒度 テーブル テーブル
トランザクション × × ×

※○:機能あり、×:機能なし

(2)デフォルト値と設定値

ストレージエンジンにInnoDBを使用する場合は変更不要ですが、一度設定値を確認しておくようにしましょう。

名前 デフォルト値 設定値
default_storage_engine InnoDB InnoDB

4. SQLモード

(1)設定内容に関して

デフォルトでは0(設定値なし)となっています。
このままだと、「暗黙のカラム指定の変更」(create table, alter tableした際にカラムの型が指定した内容とは異なる内容に暗黙の裡に変えられてしまう事象)など、気づかないうちに意図しない変更が加えられてしまう可能性があります。
これを許容する場合はそのままで大丈夫ですが、基本的には、以下のいずれかを設定しておいたほうがよいでしょう。

設定値 内容
STRICT_ALL_TABLES すべてのストレージエンジンについて厳密モードを有効する。無効なデータ値は拒否される。
STRICT_TRANS_TABLES トランザクションストレージエンジンの厳密モードを有効にし、可能な場合は非トランザクションストレージエンジンでも有効にする。

ストレージエンジンがInnoDBの場合、トランザクションストレージエンジンに該当するので「STRICT_TRANS_TABLES」を設定しておけばOKです。

(2)デフォルト値と設定値

上記内容を踏まえ、以下の通り設定を変更します。

名前 デフォルト値 設定値
sql_mode 0 STRICT_TRANS_TABLES

(3)注意点

SQLモードは、DBパラメータグループにも同項目が存在します。
DBパラメータグループをデフォルト値から変更した場合はそちらが優先されるので、その点には注意しましょう。

参考

1. 文字コード

2. タイムゾーン

3. デフォルトストレージエンジン

4. SQLモード

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?