基于 PostgreSQL 数据库的表压缩技术研究与实现.pptVIP

基于 PostgreSQL 数据库的表压缩技术研究与实现.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于 PostgreSQL 数据库的表压缩技术研究与实现

表压缩方案介绍 数据表压缩:基于排序的字典生成方案 1 A ROWID01 1 B ROWID02 2 A ROWID03 1 B ROWID04 3 C ROWID05 3 C ROWID06 3 D ROWID07 1 A ROWID08 1 A ROWID09 1 C ROWID10 3 A ROWID11 3 C ROWID12 3 C ROWID13 字典条目生成算法 ①扫描连续若干条记录 ②返回字典条目数组 字典条目1 … … 字典条目N ③扫描下一组记录 表压缩方案介绍 数据表压缩:基于排序的字典生成方案 ID Name Country 1001 Jack US 1002 Jack JP 1003 John US … … … 001JackUS 002JackJP 003JohnUS 01JackUS 02JackJP 03JohnUS … … 001JackUS 003JohnUS subStr1 002JackJP 01JackUS subStr2 … … MaxSubStr = Longest(subStr1, subStr2, … …) 预读取N条记录 生成后缀数组并排序 判断连续N个后缀 是否同源 动态规划法获取首尾两个记录的最长公共子串 表压缩方案介绍 数据表压缩:字典生成方案算法对比 抽样算法: record ? 待插入记录 offset ? 插入记录在item数组中的偏移量 frequency ? 生成字典条目的频率 if (offset % frequency == 0) { //插入字典条目 insertDict(dict, record); //调整字典插入指针 resetDictPtr(dict, record.getLength()); } 排序算法:生成一个字典条目 subStr = null; s = 0; while(s + RD_NUM– 1 = N) { if(suffix[s] to suffix[s + RD_NUM - 1] are from different records) { str = getCommonPrefix(suffix[s], suffix[s + RD_NUM - 1]); if(str.len subStr.len) subStr = str; } s++; //后移,处理下一组后缀记录 } //end while insertDict(subStr); replace(suffix[], subStr,’\xFF’); qsort(suffix[]); 抽样算法:时间复杂度O(1) 空间复杂度O(1) 排序算法:时间复杂度O(C*N*M) 空间复杂度O(N*M) C:所需字典条目数;N:记录个数; M:记录长度 补充工作 基于字典的Btree索引压缩方案 Page Header Item1 … ItemN 索引字典 Special Space flags IndTup1 IndTup2 … … IndTupN 抽样方式产生字典条目; 按字段对其寻找匹配子串; 替代重复字段只需要两个字节,记录在字典中的偏移量即可。 Header int bigint bigint Header dict_off bitmap 压缩 压缩率:16 / 28 = 57.14% 补充工作 基于字典的Btree索引压缩方案 原页面规模 压缩页面规模 压缩率 1000条记录 7页,56 KB 6页,48 KB 85.71% 10000条 记录 10_10_100 46页,368 KB 47页,376 KB 102.17% 10_100_10 46页,368 KB 40页,320 KB 86.96% 100_10_10 46页,368 KB 42页,336 KB 91.30% CREATE TABLE test ( C1 bigint, C2 int, C3 bigint ) CREATE INDEX test_index on test (C1, C2, C3); 测试数据: for (i=1; i10; i++) for(j=1; j10; j++) for(k=1; k100; k++) output(i, j, k); 补充工作 基于字典的Btree索引压缩方案 10000条记录 10_10_100 46页,368 KB 47页,376

文档评论(0)

qianqiana + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5132241303000003

1亿VIP精品文档

相关文档