数据库膨胀统计方法及程序产品与流程
本技术涉及数据库存储管理,尤其涉及一种数据库膨胀统计方法及程序产品。
背景技术:
1、在企业级数据库管理中,针对表及索引的存储膨胀,通常采用系统统计信息、采样分析工具或全量扫描方式进行诊断。
2、然而,现有的一些方案依赖目录统计或低比例采样,难以准确反映死元组占比、页面空闲空间及真实膨胀状态。另一些方案采用全量扫描,面对大规模表和索引时耗时长、资源开销高。
3、因此,如何在数据库膨胀统计过程中兼顾较高统计精度和较低资源开销,成为需要解决的技术问题。
技术实现思路
1、本技术实施例提供一种数据库膨胀统计方法及程序产品,以解决上述技术问题。该方法面向数据库关系的膨胀诊断需求,结合不同页面状态下可获取信息的差异,对数据库关系中的页面进行区分处理,并在此基础上统一形成面向全表的统计结果,从而在减少不必要扫描开销的同时,提高膨胀统计的准确性。
2、第一方面,本技术实施例提供一种数据库膨胀统计方法,包括:
3、获取数据库关系的页面集合,并基于可见性映射将页面集合划分为具有全可见标记的第一页面集合和不具有全可见标记的第二页面集合;
4、对第一页面集合中的页面根据空闲空间映射获取页面空闲空间并确定元组占用量,对第二页面集合中的页面执行页面全量扫描并判定元组可见性,得到页面统计数据;
5、基于页面统计数据采用预设统计算法确定数据库关系的全表统计量。
6、在一种可能的实施方式中,在对第一页面集合中的页面根据空闲空间映射获取页面空闲空间并确定元组占用量,对第二页面集合中的页面执行页面全量扫描并判定元组可见性,得到页面统计数据的步骤之前,还包括:
7、解析数据库关系的关系名或关系标识符,得到数据库关系的关系类型;
8、根据关系类型绑定对应的页面统计函数,页面统计函数用于对页面集合中的页面执行膨胀统计。
9、在一种可能的实施方式中,根据关系类型绑定对应的页面统计函数,具体包括下述内容中的至少一种:
10、在关系类型为b-tree索引时,绑定b-tree页面统计函数;
11、在关系类型为hash索引时,绑定hash页面统计函数;
12、在关系类型为gist索引时,绑定gist页面统计函数;
13、在关系类型为gin索引时,加载gin索引处理模块并绑定gin页面统计函数;
14、在关系类型为brin索引时,加载brin索引处理模块并绑定brin页面统计函数;
15、在关系类型为bloom索引时,加载bloom索引处理模块并绑定brin页面统计函数。
16、在一种可能的实施方式中,对第二页面集合中的页面执行页面全量扫描并判定元组可见性,得到页面统计数据的步骤,具体包括:
17、顺序扫描第二页面集合中的页面;
18、在扫描到当前元组时,确定当前元组所在的当前块;
19、根据块指针定位当前块之前的未统计块,并累加未统计块的页面空闲空间;
20、基于全局最老事务标识判定当前元组的可见性;
21、将当前元组的可见性分类结果与当前块对应的页面空闲空间写入页面统计数据,并更新块指针至当前块之后的下一块。
22、在一种可能的实施方式中,在基于页面统计数据采用预设统计算法确定数据库关系的全表统计量的步骤之前,还包括:
23、在数据库关系为b-tree索引时,读取索引元数据页并从中获取版本数据和树深度数据;
24、遍历b-tree索引的各索引页面;
25、在当前索引页面为叶页时,统计活元组计数、死元组计数和页面空闲空间,并基于页面空闲空间与最大可用空间确定叶页填充率;或者,在当前索引页面为内部页时,记录内部页计数;或者,在当前索引页面为空页时,记录空页计数;或者,在当前索引页面为已删除页时,记录已删除页计数;
26、比较当前叶页的下一页指针与当前块号,确定链式碎片数据,得到碎片率数据;
27、将版本数据、树深度数据、活元组计数、死元组计数、叶页填充率、内部页计数、空页计数、已删除页计数以及碎片率数据写入页面统计数据。
28、在一种可能的实施方式中,获取数据库关系的页面集合的步骤之前,还包括:
29、对数据库关系施加共享访问锁;
30、基于共享访问锁打开数据库关系的页面集合中的各页面。
31、在一种可能的实施方式中,获取数据库关系的页面集合,并基于可见性映射将页面集合划分为具有全可见标记的第一页面集合和不具有全可见标记的第二页面集合的步骤,具体包括:
32、读取可见性映射页面至第一缓冲区;
33、将与可见性映射页面相邻的下一可见性映射页面预加载至第二缓冲区;
34、基于第一缓冲区中的可见性映射页面确定当前数据页面的全可见标记;
35、在处理后续数据页面时,交换第一缓冲区与第二缓冲区对应的页面读取次序,并继续预加载下一可见性映射页面。
36、在一种可能的实施方式中,预设统计算法包括加权回归统计模型;基于页面统计数据采用预设统计算法确定数据库关系的全表统计量的步骤,具体包括:
37、提取已扫描页面对应的空闲空间数据以及元组分布数据;
38、基于空闲空间数据和元组分布数据确定各已扫描页面的外推权重;
39、基于外推权重,通过加权回归统计模型对页面统计数据执行加权回归处理,得到全表统计量。
40、在一种可能的实施方式中,基于页面统计数据采用预设统计算法确定数据库关系的全表统计量的步骤之后,还包括:
41、确定实际扫描页数和页面总数;
42、基于实际扫描页数和页面总数计算实际扫描页数占比;
43、将实际扫描页数占比输出。
44、第二方面,本技术实施例提供一种数据库膨胀统计装置,装置包括:
45、划分模块,用于获取数据库关系的页面集合,并基于可见性映射将页面集合划分为具有全可见标记的第一页面集合和不具有全可见标记的第二页面集合;
46、处理模块,用于对第一页面集合中的页面根据空闲空间映射获取页面空闲空间并确定元组占用量,对第二页面集合中的页面执行页面全量扫描并判定元组可见性,得到页面统计数据;
47、确定模块,用于基于页面统计数据采用预设统计算法确定数据库关系的全表统计量。
48、在一种可能的实施方式中,处理模块还用于:
49、解析数据库关系的关系名或关系标识符,得到数据库关系的关系类型;
50、根据关系类型绑定对应的页面统计函数,页面统计函数用于对页面集合中的页面执行膨胀统计。
51、在一种可能的实施方式中,处理模块具体用于:
52、在关系类型为b-tree索引时,绑定b-tree页面统计函数;
53、在关系类型为hash索引时,绑定hash页面统计函数;
54、在关系类型为gist索引时,绑定gist页面统计函数;
55、在关系类型为gin索引时,加载gin索引处理模块并绑定gin页面统计函数;
56、在关系类型为brin索引时,加载brin索引处理模块并绑定brin页面统计函数;
57、在关系类型为bloom索引时,加载bloom索引处理模块并绑定brin页面统计函数。
58、在一种可能的实施方式中,处理模块具体用于:
59、顺序扫描第二页面集合中的页面;
60、在扫描到当前元组时,确定当前元组所在的当前块;
61、根据块指针定位当前块之前的未统计块,并累加未统计块的页面空闲空间;
62、基于全局最老事务标识判定当前元组的可见性;
63、将当前元组的可见性分类结果与当前块对应的页面空闲空间写入页面统计数据,并更新块指针至当前块之后的下一块。
64、在一种可能的实施方式中,确定模块还用于:
65、在数据库关系为b-tree索引时,读取索引元数据页并从中获取版本数据和树深度数据;
66、遍历b-tree索引的各索引页面;
67、在当前索引页面为叶页时,统计活元组计数、死元组计数和页面空闲空间,并基于页面空闲空间与最大可用空间确定叶页填充率;或者,在当前索引页面为内部页时,记录内部页计数;或者,在当前索引页面为空页时,记录空页计数;或者,在当前索引页面为已删除页时,记录已删除页计数;
68、比较当前叶页的下一页指针与当前块号,确定链式碎片数据,得到碎片率数据;
69、将版本数据、树深度数据、活元组计数、死元组计数、叶页填充率、内部页计数、空页计数、已删除页计数以及碎片率数据写入页面统计数据。
70、在一种可能的实施方式中,划分模块还用于:
71、对数据库关系施加共享访问锁;
72、基于共享访问锁打开数据库关系的页面集合中的各页面。
73、在一种可能的实施方式中,划分模块具体用于:
74、读取可见性映射页面至第一缓冲区;
75、将与可见性映射页面相邻的下一可见性映射页面预加载至第二缓冲区;
76、基于第一缓冲区中的可见性映射页面确定当前数据页面的全可见标记;
77、在处理后续数据页面时,交换第一缓冲区与第二缓冲区对应的页面读取次序,并继续预加载下一可见性映射页面。
78、在一种可能的实施方式中,预设统计算法包括加权回归统计模型;确定模块具体用于:
79、提取已扫描页面对应的空闲空间数据以及元组分布数据;
80、基于空闲空间数据和元组分布数据确定各已扫描页面的外推权重;
81、基于外推权重,通过加权回归统计模型对页面统计数据执行加权回归处理,得到全表统计量。
82、在一种可能的实施方式中,确定模块还用于:
83、确定实际扫描页数和页面总数;
84、基于实际扫描页数和页面总数计算实际扫描页数占比;
85、将实际扫描页数占比输出。
86、第三方面,本技术实施例提供一种电子设备,包括:存储器和处理器;存储器存储计算机执行指令;处理器执行存储器存储的计算机执行指令,使得处理器执行如上第一方面和/或第一方面各种可能的实施方式。
87、第四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如上第一方面和/或第一方面各种可能的实施方式。
88、第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如上第一方面和/或第一方面各种可能的实施方式。
89、本技术实施例提供的数据库膨胀统计方法及程序产品,该方法通过获取数据库关系的页面集合,并基于可见性映射将页面集合划分为具有全可见标记的第一页面集合和不具有全可见标记的第二页面集合。分别对第一页面集合中的页面根据空闲空间映射获取页面空闲空间并确定元组占用量,以及对第二页面集合中的页面执行页面全量扫描并判定元组可见性得到页面统计数据。这样,能够针对不同页面状态采用与其信息特征相适配的统计方式。在避免对全体页面一律全量扫描的同时保留对关键页面的精细统计能力,进而基于页面统计数据采用预设统计算法确定数据库关系的全表统计量时,可以兼顾数据库膨胀统计的准确度提升及较低资源开销。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com