El uso de fdw en la base de datos postgresql hace que el número de consultas sea demasiado lento

El uso de fdw en la base de datos postgresql hace que el número de consultas sea demasiado lento

En los últimos días, la base de datos de administración descubrió que hay varias tablas creadas con fdw. Debido a la gran cantidad de datos, la velocidad de consulta ha cambiado de 20 segundos a más de 1000 segundos. Debido a que no está en la misma base de datos, solo se puede usar fdw para conectarse, porque la tabla original La cantidad de datos es demasiado grande o una tabla normal

Análisis de causa

Se sospecha que el problema de la transmisión fdw es lento debido a la gran cantidad de tablas originales.

solución

Crear una vista para restringirla.
Discutir con el lado comercial y descubrí que algunas tablas no necesitan todos los datos, solo los datos de los últimos días. Decidí crear una vista en el modo donde estaba ubicada la tabla original, y recuperar solo los datos de los últimos días.

CREATE VIEW sss as
 SELECT id
.........................................
   FROM ‘表名’
  WHERE (commit_date >= ((now())::date + '-10 days'::interval))

Modifique la tabla especificada al volver a crear la tabla externa de fdw (de la tabla original a la vista)

--创建外部服务器
-- 括号里的三个参数,分别是timescaledb的ip、端口和数据库名称

CREATE SERVER baba FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '0.0.0.0', port '5432', dbname 'hrmw');
--创建用户映射
-- 括号里的两个参数,分别是timescaledb数据库的用户名、密码
create user mapping for postgres server baba options(user 'postgres', password '数据库密码');
CREATE FOREIGN TABLE "public"."表名" (
  ...........  --字段
)
SERVER "baba" -- 外部链接名
OPTIONS ("schema_name" '模式名', "table_name" 'v_base_promise') --指定模式和视图
;

Después de la prueba, la consulta modificada solo toma unos 10 segundos.

antes de arreglar

Inserte la descripción de la imagen aquí

Después de la modificación,
Inserte la descripción de la imagen aquí
originalmente se usó fdw para transmitir todo para hacer el filtrado, ahora es usar la vista para obtener los datos requeridos y luego usar fdw para transmitir

En segundo lugar, cambie la tabla ordinaria a la tabla de particiones.

Cambie la tabla ordinaria a la partición. Hay muchas introducciones en Internet. No escribiré aquí. Modificaré la base de datos del enlace pg a una tabla particionada. Cambiar
la tabla ordinaria a la partición mejora la eficiencia.

(Continuará)

Supongo que te gusta

Origin blog.csdn.net/yang_z_1/article/details/114867223
Recomendado
Clasificación