IBM Cloud Docs
Modificación de su configuración Databases for PostgreSQL

Modificación de su configuración Databases for PostgreSQL

IBM Cloud® Databases for PostgreSQL le permite cambiar algunos de los parámetros de configuración de PostgreSQL para que pueda adaptar sus bases de datos PostgreSQL a su caso de uso. Para realizar cambios permanentes en la configuración de la base de datos, utilice el complemento CLI o la API de Cloud Databases para escribir los cambios en el archivo de configuración de su implantación.

La configuración se define en un esquema. Para realizar un cambio, envíe un objeto JSON con la configuración y los nuevos valores a la API o la CLI. Por ejemplo, para establecer el ajuste max_connections en 150, debería suministrar:

{"configuration":{"max_connections":150}}

a la CLI o a la API.

Para obtener más información, consulte Gestión de conexiones PostgreSQL.

Utilización de la CLI con Databases for PostgreSQL

Puede comprobar la configuración predeterminada del despliegue con el mandato deployment-configuration-schema.

ibmcloud cdb deployment-configuration-schema <INSTANCE_NAME_OR_CRN>

De forma similar, cambie la configuración con el mandato deployment-configuration.

ibmcloud cdb deployment-configuration <INSTANCE_NAME_OR_CRN> [@JSON_FILE | JSON_STRING]

Este mandato lee los cambios que desea realizar del objeto JSON o de un archivo. Para obtener más información, consulte la página de referencia.

Utilización de la API con IBM Cloud® Databases for PostgreSQL

Los dos puntos finales de configuración de despliegue permiten ver el esquema de configuración y cambiar la configuración. Para ver el esquema de configuración, envíe una solicitud GET a /deployments/{id}/configuration/schema.

Para cambiar la configuración, envíe los valores que desea cambiar en forma de objeto JSON en el cuerpo de una solicitud PATCH a /deployments/{id}/configuration.

Para más información, consulte la referencia de la API.

Disponibles IBM Cloud® Databases for PostgreSQL ajustes de configuración

IBM Cloud® Databases for PostgreSQL configuración de la zona horaria

El huso horario para los despliegues de IBM Cloud® Databases for PostgreSQL es siempre UTC (Hora Universal Coordinada). Este valor no lo pueden configurar los clientes.

IBM Cloud® Databases for PostgreSQL configuración de la memoria

shared_buffers

  • Valor predeterminado - 32000 (número de almacenamientos intermedios de 8 KiB, o aproximadamente 262 MB)
  • Valor máximo recomendado: 25% de RAM disponible
  • ¿Desea reiniciar la base de datos? -

La asignación de memoria recomendada para shared_buffers es de 25% de la RAM del despliegue. Establecer shared_buffers a un valor superior puede provocar problemas de memoria que provoquen el bloqueo de la base de datos y puede reducir el rendimiento de la base de datos, ya que es muy probable que el sistema operativo ya haya almacenado los datos en el búfer. Establecer shared_buffers en un valor igual, casi igual o superior a la cantidad de memoria asignada impide que la base de datos se inicie. El valor especifica el número de almacenamientos intermedios de memoria compartida de 8 KiB.

Por ejemplo, 1 GB de espacio shared_buffers es 1048576 KiB y (1048576 KiB / 8 KiB) es 131072 almacenamientos intermedios. El despliegue puede utilizar RAM adicional para el almacenamiento en memoria caché y el rendimiento, incluso sin asignarla a shared_buffers. No es necesario que configure la base de datos para que utilice toda la RAM asignada para que el despliegue la utilice.

Para las cargas de trabajo existentes, o cuando se escala la RAM, aumentar la memoria a los búferes compartidos podría no ser el mejor curso de acción. En lugar de ello, haga un seguimiento de las proporciones de accesos a la memoria caché de tablas e índices. Si los ratios de acierto de la caché se sitúan en los noventa, deje que el sistema operativo utilice la memoria en otras áreas en lugar de aumentar shared_buffers.

