加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

查看未使用oid脚本unused_oids解析

发布时间:2020-12-13 17:11:41 所属栏目:百科 来源:网络整理
导读:首先上运行效果,有个直观认识: 简要说明:从src/include/catalog目录下的pg_*.h toasting.h indexing.h中获取所有已经使用的oid,最后将2--FistBootstrapObjectId-1(即10000-1)之间的未使用的id打印出来。其中涉及管道符使用,正则表达式,更有许多有用

首先上运行效果,有个直观认识:

简要说明:从src/include/catalog目录下的pg_*.h toasting.h indexing.h中获取所有已经使用的oid,最后将2--FistBootstrapObjectId-1(即10000-1)之间的未使用的id打印出来。其中涉及管道符使用,正则表达式,更有许多有用的linux小命令,譬如grep(egrep),sed,tr,sort,uniq,awk,都是一些常用的命令(所以对于初学者这个shell学习价值还蛮高)。

逐行简单解释如下:

#一堆注释,自己阅读,有助于英文提升!
AWK="awk"#定义变量awk

#GetFirstBootstrapObjectIdfromaccess/transam.h
FIRSTOBJECTID=`grep'#define[]*FirstBootstrapObjectId'../access/transam.h|$AWK'{print$3}'`
exportFIRSTOBJECTID#从../access/transam.h文件中找到FirstBootstrapObjectId并取到它的值

#thispart(downtotheuniqstep)shouldmatchtheduplicate_oidsscript
#note:weexcludeBKI_BOOTSTRAPrelationssincetheyareexpectedtohave
#matchingDATAlinesinpg_class.handpg_type.h
#将CATALOG(.*BKI_BOOTSTRAP这一行去掉是因为在pg_class.h和pg_type.h中DATA行肯定会匹配到这些OID

catpg_*.htoasting.hindexing.h|#从这些文件中查找
egrep-v-e'^CATALOG(.*BKI_BOOTSTRAP'|#去除CATALOG开头后面接(BKI_BOOTSTRAP的行
sed-n-e's/^DATA(insert*OID*=*([0-9][0-9]*).*$/1/p'
-e's/^CATALOG([^,]*,*([0-9][0-9]*).*BKI_ROWTYPE_OID(([0-9][0-9]*)).*$/1,2/p'
-e's/^CATALOG([^,*([0-9][0-9]*).*$/1/p'
-e's/^DECLARE_INDEX([^,*([0-9][0-9]*).*$/1/p'
-e's/^DECLARE_UNIQUE_INDEX([^,*([0-9][0-9]*).*$/1/p'
-e's/^DECLARE_TOAST([^,*([0-9][0-9]*),*([0-9][0-9]*).*$/1,2/p'|
#根据正则表达式匹配,并将行替换为oid(,oid)形式,其他无关字符去掉
tr',''n'|#将,替换为换行符
sort-n|#对结果按数值排序
uniq|#去掉临近的重复行
$AWK'#以下将上述内容使用awk用漂亮的方式显示出来(单独的直接显示,连续的用x-y方式,有多漂亮。。。)
BEGIN{
last=0;
}
/^[0-9]/{
if($1>last+1){
if($1>last+2){
printlast+1,"-",$1-1;
}else{
printlast+1;
}
}
last=$1;
}
END{
printlast+1,ENVIRON["FIRSTOBJECTID"]-1;

cat至结尾部分可以通过一步一步执行进行调试理解:

请逐一对使用到的linux命令进行学习,然后才能比较容易、深刻的理解!

要想进一步了解pg关于oid的源码(很有必要),请移步参考中德哥网易博客!

参考:

linux sed

linux grep

linux awk

linux sort+uniq

OID源码分析by德哥

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读