DBA: Night Watch

Muitos sistemas têm um padrão de acúmulo constante de dados ao longo do tempo. Além disso, a maioria deles nunca muda novamente - ou seja, eles são escritos no modo somente acréscimo .





Esses não são apenas vários tipos de registros e métricas de equipamento, mas também coisas aparentemente não relacionadas, como correspondência entre usuários ou comentários sobre notícias.





Há cerca de um ano, já escrevi sobre o modelo de organização do particionamento desses dados e as mudanças em cascata na estrutura do banco de dados causadas por isso. E hoje, usando o exemplo de nosso serviço de análise de logs de servidor PostgreSQL, analisaremos os recursos de manutenção de bancos de dados organizados dessa forma, e como uma abordagem competente (e um pouco de trabalho noturno) pode reduzir significativamente os custos de infraestrutura .





Algo que estamos carregando pesadamente no disco ...

"" . " PostgreSQL : 1 host, 1 day, 1TB" " PostgreSQL".





(. " PostgreSQL"), "" - 100% , , :





" - , - !" ?

, 200MB/s:





... .





- ?.. , ! - !





? , ?   18 maintenance-?  VACUUM, ANALYZE, CREATE INDEX ..





PostgreSQL, " PostgreSQL — , ".





" ! - "

-, autoVACUUM/autoANALYZE:





,   autovacuum (to prevent wraparound)  - - "" , ! , "" ,   150GB… .





" , - , ."

, autoANALYZE?..





 ANALYZE- append-only ! , PK.





, " " - autoanalyze. :





ALTER SYSTEM SET autovacuum_analyze_scale_factor = 1;
--    ,         (x2) 

ALTER SYSTEM SET autovacuum_analyze_threshold = 100000;
-- ...    100K
      
      



"" . , - , .





:





  •  INSERT ... ON CONFLICT UPDATE 





  • - append-only ""





pg_repack

MVCC, "-". .





"" , ,   cron-, 00:15, " " pg_repack, "" :





 pgrepack —  Postgres Pro Standard, .  CLUSTER  VACUUM FULL



, « », .  pgrepack  , ,  CLUSTER



.





VACUUM FREEZE

(append-only) -  VACUUM FREEZE



, "" :





VACUUM FREEZE rawdata_20190419;
VACUUM FREEZE rawplan_20190419;
...
      
      



!

  20 , (disk busy)  ~60%:












All Articles