

# 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)
+ [与 MySQL 8.0 兼容的 Aurora MySQL 版本 3](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 临时表。在所有 2.11 和 2.12 版本的 Aurora MySQL 版本 2 中禁用了该功能。仅在禁用自适应哈希索引优化功能时，快速插入优化才起作用。

您可监控下列指标来确定数据库集群的快速插入的有效性：
+ `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 树上使用空间填充曲线，旨在提供比 R 树更高的空间范围扫描性能。
**注意**  
在 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);
```