vacuum(analyze)


#!/bin/bash

#设置自动定期对表更新统计信息和删除’死‘行
#zhaowz 2019-04-02

date=`date +"%Y%m%d%H%M"`
v_hour=0
v_param=$#

if [ $v_param -ge 3 ];then
        echo "Invalid argument!! E.g sh pg-vacuum-analyze.sh vlnx191001.xxx.cn OR sh pg-vacuum-analyze.sh vlnx191001.xxx.cn   \" db1,db2,db3,...\""
        exit 1
fi

pghosts=$1

if [ -n "$pghosts" ];then

        hostname=${pghosts%%.*}
        filename=$hostname'-vacuum-analyze-'$date

        for pghostname in $pghosts
        do
                if [ $v_param -eq 1 ];then
                        dblist=$(psql  -h $pghostname -U zhaowz -d postgres -c "select datname from pg_database where datname not in ('template0','template1')" -A -t)
                elif [ $v_param -eq 2 ];then
                        dblist=$(psql  -h $pghostname -U zhaowz -d postgres -c "select datname from pg_database where datname=any('{$2}')" -A -t)
                fi

                if [ -z "$dblist" ];then
                        echo "Invalid dbname OR Invalid hostname !!!" >> /home/zhaowz/logs/$filename.log
                        exit 1
                fi


                for db in $dblist
                do
                        v_hour=$(date "+%k")
                        if [[ ${v_hour} -ge 1 && ${v_hour} -lt 10 ]]; then

                                echo "$db : `date +"%Y%m%d%H%M"` Begin ">>/home/zhaowz/logs/$filename.log
                                tables=$(psql -h $pghostname -U zhaowz -d $db -c "select tablename from pg_tables where schemaname='public'" -A -t)

                                for table in $tables
                                do
                                        echo "$table :`date +"%Y%m%d%H%M"` Begin vacuum-analyze ">>/home/zhaowz/logs/$filename.log
                                        #psql  -h $pghostname -U zhaowz  -d $db -c "vacuum $table"
                                        psql  -h $pghostname -U zhaowz  -d $db -c "vacuum analyze $table"
                                        echo "$table :`date +"%Y%m%d%H%M"` vacuum-analyze  has finished   ">>/home/zhaowz/logs/$filename.log
                                done
                        fi
                done

        done
fi

手动vacuumanalyze是用来优化数据库性能的操作。手动vacuum用于回收已删除行占用的空间,以减少数据库文件的大小。而手动analyze则用于更新数据库的统计信息,以便查询优化器能够更好地选择执行计划。 在引用\[1\]中提到了一些与手动vacuumanalyze相关的信息,比如上次手动vacuumanalyze的时间,以及它们的总计次数。这些信息可以帮助我们了解数据库的维护情况。 另外,在引用\[2\]中提到了一些与自动vacuum和自动analyze相关的参数。autovacuum_analyze_threshold参数用于设置自动分析的阈值,当表中的行数超过该阈值时,自动分析将被触发。而autovacuum_analyze_scale_factor参数用于设置自动分析的比例因子,它与表的大小成比例,用于确定自动分析的触发时机。 总的来说,手动vacuumanalyze是用来优化数据库性能的重要操作。通过合理地设置自动vacuum和自动analyze的参数,以及根据需要进行手动vacuumanalyze,可以保持数据库的健康状态,并提高查询性能。 #### 引用[.reference_title] - *1* [PostgreSQL10基础(6)AnalyzeVacuum](https://blog.csdn.net/supermancoke/article/details/104612822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [PostgreSQL VACUUMANALYZE 最佳实践技巧](https://blog.csdn.net/u012551524/article/details/120548763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值