

# Amazon Aurora MySQL の概要
<a name="Aurora.AuroraMySQL.Overview"></a>

ここで示している各セクションで、Amazon Aurora MySQL の概要を学習できます。

**Topics**
+ [Amazon Aurora MySQL パフォーマンスの拡張](#Aurora.AuroraMySQL.Performance)
+ [Amazon Aurora MySQL と空間データ](#Aurora.AuroraMySQL.Spatial)
+ [Aurora MySQL バージョン 3 は MYSQL 8.0 との互換性があります。](AuroraMySQL.MySQL80.md)
+ [MySQL 5.7 互換 Aurora MySQL バージョン 2](AuroraMySQL.CompareMySQL57.md)

## Amazon Aurora MySQL パフォーマンスの拡張
<a name="Aurora.AuroraMySQL.Performance"></a>

Amazon Aurora には、ハイエンドな商用データベースのさまざまなニーズをサポートするパフォーマンスエクステンションがあります。

### 高速挿入
<a name="Aurora.AuroraMySQL.Performance.FastInsert"></a>

高速挿入は、プライマリキーによってソートされたパラレル挿入を加速し、特に `LOAD DATA` および `INSERT INTO ... SELECT ...` ステートメントに適用されます。高速挿入は、ステートメントの実行中にインデックストラバーサルのカーソル位置をキャッシュします。これによって、再度インデックスをトラバースする必要がなくなります。

高速挿入は、Aurora MySQL バージョン 3.03.2 以降の通常の InnoDB テーブルでのみ有効です。この最適化は、InnoDB 一時テーブルでは機能しません。Aurora MySQL バージョン 2 では、すべての 2.11 および 2.12 バージョンで無効になっています。高速挿入の最適化は、アダプティブハッシュインデックスの最適化が無効になっている場合にのみ機能します。

次のメトリクスをモニタリングして、DB クラスターに対する高速挿入の効果を判断できます。
+ `aurora_fast_insert_cache_hits`: キャッシュされたカーソルが正常に取得され検証された時に増加するカウンター。
+ `aurora_fast_insert_cache_misses`: キャッシュされたカーソルがすでに有効ではなく、Aurora が通常のインデックストラバーサルを実行したときに増加するカウンター。

次のコマンドを使用して、高速挿入メトリクスの現在の値を取得できます。

```
mysql> show global status like 'Aurora_fast_insert%';
```

以下のような出力結果が取得できます。

```
+---------------------------------+-----------+
| Variable_name                   | Value     |
+---------------------------------+-----------+
| Aurora_fast_insert_cache_hits   | 3598300   |
| Aurora_fast_insert_cache_misses | 436401336 |
+---------------------------------+-----------+
```

## Amazon Aurora MySQL と空間データ
<a name="Aurora.AuroraMySQL.Spatial"></a>

以下のリストでは、主要な Aurora MySQL 空間機能の概要を説明し、それらが MySQL の空間機能にどのように対応しているかを解説しています。
+ Aurora MySQL バージョン 2 は、MySQL 5.7 と同じ空間データ型および空間関係関数をサポートします。これらのデータ型および関数の詳細については、MySQL 5.7 のドキュメントの[空間データ型](https://dev.mysql.com/doc/refman/5.7/en/spatial-types.html)および[空間関係関数](https://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html)を参照してください。
+ Aurora MySQL バージョン 3 は、MySQL 8.0 と同じ空間データ型および空間関係関数をサポートします。これらのデータ型および関数の詳細については、MySQL 8.0 のドキュメントの[空間データ型](https://dev.mysql.com/doc/refman/8.0/en/spatial-types.html)および[空間関係関数](https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html)を参照してください。
+ Aurora MySQL は、InnoDB テーブルの空間インデックス作成をサポートします。空間インデックス作成では、空間的データのクエリにおける大規模なデータセットのクエリパフォーマンスが向上します。MySQL では、InnoDB テーブルの空間インデックス作成は MySQL 5.7 と 8.0 で使用できます。

  Aurora MySQL は、空間クエリで高度なパフォーマンスを得るために MySQL とは異なる空間インデックスの戦略を使用します。Aurora 空間インデックスの実装は、B-tree のスペースのフィルカーブを使用します。これは、R-tree よりも高度なパフォーマンスを空間範囲スキャンに提供することを目的としています。
**注記**  
Aurora MySQL では、空間リファレンス識別子 (SRID) が含まれているカラムで空間インデックスが定義されているテーブルのトランザクションを、別のトランザクションで更新するために選択されている領域に挿入することはできません。

次のデータ定義言語 (DDL) ステートメントは空間的なデータ型を使用する列にインデックスを作成するためにサポートされています。

### CREATE TABLE
<a name="Aurora.AuroraMySQL.Spatial.create_table"></a>

`SPATIAL INDEX` ステートメントの `CREATE TABLE` キーワードを使用して、空間インデックスを新しいテーブルの列に追加することができます。次に例を示します。

```
CREATE TABLE test (shape POLYGON NOT NULL, SPATIAL INDEX(shape));
```

### ALTER TABLE
<a name="Aurora.AuroraMySQL.Spatial.alter_table"></a>

`SPATIAL INDEX` ステートメントの `ALTER TABLE` キーワードを使用して、空間インデックスを既存のテーブルの列に追加することができます。次に例を示します。

```
ALTER TABLE test ADD SPATIAL INDEX(shape);
```

### CREATE INDEX
<a name="Aurora.AuroraMySQL.Spatial.create_index"></a>

`SPATIAL` ステートメントの `CREATE INDEX` キーワードを使用して、空間インデックスを既存のテーブルの列に追加することができます。次に例を示します。

```
CREATE SPATIAL INDEX shape_index ON test (shape);
```