

# Mantenimiento de tablas
<a name="s3-tables-maintenance"></a>

Tablas de S3 ofrece operaciones de mantenimiento para mejorar la administración y el rendimiento de las tablas individuales. Las siguientes opciones están habilitadas de forma predeterminada para todas las tablas en los buckets de las tablas. Puede editarlas o desactivarlas si especifica archivos de configuración de mantenimiento para la tabla de S3.

La edición de esta configuración requiere los permisos `s3tables:GetTableMaintenanceConfiguration` y `s3tables:PutTableMaintenanceConfiguration`.

**nota**  
Puede realizar un seguimiento de las operaciones de mantenimiento automatizadas de tablas de S3 en las tablas mediante los registros de CloudTrail; para obtener más información, consulte [Eventos de administración de CloudTrail para el mantenimiento de tablas de S3](s3-tables-logging.md#s3-tables-maintenance-events).

**Topics**
+ [Compactación](#s3-tables-maintenance-compaction)
+ [Administración de instantáneas](#s3-tables-maintenance-snapshot)
+ [Consideraciones y limitaciones](#s3-tables-considerations-see-more)

## Compactación
<a name="s3-tables-maintenance-compaction"></a>

La compactación se configura en el nivel de tabla y combina varios objetos más pequeños en menos objetos más grandes para mejorar el rendimiento de las consultas de Apache Iceberg. Cuando se combinan objetos, la compactación también aplica los efectos de eliminar filas en la tabla.

La compactación está habilitada de forma predeterminada para todas las tablas, con un tamaño de archivo de destino predeterminado de 512 MB o un valor personalizado que especifique entre 64 MB y 512 MB. Los archivos compactados se escriben como la instantánea más reciente de la tabla.

**nota**  
La compactación solo se admite en los tipos de archivo Apache Parquet, Avro y ORC.

### Estrategias de compactación
<a name="s3-tables-maintenance-compaction-strategies"></a>

Puede elegir entre varias estrategias de compactación que pueden aumentar aún más el rendimiento de las consultas en función de los patrones de consulta y del orden de clasificación de las tablas.

Tablas de S3 admite estas estrategias de compactación para tablas:
+ **Auto (valor predeterminado)**
  + Amazon S3 selecciona la mejor estrategia de compactación en función del orden de clasificación de la tabla. Esta es la estrategia de compactación predeterminada para todas las tablas.
  + Para las tablas con un orden de clasificación definido en los metadatos, `auto` aplicará automáticamente la compactación `sort`.
  + Para las tablas sin un orden de clasificación, `auto` utilizará de forma predeterminada la compactación `binpack`.
+ **Binpack**
  + Combina archivos pequeños en archivos más grandes, normalmente con un tamaño superior a 100 MB, y aplica las eliminaciones pendientes. Esta es la estrategia de compactación predeterminada para las tablas desordenadas.
+ **Ordenar**
  + Organiza los datos según columnas especificadas, que se ordenan automáticamente según la jerarquía durante la compactación, lo que mejora el rendimiento de las consultas para operaciones que aplican filtros. Esta estrategia se recomienda cuando las consultas filtran con frecuencia sobre columnas específicas. Al utilizar esta estrategia, Tablas de S3 aplica automáticamente la clasificación jerárquica de las columnas cuando se define un `sort_order` en las propiedades de la tabla.
+ **Z-order**
  + Optimiza la organización de los datos al combinar múltiples atributos en un único valor escalar que se puede utilizar para la ordenación, lo que permite consultas eficientes en varias dimensiones. Esta estrategia se recomienda cuando se necesita consultar datos en varias dimensiones simultáneamente. Esta estrategia requiere que defina un orden de clasificación en las propiedades de la tabla Iceberg utilizando la propiedad de tabla `sort_order`.

La compactación generará costos adicionales. Las estrategias de compactación `z-order` y `sort` pueden implicar un costo mayor que `binpack`. Para obtener más información, consulte la información de precios en los [precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

### Ejemplos de compactación
<a name="tables-compaction-examples"></a>

En los siguientes ejemplos se muestran configuraciones para la compactación de tablas.

**Configuración del tamaño de archivo de destino de compactación con la AWS CLI**  
El tamaño mínimo del archivo de compactación de destino es de 64 MB; el máximo es de 512 MB.  
El siguiente ejemplo cambiará el tamaño de archivo de destino a 256 MB con la API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-bucket1}} \
   --type icebergCompaction \
   --namespace {{mynamespace}} \
   --name {{testtable}} \
   --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'
```
Para obtener más información, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) en la *Referencia de comandos de la AWS CLI*.

**Configuración de la estrategia de compactación mediante la AWS CLI**  
El siguiente ejemplo cambiará la estrategia de compactación a `sort` mediante la API `PutTableMaintenanceConfiguration`. Al configurar la compactación, puede elegir entre las siguientes estrategias de compactación: `auto`, `binpack`, `sort` o `z-order`  
Para configurar la estrategia de compactación como `sort` o `z-order` necesita los siguientes requisitos previos:  
+ Un orden de clasificación definido en las propiedades de la tabla de Iceberg.
+ El permiso `s3tables:GetTableData`.

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/amzn-s3-demo-table-bucket \
   --type icebergCompaction \
   --namespace {{mynamespace}} \
   --name {{testtable}} \
   --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'
```
Para obtener más información, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) en la *Referencia de comandos de la AWS CLI*.

**Desactivación de la compactación mediante la AWS CLI**  
El siguiente ejemplo desactivará la compactación mediante la API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/amzn-s3-demo-table-bucket \
   --type icebergCompaction \
   --namespace {{mynamespace}} \
   --name {{testtable}} \
   --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'
```
Para obtener más información, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) en la *Referencia de comandos de la AWS CLI*.

## Administración de instantáneas
<a name="s3-tables-maintenance-snapshot"></a>

La administración de instantáneas determina el número de instantáneas activas para la tabla. Esto se basa en `MinimumSnapshots` (1 de forma predeterminada) y `MaximumSnapshotAge` (120 horas de forma predeterminada). La administración de instantáneas hace caducar y elimina las instantáneas de la tabla en función de estas configuraciones.

Cuando caduca una instantánea, Amazon S3 marca como no actuales todos los objetos a los que solo hace referencia esa instantánea. Estos objetos no actuales se eliminan después del número de días especificado por la propiedad `NoncurrentDays` en la política de eliminación de archivos sin referencias.

**nota**  
Las eliminaciones de objetos no actuales son permanentes y no hay forma de recuperarlos.

Para ver o recuperar objetos que se han marcado como no actuales, debe ponerse en contacto con AWS Support. Para obtener más información sobre cómo contactar con AWS Support, consulte [Contacte con AWS](https://aws.amazon.com/contact-us/) o la [Documentación de AWS Support](https://aws.amazon.com/documentation/aws-support/).

La administración de instantáneas determina los objetos que se eliminarán de la tabla con referencias solo a esa tabla. Las referencias a estos objetos de fuera de la tabla no evitarán que con la administración de instantáneas se eliminen.

**nota**  
La administración de instantáneas no admite los valores de retención que configure como propiedades de la tabla de Apache Iceberg en el archivo `metadata.json` o mediante un comando SQL `ALTER TABLE SET TBLPROPERTIES`. Si se da alguna de las siguientes condiciones, se producirá un error en la administración de instantáneas en toda la tabla y Amazon S3 no caducará ni eliminará ninguna instantánea:  
**Etiquetas o ramificaciones definidas por el usuario**: si existe alguna etiqueta o rama definida por el usuario en la tabla, se producirá un error en la administración de las instantáneas de toda la tabla. Esto se aplica incluso si la etiqueta o la ramificación tiene un periodo de retención breve. Para restablecer la caducidad automática de las instantáneas, elimine de la tabla todas las etiquetas y ramificaciones definidas por el usuario.
**Propiedades de la tabla de retención de instantáneas de Iceberg**: si la propiedad `history.expire.max-snapshot-age-ms` o `history.expire.min-snapshots-to-keep` se establece como una propiedad de tabla de Apache Iceberg, la administración de instantáneas producirá un error para toda la tabla, independientemente del valor configurado. Para restablecer la caducidad automática de las instantáneas, elimine estas propiedades:  

  ```
  ALTER TABLE {{mydb}}.{{mytable}} UNSET TBLPROPERTIES ('history.expire.max-snapshot-age-ms');
  ALTER TABLE {{mydb}}.{{mytable}} UNSET TBLPROPERTIES ('history.expire.min-snapshots-to-keep');
  ```
Para diagnosticar errores en la administración de instantáneas, utilice la API `GetTableMaintenanceJobStatus` o ejecute el comando AWS CLI siguiente. Si la administración de las instantáneas ha producido un error, la respuesta incluye un estado `FAILED` con un mensaje que describe la causa del error.  

```
aws s3tables get-table-maintenance-job-status \
    --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-table-bucket}} \
    --namespace {{my_namespace}} \
    --name {{my_table}}
