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

vacuum(analyze)vacuum(analyze) Captains-Felix 发布了193 篇原创文章 · 获赞 40 · 访问量 46万+ 私信 关注
上一篇:VB编程:利用循环嵌套求1000以内的完数


下一篇:VB编程:将文本控件添加到集合Collection中