Para identificar y mitigar los problemas de rendimiento de la base de datos de AlloyDB para PostgreSQL, puedes comparar instantáneas de las métricas del sistema entre dos momentos generando informes de instantáneas de rendimiento de forma manual. Las métricas del sistema capturadas en cada instantánea incluyen el uso de CPU virtual (vCPU), el uso de memoria, la E/S de disco, el recuento de transacciones y los eventos de espera.
Instantáneas automáticas y manuales
AlloyDB admite las siguientes instantáneas:
Instantáneas automáticas: De forma predeterminada, AlloyDB captura instantáneas automáticamente una vez al día y las almacena durante 7 días. Las instantáneas automáticas ayudan a generar informes con granularidad de carga de trabajo diaria. Puedes configurar la frecuencia y la retención de una instantánea automática.
Instantáneas manuales: Puedes capturar instantáneas y generar informes de forma manual.
Puedes combinar instantáneas automáticas y manuales para generar informes de rendimiento. Por ejemplo, puedes generar un informe de instantáneas de rendimiento que compare una instantánea generada de forma manual con una instantánea automática.
En este documento, se describe cómo generar informes de instantáneas de rendimiento de forma manual.
Cómo funcionan los informes de instantáneas de rendimiento
Los informes de instantáneas de rendimiento son una herramienta integrada de AlloyDB que captura y analiza datos de rendimiento para ayudarte a identificar la causa de los problemas de rendimiento. Esta herramienta complementa otras funciones de observabilidad de AlloyDB, como las estadísticas del sistema, estadísticas de las consultas, y el Explorador de métricas, que proporcionan métricas en tiempo real sobre tu instancia.
Los informes de instantáneas de rendimiento muestran las métricas de la base de datos entre dos marcas de tiempo en un solo informe. Puedes usar la información del informe de instantáneas de rendimiento para identificar problemas de rendimiento con tu instancia de informe de instantáneas de rendimiento, como la disminución del rendimiento de la base de datos durante ciertos momentos del día o la disminución del rendimiento durante un período determinado. Cuando se usa en un nodo de grupo de lectura, el informe ayuda a identificar si el retraso de la replicación se debe a restricciones de recursos del sistema, como la CPU o la memoria, o a conflictos de consultas específicos, como los pines de búfer.
Con el informe de instantáneas de rendimiento, comparas las métricas con un modelo de referencia de rendimiento para obtener estadísticas sobre las métricas de rendimiento de la carga de trabajo, que puedes usar para optimizar o solucionar problemas de rendimiento de la base de datos. Un modelo de referencia es un conjunto personalizado de instantáneas de la base de datos que miden el rendimiento y el comportamiento estándar de una base de datos para una configuración y una carga de trabajo específicas.
Para obtener información sobre los eventos de espera en el informe de instantáneas de rendimiento, consulta Referencia del informe de instantáneas de rendimiento de la base de datos.
Roles obligatorios
Asegúrate de tener el alloydbsuperuser rol.
De forma predeterminada, AlloyDB otorga el rol pg_monitor a alloydbsuperuser. Para obtener más información, consulta
Roles predefinidos de PostgreSQL.
Si prefieres usar tus otros roles autodefinidos, primero ejecuta GRANT pg_monitor TO my_user como alloydbsuperuser. Para obtener más
información, consulta
Actualiza una cuenta de Identity and Access Management (IAM) con el rol adecuado.
Crear instantáneas
Las instantáneas de rendimiento son una herramienta eficaz para comprender y optimizar el rendimiento de tu base de datos. Capturan métricas clave del sistema en un momento específico, lo que te permite comparar el rendimiento de tu base de datos entre dos momentos. AlloyDB admite dos tipos de instantáneas:
- Instantáneas de métricas del sistema: Estas instantáneas capturan métricas clave del sistema, como el uso de vCPU, el uso de memoria y la E/S de disco.
- Instantáneas de métricas del sistema y estadísticas de ejecución de SQL: Estas instantáneas contienen todas las métricas del sistema de una instantánea estándar, además de estadísticas detalladas de ejecución de SQL de la extensión
pg_stat_statements.
Esto te brinda la flexibilidad de elegir el nivel de detalle que necesitas para tu análisis.
Crea una instantánea de las métricas del sistema
Crea una instantánea al principio y al final de la carga de trabajo que te interese. El intervalo de tiempo entre las dos instantáneas debe ser lo suficientemente largo para capturar una muestra representativa de la carga de trabajo.
Sigue estos pasos para optimizar el rendimiento de la base de datos de AlloyDB:
- Crea instantáneas de referencia cuando tu base de datos esté inactiva o cuando experimente una carga promedio.
- Conecta un cliente
psqla una instancia de AlloyDB. Para un nodo de grupo de lectura, debes conectarte directamente a su dirección IP. Para obtener más información, consulta Recupera la lista de direcciones IP de nodos del grupo de lectura. Ejecuta
SELECT perfsnap.snap(). El resultado es similar al siguiente:postgres=# select perfsnap.snap(); snap ------ 1 (1 row)El resultado de este comando devuelve el ID de instantánea (
snap_id), que es1en este ejemplo. Necesitas este ID para generar un informe de instantáneas de rendimiento más adelante. Es probable que elsnap_iden tu propio entorno sea diferente.Compara los informes que creaste con ambos conjuntos de instantáneas y, luego, identifica los cambios que podrían mejorar el rendimiento. Para obtener más información sobre las recomendaciones de rendimiento, consulta Recomendaciones de optimización del rendimiento de la base de datos.
Después de obtener métricas del informe de instantáneas de rendimiento resultante, puedes tomar otro conjunto de instantáneas y repetir el proceso.
Crea una instantánea que contenga estadísticas de ejecución de SQL
De forma predeterminada, AlloyDB usa la extensión pg_stat_statements para hacer un seguimiento de las instrucciones de SQL. Para incluir estadísticas detalladas de ejecución de SQL en tu informe de rendimiento, primero debes crear la extensión pg_stat_statements en tu base de datos postgres. Ten en cuenta que la captura de estas estadísticas se habilita con la marca pg_stat_statements.track, no con la creación de la extensión en sí.
Para crear una instantánea que también contenga estadísticas de ejecución de SQL, sigue estos pasos:
- Crea la extensión
pg_stat_statementsen la base de datospostgres.postgres=# CREATE EXTENSION pg_stat_statements;
- Ahora, cuando tomes una instantánea, se incluirán automáticamente las estadísticas de SQL de
pg_stat_statements.postgres=# select perfsnap.snap(); snap ------ 2 (1 row)
Visualiza una lista de instantáneas
- Conecta un cliente
psqla una instancia de AlloyDB. Para un nodo de grupo de lectura, debes conectarte directamente a su dirección IP conpsql. Para obtener más información, consulta Recupera la lista de direcciones IP de nodos del grupo de lectura. - Ejecuta
SELECT * FROM perfsnap.g$snapshots. El resultado es similar a lo siguiente:postgres=# select * from perfsnap.g$snapshots; snap_id | snap_time | instance_id | node_id | snap_description | snap_type | is_baseline ---------+-------------------------------+--------------+---------------------------------+-------------------+-----------+------------- 1 | 2023-11-13 22:13:43.159237+00 | perf-primary | sab3-perf-primary-cab835ef-4cm8 | Manual snapshot | Manual | f 2 | 2023-11-13 22:53:40.49565+00 | perf-primary | sab3-perf-primary-cab835ef-4cm8 | Automatic snapshot| Automatic | f 3 | 2023-11-13 22:56:42.57094+00 | perf-replica | sab3-perf-replica-b9250422-tz4n | Automatic snapshot| Automatic | f 4 | 2023-11-13 22:56:42.59476+00 | perf-replica | sab3-perf-replica-b9250422-63q3 | Automatic snapshot| Automatic | f 5 | 2023-11-13 23:11:55.23157+00 | perf-replica | sab3-perf-replica-b9250422-tz4n | Manual snapshot | Manual | f (5 rows)
Genera un informe de instantáneas de rendimiento
Para generar un informe que capture la diferencia entre dos instantáneas, por ejemplo, las instantáneas 1 y 2, ejecuta lo siguiente:SELECT perfsnap.report(1,2)
No es necesario que la segunda instantánea de una operación diferencial siga inmediatamente a la primera. Sin embargo, asegúrate de capturar la segunda instantánea en la diferencial después de la primera.
El informe de instantáneas de rendimiento generado es similar al siguiente ejemplo abreviado.
Informe de ejemplo
El siguiente es un ejemplo abreviado de un informe de instantáneas de rendimiento generado:
Ejemplo de informe de instantáneas de rendimiento
$ psql -d postgres -U alloydbsuperuser
postgres=> select perfsnap.report(22, 23);
report
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PGSNAP DB Report for:
Snapshot details
--------------------------------------
Host i841-sr-primary-2a34f46e-06bc
Release 14.12
Startup Time 2024-10-08 03:23:15+00
Snap Id Snap Time
------------ ---------- ------------------------
Begin Snap: 22 24.10.2024 04:33:56 (UTC) Automatic snapshot
End Snap: 23 25.10.2024 04:38:56 (UTC) Automatic snapshot
Elapsed: 1 day 00:04:59.979321
Database Cache sizes
~~~~~~~~~~~~~
Shared Buffers: 31 GB Block Size: 8192
Effective Cache Size: 25 GB WAL Buffers: 16384
Host CPU
~~~~~~~~~~
%User %Nice %System %Idle %WIO %IRQ %SIRQ %Steal %Guest
------- ------- ------- ------- ------- ------- ------- ------- -------
1.07 0.22 0.91 97.40 0.09 0.00 0.31 0.00 0.00
Host Memory
~~~~~~~~~~~~
Total Memory: 63 GB
Available Memory: 11 GB
Free Memory: 726 MB
Buffers Memory: 3706 MB
Load profile (in bytes)
~~~~~~~~~~~~~~~~~~~~~~~ Per Second Per Transaction
------------ ---------------
Redo size: 63083.64 4489.93
Logical reads: 1961.21 139.59
...
Response Time Profile (in s)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CPU time: 5399 ( 0.39%)
Wait time: 1386906 ( 99.61%)
Total time: 1392306
Backend Processes Wait Class Breakdown (in s)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IO 119.300 ( 98.91%)
LWLock 1.305 ( 1.08%)
IPC .010 ( 0.01%)
Lock .000 ( 0.00%)
Backend Processes Wait Information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Event Class Waits Time (us) Avg (us)
-------------------------------------- ------------- ------------- -------------- -------------
CPU 1995948632
WALInsert LWLock 1 6656 6656
Vacuum Information
~~~~~~~~~~~~~~~~~~~
Num Analyze operations: 1976
Num Vacuum operations: 3435
Per Database Information
~~~~~~~~~~~~~~~~~~~~~~~~~
Name Commits Rollbacks BlkRds Blkhits TempFiles TempBytes
------------------------- ------------- ------------- ------------- ------------- ------------- -------------
bench 27939 0 0 7823038 0 0 bytes
postgres 39792 0 7 11089243 0 0 bytes
Per Database DML & DQL Information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Name Tuples returned Tuples fetched Tuples inserted Tuples updated Tuples deleted Index splits Index Only heap fetches HOT updates
------------------------- ---------------- ---------------- ---------------- ---------------- ---------------- ---------------- ------------------------- ----------------
bench 16119481 4843262 0 0 0 0 16 0
postgres 25415473 6327188 0 10 0 0 0 8
Per Database Conflict Information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Name Lock Timeout Old Snapshot Buffer Pins Deadlock
------------------------- ------------- ------------- ------------- -------------
bench 0 0 0 0
postgres 0 0 0 0
Per Database Vacuum Information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Name Frozen XID % Consumed Aggregate Vacuum Gap
------------------------- ------------- ------------- --------------------
bench 179460916 9.00% 20539084
postgres 179339239 9.00% 20660761
Per Database Sizing Information
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Conn.
Name Collation Limit Tablespace DB Size Growth
-------------------- ------------- ------- -------------------- ---------- ----------
bench C.UTF-8 -1 pg_default 80 GB 0 bytes
postgres C.UTF-8 -1 pg_default 135 MB 0 bytes
Backend Wait Event Histogram
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Event Class Waits <= 1us <= 2us <= 4us <= 8us <= 16us <= 32us <= 64us <= 128us <= 256us <= 512us
-------------------------------------- ------------- ----------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------
WALInsert LWLock 1 0 0 0 0 0 0 0 0 0 0
Background Wait Event Histogram
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Event Class Waits <= 1us <= 2us <= 4us <= 8us <= 16us <= 32us <= 64us <= 128us <= 256us <= 512us
-------------------------------------- ------------- ----------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------
WALInsert LWLock 542 107 174 39 113 93 8 1 1 0 1
Write Ahead Log (WAL) Statistics
--------------------------------
Records Full Page Images Bytes Buffers Full Write Sync Write Time Sync Time
----------- ---------------- ----------- ------------ ----------- ----------- ----------- -----------
2936305 100 805989345 0 0 0 0 0
Summary Stats (across all databases)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Name Value
-------------------------------- ----------------------------------
Buffers evicted 0
Commits 1216693
...
Parameter Settings
~~~~~~~~~~~~~~~~~~~
Parameter Value
--------------------------------- --------------------------------------------------------------
DateStyle ISO, MDY
TimeZone UTC
autovacuum on
work_mem 4096
Columnar Engine available size Columnar Engine configured size
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14959MB 19293MB
Columnar Engine Statistics
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
name count
---------------------------------------------------------- ------------
CU Populations/Refreshes 13197
CU Auto Refreshes 10975
...
Columnar Engine Ultra-fast Cache Statistics
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ultra-fast Cache Size (MB): 19200
Ultra-fast Cache Used Size (MB): 0
Ultra-fast Cache Block Size (MB): 80
SQL Report
~~~~~~~~~~
NOTE: Query might be empty if query ID does not have a match in pg_stat_statements at report time. This is expected if the query is not run recently.
Per Query Information (Top 50) By Total Elapsed Time
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Query Text UserID DBID DBName QueryID Total Elapsed Time(ms) Execution Count Avg Elapsed Time(ms)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
prepare neword (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) as select neword($1,$2,$3,$4,$5,$6) 36272 36274 tpcc -5467151541922966497 276400877.8014 36928106 7.4848
prepare payment (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, NUMERIC, VARCHAR) AS select p 36272 36274 tpcc 3864683359055073968 127719636.4656 36928456 3.4586
prepare delivery (INTEGER, INTEGER) AS select delivery($1,$2) 36272 36274 tpcc 2323704420019807054 48540963.0880 3694128 13.1400
prepare slev (INTEGER, INTEGER, INTEGER) AS select slev($1,$2,$3) 36272 36274 tpcc -8637448842172635004 35361366.9271 3692785 9.5758
...
Per Query Information (Top 50) By Read IO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Query Text UserID DBID DBName QueryID Total ReadIO Time(ms) Execution Count Avg ReadIO Time(ms) Total buffer hits Avg buffer hits Total blk reads Avg blk reads
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
prepare ostat (INTEGER, INTEGER, INTEGER, INTEGER, VARCHAR) AS select * from ostat($1,$2,$3,$4,$5) a 36272 36274 tpcc -1640504351418263816 498072.4004 3693895 0.1348 80360201 21.75486877672484 105858 0.028657555236410347
prepare delivery (INTEGER, INTEGER) AS select delivery($1,$2) 36272 36274 tpcc 2323704420019807054 12.5438 3694128 0.0000 4477308168 1212.0067761593534 1219908 0.33022894712906536
prepare neword (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) as select neword($1,$2,$3,$4,$5,$6) 36272 36274 tpcc -5467151541922966497 0.8039 36928106 0.0000 10337394097 279.9329620912592 6245570 0.16912781825312134
SELECT name, default_version, installed_version FROM pg_catalog.pg_available_extensions 10 5 postgres 6619165036968781114 0.0000 361 0.0000 361 1 0 0
...
Per Query Information (Top 50) By Standard Deviation of Elapsed Time
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Query Text UserID DBID DBName QueryID Begin STDDEV Elapsed Time(ms) End STDDEV Elapsed Time(ms)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT COUNT($1) FROM perfsnap.g$snapshots 10 5 postgres -8741741796612173369 17.8084 18.1239
prepare delivery (INTEGER, INTEGER) AS select delivery($1,$2) 36272 36274 tpcc 2323704420019807054 15.0626 19.8495
prepare neword (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) as select neword($1,$2,$3,$4,$5,$6) 36272 36274 tpcc -5467151541922966497 13.9820 17.0074
prepare slev (INTEGER, INTEGER, INTEGER) AS select slev($1,$2,$3) 36272 36274 tpcc -8637448842172635004 8.4333 9.6205
----------------------------------------------------
Created by G_STATS v1.0.100
----------------------------------------------------
(xxx rows)
Para obtener información sobre los campos del informe y las recomendaciones de optimización del rendimiento, consulta Recomendaciones de optimización del rendimiento de la base de datos. Para obtener más información sobre los eventos de espera en los informes de instantáneas de rendimiento, consulta Referencia del informe de instantáneas de rendimiento de la base de datos.
Borrar una instantánea
Antes de borrar las instantáneas que forman parte de un modelo de referencia existente, debes borrar el modelo de referencia.
Para borrar una instantánea, ejecuta el siguiente comando:
SELECT perfsnap.delete(SNAP_ID);
Reemplaza SNAP_ID por el ID de la instantánea que deseas borrar.
Después de borrar una instantánea, no podrás recuperarla.
Marca una instantánea como modelo de referencia de rendimiento
Para marcar todas las instantáneas con IDs entre 1 y 3, por ejemplo, como un modelo de referencia de rendimiento del sistema, ejecuta SELECT perfsnap.make_baseline(1, 3).
Borra los modelos de referencia de rendimiento
Para borrar todos los modelos de referencia con IDs entre 1 y 3, por ejemplo, ejecuta SELECT perfsnap.clear_baseline(1, 3).
Modifica la frecuencia de las instantáneas automáticas
De forma predeterminada, las instantáneas automáticas se toman para la instancia principal y los nodos de lectura una vez al día.
Para personalizar la frecuencia de las instantáneas automáticas, establece la marca perfsnap.interval, que establece el intervalo de instantáneas automáticas en segundos. Para obtener más información, consulta
Configura marcas de bases de datos.
Te recomendamos que establezcas el valor de la marca en al menos varios minutos para capturar información significativa.
Para optimizar el uso de recursos, cuando ya no necesites la frecuencia personalizada, restablece la marca al valor predeterminado, que es de 86,400 segundos por día.
Modifica la retención de las instantáneas automáticas
Para personalizar el período de retención de las instantáneas automáticas, establece la marca perfsnap.retention, que establece la duración durante la cual se conservan las instantáneas automáticas. Para obtener más información, consulta
Configura marcas de bases de datos.
El período de retención predeterminado es de 7 days.
Optimiza el rendimiento de la base de datos con los resultados del informe de instantáneas
Sigue estos pasos para optimizar el rendimiento de la base de datos de AlloyDB:
- Crea instantáneas de referencia cuando tu base de datos esté inactiva o cuando experimente una carga promedio.
- Inicia la carga de trabajo o la consulta cuyo rendimiento deseas mejorar.
- Cuando la carga de trabajo o la consulta alcancen el uso máximo de recursos, crea otro conjunto de instantáneas. Te recomendamos que uses el mismo intervalo para ambos informes.
- Compara los informes que creaste con ambos conjuntos de instantáneas y, luego, identifica los cambios que podrían mejorar el rendimiento. Para obtener más información sobre las recomendaciones de rendimiento, consulta Recomendaciones de optimización del rendimiento de la base de datos.
Recomendaciones de optimización del rendimiento de la base de datos
En la siguiente tabla, se enumeran las secciones del informe de instantáneas de rendimiento y las mejoras recomendadas para cada sección del informe. Para obtener más información sobre las secciones del informe de instantáneas de rendimiento y los eventos de espera, consulta Referencia del informe de instantáneas de rendimiento de la base de datos.
| Sección | Campo del informe | Descripción del campo del informe | Recomendaciones de optimización |
|---|---|---|---|
| Detalles de la instantánea | Snapshot Details | Proporciona el host, la versión de lanzamiento compatible con PostgreSQL y la hora en que la máquina está en funcionamiento. | N/A |
| ID de instantánea | Muestra el ID y el momento de las instantáneas que se usan para crear este informe. | N/A | |
| Estadísticas del sistema | Host CPU | Detalles del uso de CPU del host. | Si el uso de CPU es superior al 80%, te recomendamos que escales verticalmente al siguiente tamaño disponible. Para las instancias de grupo de lectura, asegúrate de que el tamaño del nodo sea igual o mayor que el de la instancia principal. Es posible que los nodos de lectura más pequeños no puedan mantener el ritmo de la tasa de generación de WAL de la instancia principal durante las cargas de trabajo de escritura pesadas. |
| Host Memory | Detalles del uso de memoria del host. | Si la memoria libre es inferior al 15%, te recomendamos que escales verticalmente al siguiente tamaño disponible. Para las instancias de grupo de lectura, asegúrate de que el tamaño del nodo sea igual o mayor que el de la instancia principal. Es posible que los nodos de lectura más pequeños no puedan mantener el ritmo de la tasa de generación de WAL de la instancia principal durante las cargas de trabajo de escritura pesadas. | |
| Cargar perfil | Muestra contadores que ayudan a calificar tu carga de trabajo de registro de escritura anticipada (WAL) generada, los requisitos de E/S y la administración de conexiones. | Si las lecturas físicas son más altas que las lecturas lógicas, considera aumentar la escala al siguiente tamaño disponible para admitir un almacenamiento en caché más grande de los datos. | |
| Desglose del tiempo de respuesta y la clase de espera | Desglose del tiempo que los procesos de Postgres pasaron durante la ejecución de la carga de trabajo. | Enfoca el ajuste en acortar la espera de E/S si los procesos están principalmente en un estado de espera, por ejemplo. | |
| Información de la carga de trabajo de la base de datos | Información de la carga de trabajo por base de datos | Métricas clave para cada base de datos, incluidas las confirmaciones, las reversiones, la tasa de aciertos y la información sobre las tablas temporales y las operaciones de ordenamiento. | Si las reversiones son altas, considera diagnosticar tu app. |
| Información de DML y DQL por base de datos | Contadores para operaciones de consulta. | Califica tu carga de trabajo como de lectura pesada o de escritura pesada. | |
| Información de conflictos de la base de datos | Contadores para problemas comunes de aplicaciones y bases de datos. | Ubica los problemas en tu aplicación si hay un interbloqueo. Si los conflictos de Buffer Pins son altos en una instancia de grupo de lectura,
considera reducir el valor de max_standby_streaming_delay para permitir
que se reanude la reproducción o mueve las consultas de larga duración a un grupo de lectura diferente
para evitar mantener los pines durante períodos prolongados. |
|
| Información sobre el tamaño de la base de datos | Muestra cuánto creció la base de datos durante el intervalo entre dos instantáneas. Este campo también muestra si la base de datos tiene límites de conexión establecidos. | Ubica los problemas en tu aplicación si el crecimiento de la base de datos es demasiado grande. | |
| Información de Vacuum | Información de Vacuum | Detalles de E/S y contadores para operaciones de Vacuum. | De forma predeterminada, AlloyDB realiza un vacío adaptativo. Puedes anular algunos de los parámetros de configuración de Vacuum para que se adapten a tu carga de trabajo. Por ejemplo, reduce las operaciones de Vacuum si se dedica demasiada E/S a estas solicitudes. |
| Información de Vacuum por base de datos | Muestra la siguiente información:
|
Si la antigüedad del campo XID inmovilizado es demasiado antigua o si el porcentaje de transacciones consumidas está cerca del 90%, considera realizar un vacío. Si la brecha de vacío agregada disminuye, esto indica que Postgres aplicará un vacío para evitar el ajuste. | |
| Detalles de espera de los procesos de la base de datos | Información detallada de los procesos de backend y en segundo plano | Detalles de todas las esperas de los procesos de backend y en segundo plano en el intervalo del informe. La información incluye el tiempo de espera acumulado, el tiempo de CPU y el tiempo promedio por tipo de espera. | Para disminuir la espera en WALWrite, por ejemplo, aumenta la cantidad de wal_buffers disponibles para la base de datos. |
| Histograma detallado de eventos de espera de backend y en segundo plano | Se incluye en el informe de instantáneas de rendimiento de forma predeterminada. La lista contiene el histograma de eventos de espera para los procesos de backend y en segundo plano, que se dividen en 32 buckets, desde 1 us hasta más de 16 segundos. | Ubica los eventos de espera y determina si hay demasiados eventos de espera en el bucket de tiempo de espera más grande. Es posible que haya un problema con demasiados eventos de espera o con cada tiempo consumido de espera. | |
| Estadísticas variadas | Estadísticas de registro de escritura anticipada (WAL) | Resumen de las estadísticas de WAL. | Si experimentas demasiado tiempo de sincronización, ajusta las marcas de base de datos relacionadas (GUC) para mejorar tu carga de trabajo. GUC es el subsistema de PostgreSQL que controla la configuración del servidor. |
| Estadísticas de resumen (en todas las bases de datos) | Resumen de todas las operaciones de la base de datos que ocurren durante el intervalo de instantáneas. | N/A | |
| Configuración del parámetro | Configuración del parámetro | Parámetros clave de configuración de Postgres al final del tiempo de la instantánea. | Verifica la configuración del parámetro GUC (las marcas de la base de datos de Postgres) para determinar si los
valores no son los esperados o no se recomiendan. Para las instancias de grupo de lectura
que experimentan un retraso de replicación alto, considera ajustar lo siguiente:
|
| Estadísticas de ejecución de SQL | Información por consulta (50 principales) por tiempo total transcurrido | Muestra las 50 consultas principales que pasaron más tiempo transcurrido durante las dos instantáneas, así como su recuento total de ejecución, desglosado por el usuario y la base de datos en la que se emite la consulta.Elapsed time = Difference of total_exec_time in pg_stat_statements at the two snapshot time |
Usa esta sección para identificar tu consulta más pesada que ocupa la mayor parte del tiempo del sistema. |
| Información por consulta (50 principales) por E/S de lectura | Muestra las 50 consultas principales que pasaron más tiempo de E/S de lectura durante las dos instantáneas, así como su recuento de ejecución, aciertos de búfer, lecturas de blk, tanto en total como en promedio.ReadIO = blk_read_time + temp_blk_read_time acumulado durante las dos instantáneasBuffer Hits = shared_blks_hit + local_blks_hit acumulado durante las dos instantáneasBuffer Reads = shared_blks_read + local_blks_read acumulado durante las dos instantáneasAlloyDB hace un seguimiento de estos campos de forma predeterminada, ya que track_io_timing está configurado. |
Usa esta sección para identificar consultas con uso intensivo de E/S, en especial si necesitan leer de los discos con frecuencia. | |
| Información por consulta (50 principales) por desviación estándar del tiempo transcurrido | Muestra las 50 consultas principales que tienen la desviación estándar más alta del tiempo transcurrido, con las desviaciones estándar calculadas en el momento de la instantánea inicial y final. Aquí, el valor hace referencia a stddev_exec_time de pg_stat_statements |
Para la consulta con una desviación estándar alta, significa que el tiempo de ejecución de la consulta varía mucho y podría ser el momento de observar la E/S. |
Limitaciones
Para evitar el aumento de espacio debido al consumo excesivo de almacenamiento, puedes crear manualmente un máximo de 2,500 instantáneas en una instancia.
Si la cantidad de instantáneas supera el límite de instantáneas, AlloyDB borra todas las instantáneas manuales anteriores a 90 días. Para permanecer dentro del límite de instantáneas, debes limpiar las instantáneas innecesarias antes de tomar una nueva.
AlloyDB limpia periódicamente las instantáneas manuales que tienen más de 90 días.
¿Qué sigue?
- Obtén información sobre los eventos de espera en los informes de instantáneas de rendimiento.