PG-ep1

ooowl
  • Web系统设计
  • 存储技术
About 1 min

PG-ep1

常用的SQL语句

重置主键

select setval('schema.table_id_seq', max(id)) from schema.table;

不能直接对联接(join)后的结果进行更新。原因是更新操作需要明确的目标表,而联接通常涉及多个表。
对于sql的select查询fetch的时候必须要限制数量,直接select所有容易爆内存
sqlalchemy防止注入基本都做好了不用自己担心
where 的问题,大表的in小集合,是没有问题的,大表in大集合不行
不要对大表进行update,分布式MPP数据库的优势在于查询,而不是写入

pg vacuum的弊与利 之弊 - 章怀柔 - 博客园open in new window

踩坑

大表联查优化

硬件配置: CPU: arm64 内存: 250GB

cda-postgres-master:
  image: "bitnami/postgresql:15"
  hostname: cda-postgres
  restart: always
  ports:
    - "25432:5432"
  volumes:
    - ./data/pg:/bitnami/postgresql
    - ./data/pg-tmp:/tmp
  environment:
    POSTGRESQL_TIMEZONE: Asia/Shanghai
    POSTGRESQL_USERNAME: ${CDA_USERNAME}
    POSTGRESQL_PASSWORD: ${CDA_PASSWORD}
    POSTGRESQL_DATABASE: postgres
    POSTGRESQL_POSTGRES_CONNECTION_LIMIT: 100000
    POSTGRESQL_MAX_PARALLEL_WORKERS_PER_GATHER: 16
    POSTGRESQL_MAX_PARALLEL_WORKERS: 32
    POSTGRESQL_MAX_WORKER_PROCESSES: 32
    POSTGRESQL_SHARED_BUFFERS: 8GB
    POSTGRESQL_MAX_CONNECTIONS: 1000
    POSTGRESQL_WORK_MEM: 256MB
    POSTGRESQL_WAL_BUFFERS: 64MB
    POSTGRESQL_MAINTENANCE_WORK_MEM: 1GB
    POSTGRESQL_EFFECTIVE_CACHE_SIZE: 16GB
  shm_size: 4g


Last Edit: 2025-10-18 12:16:20
Loading...