OushuDB如何进行数据库碎布清理
OushuDB如何进行数据库碎布清理
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
1条回答
默认
最新
- 方法
OushuDB master使用多版本机制来实现更新操作,所以会产生过时的版本。过时的版本会带来性能问题,需要针对每一个系统表运行vacuum 命令。
可以使用如下脚本来对一个数据库的所有元数据表做vacuum和reindex。如果用户已经定期做vacuum,reindex则不需要,可以从下面脚本中注释掉。 reindex只有在长期没有做vacuum后需要。
#!/bin/bash
VACUUM_CMD="VACUUM ANALYZE"
REINDEX_CMD="REINDEX TABLE"
if [ $# != 1 ]; then
echo "USAGE: vacuum.sh database-name"
exit
fi
echo -e "\nBegin: vacuum and reindex database: " $1 "\n"
psql -d $1 -tc "select '$VACUUM_CMD' || ' pg_catalog.' || relname || ';' from pg_class a,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' and a.relkind='r'" | psql -a $1
psql -d $1 -tc "select '$REINDEX_CMD' || ' pg_catalog.' || relname || ';' from pg_class a,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' and a.relkind='r'" | psql -a $1
echo -e "\nNOTE: Please ignore the errors about some tables which cannot be reindexed.\n"
- 推荐频率 : 每天
- 发现问题解决方法
运行vacuum命令。
评论
有用 0回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

