Proceso de PostgreSql y estructura de memoria

1. Arquitectura de proceso y memoria

inserte la descripción de la imagen aquí

Cuando se esté ejecutando la base de datos PostgreSQL, use el siguiente comando para consultar el proceso de la base de datos, que corresponde al diagrama de estructura anterior.

[postgres@localhost ~]$ ps -ef|grep post
postgres   8649      1  0 15:05 ?        00:00:00 /app/pg13/bin/postgres -D /data/pg13/data
postgres   8657   8649  0 15:05 ?        00:00:00 postgres: logger
postgres   8659   8649  0 15:05 ?        00:00:00 postgres: checkpointer
postgres   8660   8649  0 15:05 ?        00:00:00 postgres: background writer
postgres   8661   8649  0 15:05 ?        00:00:00 postgres: walwriter
postgres   8662   8649  0 15:05 ?        00:00:00 postgres: autovacuum launcher
postgres   8663   8649  0 15:05 ?        00:00:00 postgres: archiver last was 0000000100000003000000CD
postgres   8664   8649  0 15:05 ?        00:00:00 postgres: stats collector
postgres   8666   8649  0 15:05 ?        00:00:00 postgres: logical replication launcher
postgres  10188   8649  0 16:19 ?        00:00:00 postgres: postgres postgres 192.168.100.1(53966) idle
postgres  10234   8649  0 16:20 ?        00:00:00 postgres: syd postgres [local] idle

[postgres@localhost ~]$ ll /app/pg13/bin/postgres
-rwxr-xr-x 1 postgres postgres 8389568 Jun 30  2022 /app/pg13/bin/postgres
[postgres@localhost ~]$
[postgres@localhost ~]$ ll /app/pg13/bin/postmaster
lrwxrwxrwx 1 postgres postgres 8 Jun 30  2022 /app/pg13/bin/postmaster -> postgres

2. Descripción del proceso

  • proceso postmaster : el proceso principal de la base de datos, como se muestra arriba, postmaster es una conexión suave, correspondiente al proceso postgres, compatible con la versión histórica, aún conserva el método de escritura postmaster, este proceso se puede usar para iniciar y detener la base de datos (comando postgres encapsulado por pg_ctl), crear (bifurcación) Subproceso de clientes para conexiones finales.
  • proceso de registrador : proceso de registro, solo cuando el parámetro logging_collect está activado, se iniciará el proceso auxiliar del registrador.
  • Proceso de punto de control : proceso de punto de control, ayuda a escribir en segundo plano para escribir bloques de datos sucios en la memoria y registra los bloques sucios que se han escrito, para garantizar que solo se escriban nuevos bloques sucios la próxima vez.
  • proceso de escritura en segundo plano : proceso de escritura de datos, que escribe bloques de datos sucios en la memoria compartida en el disco.
  • proceso walwriter : proceso de escritura del registro wal, los datos modificados se registran en el registro wal.
  • proceso de inicio de autovacuum : proceso de limpieza automática, limpia automáticamente los datos marcados como eliminados (limpia automáticamente las tuplas muertas generadas por múltiples versiones de MVCC).
  • proceso de archivador : proceso de archivado, copia de seguridad del registro wal antes de sobrescribirlo y usarlo.
  • proceso de recopilación de estadísticas : proceso de recopilación de datos estadísticos, la función principal es la recopilación estadística de datos, como el número de operaciones de inserción, actualización y eliminación en una tabla, el número de lecturas y escrituras de bloques de disco, el número de lecturas y escrituras de filas, y así sucesivamente.
  • Proceso de iniciador de replicación lógica : proceso de replicación lógica, el suscriptor se suscribe al publicador para la actualización de la tabla a través del proceso de iniciador de replicación lógica y obtiene la actualización.
  • proceso de postgres : el proceso secundario de conexión del cliente creado por el administrador de correo.

3. Descripción de la memoria

3.1 Memoria compartida

  Después de iniciar PostgreSQL, se generará una parte de la memoria compartida.La memoria compartida se utiliza principalmente como un búfer para bloques de datos para mejorar el rendimiento de lectura y escritura. El búfer de registro WAL y el búfer CLOG (CommitLog) también existen en la memoria compartida. Además, parte de la información global también se almacena en la memoria compartida, como información de procesos, información de bloqueo, estadísticas globales, etc. Los parámetros de base de datos relevantes son los siguientes:

  • shared_buffers : un valor inicial razonable es el 25 % de la memoria del sistema, y ​​el efecto de configurar demasiado grande puede no ser siempre ideal, porque PostgreSQL también se basa en el búfer de alta velocidad del sistema operativo, y el valor predeterminado es 128 MB.

3.2 Memoria local

  Además de acceder a la memoria compartida, el proceso de servicio en segundo plano también se aplicará a la asignación de algo de memoria local para almacenar temporalmente algunos datos que no requieren almacenamiento global. Los parámetros de la base de datos relevantes son los siguientes:

  • temp_buffers : establezca la memoria máxima utilizada para los búferes temporales para cada sesión de la base de datos, búferes locales para acceder a las tablas temporales, el valor predeterminado es 8 MB.
  • work_mem : establece la capacidad de memoria máxima base que cada operación de consulta (clasificación o tabla hash) puede usar antes de escribir en un archivo de disco temporal. El valor predeterminado es 4 MB.
  • Maintenance_work_mem : especifica la cantidad máxima de memoria utilizada en las operaciones de mantenimiento (como VACUUM, CREATE INDEX y ALTER TABLE ADD FOREIGN KEY). El valor predeterminado es 64 MB.

Estructura lógica de PostgreSql: https://xiaosonggong.blog.csdn.net/article/details/131452022
Estructura de directorio de archivos de PostgreSql: https://xiaosonggong.blog.csdn.net/article/details/120303380

Supongo que te gusta

Origin blog.csdn.net/songyundong1993/article/details/132026800
Recomendado
Clasificación