

# Funciones de Base de datos ilimitada de Aurora PostgreSQL
<a name="limitless-monitoring-functions"></a>

En la tabla siguiente se muestran las nuevas funciones de Base de datos ilimitada de Aurora PostgreSQL.

**nota**  
Las funciones enumeradas en esta tabla se encuentran en el esquema `rds_aurora`. Cuando utilice una función de Base de datos ilimitada, asegúrese de incluir el nombre del objeto totalmente cualificado: `rds_aurora`.`object_name`.


| Función de Base de datos ilimitada de Aurora PostgreSQL | Función de Aurora PostgreSQL correspondiente | 
| --- | --- | 
| [limitless\$1backend\$1dsid](#limitless_backend_dsid) | pg\$1backend\$1pid | 
| [limitless\$1cancel\$1session](#limitless_cancel_session) | pg\$1cancel\$1backend | 
| [limitless\$1stat\$1clear\$1snapshot](#limitless_stat_clear_snapshot) | pg\$1stat\$1clear\$1snapshot | 
| [limitless\$1stat\$1database\$1size](#limitless_stat_database_size) | pg\$1database\$1size | 
| [limitless\$1stat\$1get\$1snapshot\$1timestamp](#limitless_stat_get_snapshot_timestamp) | pg\$1stat\$1get\$1snapshot\$1timestamp | 
| [limitless\$1stat\$1prepared\$1xacts](#limitless_stat_prepared_xacts) | pg\$1prepared\$1xacts | 
| [limitless\$1stat\$1relation\$1sizes](#limitless_stat_relation_sizes) | pg\$1indexes\$1size, pg\$1relation\$1size, pg\$1table\$1size, pg\$1total\$1relation\$1size | 
| [limitless\$1stat\$1reset](#limitless_stat_reset) | pg\$1stat\$1reset | 
| [limitless\$1stat\$1statements\$1reset](#limitless_stat_statements_reset) | pg\$1stat\$1statements\$1reset | 
| [limitless\$1stat\$1system\$1waits](#limitless_stat_system_waits) | aurora\$1stat\$1system\$1waits | 
| [limitless\$1terminate\$1session](#limitless_terminate_session) | pg\$1terminate\$1backend | 
| [limitless\$1wait\$1report](#limitless_wait_report) | aurora\$1wait\$1report | 

Los siguientes ejemplos proporcionan detalles sobre las funciones de Base de datos ilimitada de Aurora PostgreSQL. Para obtener más información acerca de las funciones de PostgreSQL, consulte [Functions and operators](https://www.postgresql.org/docs/15/functions.html) en la documentación de PostgreSQL.

**limitless\$1backend\$1dsid**  
La función `limitless_backend_dsid` devuelve el ID de la sesión actual distribuido. Una sesión distribuida se ejecuta en un enrutador de un grupo de particiones de base de datos e implica procesos de backend en una o más particiones del grupo de particiones de base de datos.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_backend_dsid`.  

```
SELECT rds_aurora.limitless_backend_dsid();

limitless_backend_dsid
------------------------
8CACD7B04D0FC2A5
(1 row)
```

**limitless\$1cancel\$1session**  
La función `limitless_cancel_session` es similar a `pg_cancel_backend`, pero intenta cancelar todos los procesos de backend relacionados con el ID de sesión distribuido proporcionado mediante el envío de una `SIGINT` (señal de interrupción).  
El parámetro de entrada es el siguiente:  
+ `distributed_session_id` (texto): es el ID de la sesión distribuida que se va a cancelar.
Los parámetros de salida son los siguientes:  
+ `subcluster_id` (texto): es el ID del subclúster al que pertenece este proceso.
+ `pid` (texto): es el ID del proceso de backend.
+ `success` (booleano): indica si la cancelación se ha realizado correctamente.
El siguiente ejemplo muestra cómo utilizar la función `limitless_cancel_session`.  

```
SELECT * FROM rds_aurora.limitless_cancel_session('940CD5C81E3C796B');

 subcluster_id |  pid  | success
---------------+-------+---------
             1 | 26920 | t
(1 row)
```

**limitless\$1stat\$1clear\$1snapshot**  
La función `limitless_stat_clear_snapshot` descarta la instantánea actual de las estadísticas o la información almacenada en caché en todos los nodos.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_clear_snapshot`.  

```
SELECT rds_aurora.limitless_stat_clear_snapshot();
```

**limitless\$1stat\$1database\$1size**  
La función `limitless_stat_database_size` devuelve los tamaños de una base de datos del grupo de particiones de base de datos.  
El parámetro de entrada es el siguiente:  
+ `dbname` (nombre): es la base de datos de la que se van a obtener los tamaños.
Los parámetros de salida son los siguientes:  
+ `subcluster_id` (texto): es el ID del subclúster al que pertenece este proceso.
+ `subcluster_type` (texto): es el tipo de subclúster al que pertenece este proceso: `router` o `shard`.
+ `db_size`: es el tamaño de la base de datos de este subclúster en bytes.
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_database_size`.  

```
SELECT * FROM rds_aurora.limitless_stat_database_size('postgres_limitless');

 subcluster_id | subcluster_type | db_size
---------------+-----------------+----------
             1 | router          |  8895919
             2 | router          |  8904111
             3 | shard           | 21929391
             4 | shard           | 21913007
             5 | shard           | 21831087
(5 rows)
```

**limitless\$1stat\$1get\$1snapshot\$1timestamp**  
La función `limitless_stat_get_snapshot_timestamp` devuelve la marca de tiempo de la instantánea actual de las estadísticas o `NULL` si no se ha realizado ninguna instantánea de estadísticas. Se toma una instantánea la primera vez que se accede a las estadísticas acumuladas de una transacción si `stats_fetch_consistency` se establece en `snapshot`. Devuelve una vista consolidada de las marcas temporales de las instantáneas de todos los nodos. Las columnas `subcluster_id` y `subcluster_type` muestran de qué nodo provienen los datos.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_get_snapshot_timestamp`.  

```
SELECT * FROM rds_aurora.limitless_stat_get_snapshot_timestamp();

 subcluster_id | subcluster_type | snapshot_timestamp
---------------+-----------------+--------------------
             1 | router          | 
             2 | router          | 
             3 | shard           | 
             4 | shard           | 
             5 | shard           | 
(5 rows)
```

**limitless\$1stat\$1prepared\$1xacts**  
La función `limitless_stat_prepared_xacts` devuelve información sobre las transacciones de todos los nodos que están actualmente preparados para la confirmación en dos fases. Para más información, consulte [pg\$1prepared\$1xacts](https://www.postgresql.org/docs/current/view-pg-prepared-xacts.html) en la documentación de PostgreSQL.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_prepared_xacts`.  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_stat_prepared_xacts;

 subcluster_id | subcluster_type | transaction_id |             gid              |           prepared            |  owner_id  |    database_id
---------------+-----------------+----------------+------------------------------+-------------------------------+------------+--------------------
 8             | shard           |        5815978 | 7_4599899_postgres_limitless | 2024-09-03 15:51:17.659603+00 | auroraperf | postgres_limitless
 12            | shard           |        4599138 | 7_4599899_postgres_limitless | 2024-09-03 15:51:17.659637+00 | auroraperf | postgres_limitless
(2 rows)
```

**limitless\$1stat\$1relation\$1sizes**  
La función `limitless_stat_relation_sizes` devuelve tamaños distintos de una tabla del grupo de particiones de base de datos.  
Los parámetros de entrada son los siguientes:  
+ `relnspname` (nombre): es el nombre del esquema que contiene la tabla.
+ `relname` (nombre): es el nombre de la tabla.
Los parámetros de salida son los siguientes:  
+ `subcluster_id` (texto): es el ID del subclúster al que pertenece este proceso.
+ `subcluster_type` (texto): es el tipo de subclúster al que pertenece este proceso: `router` o `shard`.
+ `main_size`: es el tamaño en bytes de la bifurcación de datos principal de este nodo.
+ `fsm_size`: es el tamaño en bytes del mapa del espacio libre de la tabla de este nodo.
+ `vm_size`: es el tamaño en bytes del mapa de visibilidad de la tabla de este nodo.
+ `init_size`: es el tamaño en bytes de la inicialización de la tabla en este nodo.
+ `toast_size`: es el tamaño en bytes de la tabla de TOAST asociada a la tabla de esta bifurcación.
+ `index_size`: es el tamaño en bytes de todos los índices de la tabla en este nodo.
+ `total_size`: es el tamaño en bytes de todos los segmentos de la tabla en este nodo.
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_relation_sizes` (se han omitido algunas columnas).  

```
SELECT * FROM rds_aurora.limitless_stat_relation_sizes('public','customers');

 subcluster_id | subcluster_type | main_size | fsm_size | vm_size | toast_size | table_size | total_size
---------------+-----------------+-----------+----------+---------+------------+------------+------------
             1 | router          |         0 |        0 |       0 |          0 |          0 |          0
             2 | router          |         0 |        0 |       0 |          0 |          0 |          0
             3 | shard           |   4169728 |  4177920 | 1392640 |    1392640 |   11132928 |   11132928
             4 | shard           |   4169728 |  4177920 | 1392640 |    1392640 |   11132928 |   11132928
             5 | shard           |   3981312 |  4227072 | 1409024 |    1409024 |   11026432 |   11026432
(5 rows)
```

**limitless\$1stat\$1reset**  
La función `limitless_stat_reset` restablece todos los contadores de estadísticas de la base de datos actual a cero (0). Si `track_functions` está activado, la columna `stats_reset` de `limitless_stat_database` mostrará la última vez que se restablecieron las estadísticas de la base de datos. De forma predeterminada, solo un superusuario puede ejecutar `limitless_stat_reset`. Se puede conceder permiso a otros usuarios con el privilegio `EXECUTE`.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_reset`.  

```
SELECT tup_inserted, tup_deleted FROM pg_stat_database
WHERE datname = 'postgres_limitless';

 tup_inserted | tup_deleted
--------------+-------------
          896 |           0
(1 row)

SELECT rds_aurora.limitless_stat_reset();

limitless_stat_reset
---------------------
(1 row)

SELECT tup_inserted, tup_deleted FROM pg_stat_database
WHERE datname = 'postgres_limitless';

tup_inserted | tup_deleted
-------------+-------------
           0 |           0
(1 row)
```

**limitless\$1stat\$1statements\$1reset**  
La función `limitless_stat_statements_reset` descarta las estadísticas recopiladas hasta el momento por `limitless_stat_statements` correspondientes a los parámetros `username`, `dbname`, `distributed_query_id` y `queryid` especificados. Si no se especifica alguno de los parámetros, se utiliza el valor predeterminado `""` o `0` (no válido) para cada uno de ellos y se restablecen las estadísticas que coincidan con otros parámetros. Si no se especifica ningún parámetro, o si todos los parámetros especificados son `""` o `0` (no son válidos), la función descarta todas las estadísticas. Si se descartan todas las estadísticas de la vista `limitless_stat_statements`, la función también restablece las estadísticas de la vista `limitless_stat_statements_info`.  
Los parámetros de entrada son los siguientes:  
+ `username` (nombre): es el usuario que ha consultado la instrucción.
+ `dbname` (nombre): es la base de datos en la que se ha ejecutado la consulta.
+ `distributed_query_id` (bigint): es el ID de la consulta principal del nodo coordinador. Esta columna es `NULL` si se trata de la consulta principal. El nodo coordinador envía el ID de consulta distribuida a los nodos participantes. Por lo tanto, para los nodos participantes, los valores del ID de consulta distribuida y del ID de consulta son diferentes.
+ `queryid` (bigint): es el ID de consulta de la instrucción.
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_statements_reset` para restablecer todas las estadísticas recopiladas por `limitless_stat_statements`.  

```
SELECT rds_aurora.limitless_stat_statements_reset();
```

**limitless\$1stat\$1system\$1waits**  
La función `limitless_stat_system_waits` devuelve una vista consolidada de los datos de los eventos de espera de `aurora_stat_system_waits`, que informa de la actividad de espera en todo el sistema en una instancia, desde todos los nodos. Las columnas `subcluster_id` y `subcluster_type` muestran de qué nodo provienen los datos.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_stat_system_waits`.  

```
postgres_limitless=> SELECT *
FROM rds_aurora.limitless_stat_system_waits() lssw, pg_catalog.aurora_stat_wait_event() aswe
WHERE lssw.event_id=aswe.event_id and aswe.event_name='LimitlessTaskScheduler';

 subcluster_id | subcluster_type | type_id | event_id  | waits  |  wait_time   |        event_name
---------------+-----------------+---------+-----------+--------+--------------+------------------------
             1 | router          |      12 | 201326607 | 677068 | 616942216307 | LimitlessTaskScheduler
             2 | router          |      12 | 201326607 | 678586 | 616939897111 | LimitlessTaskScheduler
             3 | shard           |      12 | 201326607 | 756640 | 616965545172 | LimitlessTaskScheduler
             4 | shard           |      12 | 201326607 | 755184 | 616958057620 | LimitlessTaskScheduler
             5 | shard           |      12 | 201326607 | 757522 | 616963183539 | LimitlessTaskScheduler
(5 rows)
```

**limitless\$1terminate\$1session**  
La función `limitless_terminate_session` es similar a `pg_terminate_backend`, pero intenta finalizar todos los procesos de backend relacionados con el ID de sesión distribuido proporcionado mediante el envío de una `SIGTERM` (señal de interrupción).  
El parámetro de entrada es el siguiente:  
+ `distributed_session_id` (texto): es el ID de la sesión distribuida que se va a finalizar.
Los parámetros de salida son los siguientes:  
+ `subcluster_id` (texto): es el ID del subclúster al que pertenece este proceso.
+ `pid` (texto): es el ID del proceso de backend.
+ `success` (booleano): indica si el proceso ha finalizado correctamente.
El siguiente ejemplo muestra cómo utilizar la función `limitless_terminate_session`.  

```
SELECT * FROM rds_aurora.limitless_terminate_session('940CD5C81E3C796B');

 subcluster_id |  pid  | success
---------------+-------+---------
             1 | 26920 | t 
(1 row)
```

**limitless\$1wait\$1report**  
La función `limitless_wait_report` devuelve la actividad del evento de espera durante un período de tiempo desde todos los nodos. Las columnas `subcluster_id` y `subcluster_type` muestran de qué nodo provienen los datos.  
Los parámetros de salida son los siguientes:  
+ `subcluster_id` (texto): es el ID del subclúster al que pertenece este proceso.
+ `subcluster_type` (texto): es el tipo de subclúster al que pertenece este proceso: `router` o `shard`.
El resto de las columnas son las mismas que en `aurora_wait_report`.  
El siguiente ejemplo muestra cómo utilizar la función `limitless_wait_report`.  

```
postgres_limitless=> select * from rds_aurora.limitless_wait_report();

 subcluster_id | subcluster_type | type_name | event_name | waits | wait_time | ms_per_wait | waits_per_xact | ms_per_xact
---------------+-----------------+-----------+------------+-------+-----------+-------------+--------------- +-------------
             1 | router          | Client    | ClientRead |    57 | 741550.14 |   13009.652 |           0.19 |    2505.237
             5 | shard           | Client    | ClientRead |    54 | 738897.68 |   13683.290 |           0.18 |    2496.276
             4 | shard           | Client    | ClientRead |    54 | 738859.53 |   13682.584 |           0.18 |    2496.147
             2 | router          | Client    | ClientRead |    53 | 719223.64 |   13570.257 |           0.18 |    2429.810
             3 | shard           | Client    | ClientRead |    54 | 461720.40 |    8550.378 |           0.18 |    1559.86
```