IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> postgresql回收机制autovacuum -> 正文阅读

[大数据]postgresql回收机制autovacuum

postgresql autovacuum

delete操作行不会立即从数据文件中删除,而是通过xmax字段将其标记删除
update操作可能在postgresql中被视为delete+insert

dead tuples

select schemaname,relname,n_dead_tup,
(case when n_live_tup>0 then n_dead_tup::float8/n_live_tup::float8
else 0 end) aa
from pg_stat_all_tables;

vacuum

用法1:vacuum tb_name
手动操作,扫描表并从表和索引中删除死元组,但是不会将磁盘空间返回到操作系统,而将用于新行,CPU和IO使用率升高

用法2:vacuum full table_name
将回收空间返回给操作系统,但会锁表(独占锁),阻止所有操作,如select。其次,实际是创建一个表的副本,使所需的磁盘空间加倍,同时复制表非常慢

analyze

analyze table_name
手动执行,效率差,每次执行时都是从头开始重建统计数据

autoanalyze:自动执行

autovacuum优点
1)清理死元组
2)更新优化程序规划查询时使用的数据分布统计信息
3)后台运行的维护任务,对用户查询的影响较小,消耗的CPU和IO也相对较小

autovacuum相关参数

##参看参数设置
select * from pg_settings where name like '%vacuum%';

autovacuum的工作成本

  • autovacuum_vacuum_cost_delay
  • autovacuum_vacuum_cost_limit

触发autovacuum的参数

  • autovacuum_vacuum_threshold:设置当表上的被更新的元组数的阈值
  • autovacuum_vacuum_scale_factor:设置表大小的缩放系数
  • autovacuum:是否启动系统自动清理功能,默认on
  • autovacuum_max_workers:设置系统自动清理工作进程的最大数量
  • autovacuum_naptime:设置两次系统自动清理操作之间的间隔时间
  • autovacuum_freeze_max_age:设置需要强制对数据库进行清理的XID上限值

触发条件
1.表上(update,delete记录)>=autovacuum_vacuum_scale_factor* reltuples(表上记录数) + autovacuum_vacuum_threshold

2.指定表上事务的最大年龄配置参数autovacuum_freeze_max_age,默认为2亿,达到这个阀值将触发 autovacuum进程,从而避免transaction wraparound

##查看表事务年龄
select relname,age(relfrozenxid) from pg_class where relname='tb_name';

a.可以单独设置每个表
alter table tb_name set with(参数设置值);

b.新创建表
create table tb_name(...) with(参数设置值);

c.可以关闭某个表的autovacuum功能
alter table tb_name set(autovacuum_enabled=false);

注意:
1.一般不建议单独设置,管理起来比较困难和复杂
2.autovacuum_max_workers数值设置建议为CPU核数/3。如果CPU资源充,I/O性能较好时,可以适当调大
3.autovacuum_freeze_max_age达到最大值可能出现的问题,如果冻结操作很慢,导致事务id耗尽,最终会导致数据库拒绝所有事务的执行,指导冻结操作结束。版本pg9.6之后对已经全部是冻结的行的数据块,不再进行冻结处理。
4.autovacuum_freeze_max_age不会等到到达这个限制之后才进行冻结,默认情况下,autovacuum_freeze_max_age*95%的事务数量时候开始进行冻结操作。

##查询每个表的xid使用程度
SELECT c.oid::regclass as tb_name, greatest(age(c.relfrozenxid),age(t.relfrozenxid)) as age 
FROM pg_class c 
LEFT JOIN pg_class t ON c.reltoastrelid = t.oid 
WHERE c.relkind IN ('r', 'm') 
order by age desc;

##查看当前数据库的autovacuum情况
SELECT schemaname, relname, n_live_tup, n_dead_tup, last_autovacuum
FROM pg_stat_all_tables
ORDER BY n_dead_tup/(n_live_tup* current_setting('autovacuum_vacuum_scale_factor')::float8+ current_setting('autovacuum_vacuum_threshold')::float8) DESC
LIMIT 10;

pg_stat_all_tables:记录当前数据库中所有表的统计信息

字段描述
relid表oid
schemaname模式名
relname表名
seq_scan表顺序扫描次数
seq_tup_read表顺序扫描返回行数
idx_scan索引扫描次数
idx_tup_fetch索引扫描返回行数
n_tup_ins插入行数
n_tup_upd更新行数,包含hot update
n_tup_del删除行数
n_tup_hot_upd热更新行数
n_live_tup活元组行数
n_dead_tup死元组行数
n_mod_since_analyze上次last analyzed修改的行数
last_vacuum上次执行vacuum的时间
last_autovacuum上次执行autovacuum的时间
last_analyze上次执行analyze的时间
vacuum_countvacuum的行数
autovacuum_countautovacuum的行数
analyze_countanalyze的行数
autoanalyze_countautoanalyze的行数

参考文档:
https://blog.csdn.net/kmblack1/article/details/84953517
https://www.sohu.com/a/287094621_505827
https://blog.csdn.net/liuhuayang/article/details/112211102

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:14:40  更:2021-09-18 10:16:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:39:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码