postgresql中的统计信息

postgresql中的统计信息,第1张

概述 pg里面有一个专门的进程 statistics collector 负责对数据库,表,函数的调用次数进行统计,通过socket与执行查询的进程进行通信,当执行语句的进程,在执行一条语句时,会在执行前,把上条语句的统计信息通过socket发送给 statistics collector 进程,这样做是因为上个事务已经 commit 或 rollback 了,统计的是事务已完成的数量。   stat

pg里面有一个专门的进程 statistics collector 负责对数据库,表,函数的调用次数进行统计,通过socket与执行查询的进程进行通信,当执行语句的进程,在执行一条语句时,会在执行前,把上条语句的统计信息通过socket发送给 statistics collector 进程,这样做是因为上个事务已经 commit 或 rollback 了,统计的是事务已完成的数量。

statistics collector 进程等待的timeout是2秒,检查是否有统计数据需要接收。在数据库关闭时会把统计信息记录入文件 PGSTAT_STAT_PERMANENT_filename 里,启动时读取

statistics collector 进程显示的全部事结束事物的统计信息,不是实时的,这个进程是pg 的必起进程之一。

/* 统计文件所在的目录 */#define PGSTAT_STAT_PERMANENT_filename "global/pgstat.stat"#define PGSTAT_STAT_PERMANENT_TMPfile "global/pgstat.tmp" /*统计文件的内容,先写到 PGSTAT_STAT_PERMANENT_TMPfile,之后改名成 PGSTAT_STAT_PERMANENT_filename 1。常量 PGSTAT_file_FORMAT_ID 2。PgStat_GlobalStats3。每个数据库,后面是表,之后是函数的统计示例如: D PgStat_StatDBEntry (T PgStat_StatTabEntry, T PgStat_StatTabEntry 。。。) (F PgStat_StatFuncEntry, F PgStat_StatFuncEntry 。。。) d*//** Global statistics kept in the stats collector*/typedef struct PgStat_GlobalStats{TimestampTz stats_timestamp;/* time of stats file update */PgStat_Counter timed_checkpoints;PgStat_Counter requested_checkpoints;PgStat_Counter buf_written_checkpoints;PgStat_Counter buf_written_clean;PgStat_Counter maxwritten_clean;PgStat_Counter buf_written_backend;PgStat_Counter buf_fsync_backend;PgStat_Counter buf_alloc;TimestampTz stat_reset_timestamp;} PgStat_GlobalStats;

/* ----------* PgStat_StatDBEntryThe collector's data per database* ----------*/typedef struct PgStat_StatDBEntry{OIDdatabaseID;PgStat_Counter n_xact_commit;PgStat_Counter n_xact_rollback;PgStat_Counter n_blocks_fetched;PgStat_Counter n_blocks_hit;PgStat_Counter n_tuples_returned;PgStat_Counter n_tuples_fetched;PgStat_Counter n_tuples_inserted;PgStat_Counter n_tuples_updated;PgStat_Counter n_tuples_deleted;TimestampTz last_autovac_time;PgStat_Counter n_conflict_tablespace;PgStat_Counter n_conflict_lock;PgStat_Counter n_conflict_snapshot;PgStat_Counter n_conflict_bufferpin;PgStat_Counter n_conflict_startup_deadlock;PgStat_Counter n_temp_files;PgStat_Counter n_temp_bytes;PgStat_Counter n_deadlocks;

TimestampTz stat_reset_timestamp;

/* * tables and functions must be last in the struct,because we don't write * the pointers out to the stats file. */HTAB *tables;HTAB *functions;} PgStat_StatDBEntry;

/* ----------* PgStat_StatTabEntryThe collector's data per table (or index)* ----------*/typedef struct PgStat_StatTabEntry{OIDtableID;

PgStat_Counter numscans;

PgStat_Counter tuples_returned;PgStat_Counter tuples_fetched;

PgStat_Counter tuples_inserted;PgStat_Counter tuples_updated;PgStat_Counter tuples_deleted;PgStat_Counter tuples_hot_updated;

PgStat_Counter n_live_tuples;PgStat_Counter n_dead_tuples;PgStat_Counter changes_since_analyze;

PgStat_Counter blocks_fetched;PgStat_Counter blocks_hit;

TimestampTz vacuum_timestamp;/* user initiated vacuum */PgStat_Counter vacuum_count;TimestampTz autovac_vacuum_timestamp;/* autovacuum initiated */PgStat_Counter autovac_vacuum_count;TimestampTz analyze_timestamp;/* user initiated */PgStat_Counter analyze_count;TimestampTz autovac_analyze_timestamp;/* autovacuum initiated */PgStat_Counter autovac_analyze_count;} PgStat_StatTabEntry;

/* ----------* PgStat_StatFuncEntryThe collector's data per function* ----------*/typedef struct PgStat_StatFuncEntry{OIDfunctionID;

PgStat_Counter f_numcalls;

PgStat_Counter f_time;/* times in microseconds */PgStat_Counter f_time_self;} PgStat_StatFuncEntry;

总结

以上是内存溢出为你收集整理的postgresql中的统计信息全部内容,希望文章能够帮你解决postgresql中的统计信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1179066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存