```

Solo puede configurar la administración de instantáneas en el nivel de tabla. Para obtener más información, consulte la información de precios en los [precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

### Ejemplos de administración de instantáneas
<a name="tables-snapshot-examples"></a>

Los siguientes ejemplos muestran configuraciones para la administración de instantáneas de tablas.

**Configuración de la administración de instantáneas con la AWS CLI**  
En el siguiente ejemplo se establecerá `MinimumSnapshots` en 10 y `MaximumSnapshotAge` en 2500 horas mediante la API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
--table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/amzn-s3-demo-table-bucket \
--namespace {{my_namespace}} \
--name {{my_table}} \
--type icebergSnapshotManagement \
--value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
```

**Desactivación de la administración de instantáneas mediante la AWS CLI**  
El siguiente ejemplo desactivará la administración de instantáneas mediante la API `PutTableMaintenanceConfiguration`.  

```
aws s3tables put-table-maintenance-configuration \
--table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/amzn-s3-demo-table-bucket \
--namespace {{my_namespace}} \
--name {{my_table}} \
--type icebergSnapshotManagement \
--value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'
```

Para obtener más información, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html) en la *Referencia de comandos de la AWS CLI*.

## Consideraciones y limitaciones
<a name="s3-tables-considerations-see-more"></a>

Para obtener más información sobre consideraciones y límites adicionales con respecto a la compactación y la administración de instantáneas, consulte [Consideraciones y limitaciones de los trabajos de mantenimiento](s3-tables-considerations.md).

**nota**  
Tablas de S3 aplica el tamaño de grupo de filas predeterminado de parquet de 128 MB.