Puede utilizar estas consultas como el usuario admin o cualquier usuario con el rol pg_monitor para realizar un seguimiento de las proporciones de accesos a la memoria caché:

Tablas

SELECT
  sum(heap_blks_read) as heap_read,
  sum(heap_blks_hit)  as heap_hit,
  sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as table_hit_ratio
FROM
  pg_statio_user_tables;

Índices

SELECT
  sum(idx_blks_read) as idx_read,
  sum(idx_blks_hit)  as idx_hit,
  (sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as index_hit_ratio
FROM
pg_statio_user_indexes;

El valor work_mem se ajusta automáticamente en relación con los valores de configuración shared_buffer y max_connection.

IBM Cloud® Databases for PostgreSQL configuración general

max_connections

max_locks_per_transaction

  • Valor predeterminado-64
  • Opciones - Valor mínimo de 10
  • ¿Desea reiniciar la base de datos? -

max_prepared_transactions

  • Valor predeterminado: 0
  • ¿Desea reiniciar la base de datos? -
  • Notas - El valor por defecto de 0 deshabilita el uso de transacciones preparadas y se recomienda a menos que necesite utilizarlas.

synchronous_commit

  • Valor predeterminado: local
  • Reiniciar la base de datos - No
  • Opciones - local, on o off
  • Notas - Al establecer synchronous_commit en off, aumenta la tasa de compromiso de transacción a expensas de una pérdida de transacciones confirmadas si se produce una conclusión no limpia. Con synchronous_commit establecido en on, una transacción se confirma solo cuando se escribe en el líder y al menos en una réplica. Por lo tanto, el valor on solo está disponible en las formaciones que se han escalado horizontalmente a por lo menos tres miembros. Antes de aplicar este cambio, consulte Alta disponibilidad.

effective_io_concurrency

  • Valor predeterminado: 12
  • Reiniciar la base de datos - No
  • Notas - Se recomienda dejar el valor predeterminado. Solo aumente si ha perfilado consultas SQL y ha detectado exploraciones de almacenamiento dinámico de mapa de bits ineficientes. Como las IOPS están ligadas al tamaño del disco, tampoco se recomienda aumentar este ajuste en discos por defecto o de menor tamaño.

deadlock_timeout

  • Valor predeterminado: 10000
  • Reiniciar la base de datos - No
  • Opciones: valor mínimo de 100
  • Notas - El número de milisegundos a esperar antes de comprobar si hay un punto muerto y la duración en la que se registran las esperas de bloqueo. Registros disponibles a través de la integración de registro. Si se establece este número demasiado bajo afecta negativamente al rendimiento.

log_connections

  • Valor predeterminado: off
  • Reiniciar la base de datos - No
  • Opciones - Valores de on u off
  • Notas - Establecer este valor a on hace que los registros sean verbose. También muestra las conexiones de la herramienta de supervisión ya que extrae métricas cada 60 segundos. Cuando se establece en on, se recomienda establecer application_name en el URI de conexión para mantener una visión general en los registros, ya que las direcciones IP que se muestran son las IP internas de Kubernetes. Encontrará más detalles sobre cómo ajustar el URI de conexión en la documentación de PostgreSQL. Cuando se establece en off, no hay ningún cambio en el comportamiento en el valor predeterminado y no se registra ninguna conexión. Los registros están disponibles a través de la integración de registro. Si se establece on, los registros muestran líneas similares a este ejemplo, donde el nombre de la aplicación se establece como test-app:
2021-03-01 10:27:56 UTC [[unknown]] [00000] [708]: [2-1] user=admin,db=ibmclouddb,client=127.0.0.1 LOG:  connection authorized: user=admin database=ibmclouddb application_name=test-app SSL enabled (protocol=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384, bits=256, compression=off)

log_disconnections

  • Valor predeterminado: off
  • Reiniciar la base de datos - No
  • Opciones - Valores de on u off
  • Notas - Establecer este valor a on hace que los registros sean verbose. También mostrará las desconexiones de las herramientas de monitorización, ya que extrae métricas cada 60 segundos. Cuando se establece en on, se recomienda establecer application_name en el URI de conexión para mantener una visión general en los registros, ya que las direcciones IP que se muestran son las IP internas de Kubernetes. Encontrará más detalles sobre cómo ajustar el URI de conexión en la documentación de PostgreSQL. Cuando se establece en off, no hay ningún cambio en el comportamiento en el valor predeterminado y no se registra ninguna desconexión. Los registros están disponibles a través de la integración de registro. Si se establece on, los registros muestran líneas similares a este ejemplo donde el nombre de la aplicación se establece como test-app:
2021-03-01 10:27:56 UTC [test-app] [00000] [708]: [3-1] user=admin,db=ibmclouddb,client=127.0.0.1 LOG:  disconnection: session time: 0:00:00.793 user=admin database=ibmclouddb host=127.0.0.1 port=50638

log_min_duration_statement

  • Valor predeterminado: 100
  • Reiniciar la base de datos - No
  • Opciones: valor mínimo de 100
  • Notas - Se registran las sentencias que tardan más que el número de milisegundos especificado.

tcp_keepalives_idle

  • Valor predeterminado: 111
  • Reiniciar la base de datos - No

tcp_keepalives_interval

  • Valor predeterminado: 15
  • Reiniciar la base de datos - No

tcp_keepalives_count

  • Valor predeterminado: 6
  • Reiniciar la base de datos - No

IBM Cloud® Databases for PostgreSQL Configuración de WAL

archive_timeout

  • Valor predeterminado: 1800
  • Reiniciar la base de datos - No
  • Opciones - Valor mínimo de 300
  • Notas - El número de segundos a esperar antes de forzar un cambio al siguiente archivo WAL. Si ha transcurrido el número de segundos y ha habido actividad en la base de datos, el servidor cambia a un nuevo segmento. Limita de manera efectiva la cantidad de tiempo que los datos pueden permanecer sin archivar.

Los tres valores siguientes wal_level, max_replication_slots y max_wal_senders habilitan el uso del plugin de decodificación lógica de wal2json. Si no está utilizando este plug-in, deje estos valores en el valor predeterminado.

wal_level

  • Valor predeterminado: replica
  • ¿Se reinicia la base de datos? -
  • Notas - Controla el nivel de WAL. Los valores permitidos son replica o logical. Establézcalo en logical para utilizar la descodificación lógica. Si no va a utilizar la decodificación lógica, el uso de logical aumenta el tamaño de WAL, lo que supone diversos inconvenientes y ninguna ventaja real.

max_replication_slots

  • Valor predeterminado: 10
  • ¿Se reinicia la base de datos? -
  • Notas - El número máximo de ranuras de réplica definidas de forma simultánea. El valor predeterminado y mínimo de ranuras es 10. Veinte ranuras están reservadas para uso interno por parte del despliegue para fines de alta disponibilidad (HA). Para utilizar ranuras, debe establecer el valor por encima de 20 y tener una ranura por consumidor. Añada una ranura adicional por encima del mínimo por consumidor esperado. El uso de wal2json sin aumentar max_replication_slots puede afectar a las réplicas de solo lectura y HA. Si no utiliza wal2json, deje esta configuración por defecto.

max_wal_senders

  • Valor predeterminado: 12
  • ¿Se reinicia la base de datos? -
  • Notas - El número máximo de procesos de emisor WAL que se ejecutan de forma simultánea. El valor por defecto, y mínimo, es 12. Se requiere un wal_sender por consumidor. Veinte ranuras están reservadas para uso interno por parte del despliegue para fines de alta disponibilidad (HA). Es necesario fijar el valor por encima de 20 y se recomienda añadir un wal_sender más sobre el mínimo por consumidor esperado. El uso de wal2json sin aumentar max_wal_senders puede afectar a las réplicas de solo lectura y HA. Si no utiliza wal2json, deje esta configuración por defecto.