2021SC@SDUSC
在小组中我负责索引的建立与使用的相关部分,在此一共写了16篇相关的分析报告,着重分析各种索引的操作和管理方法,以及分析了PG中四种最重要的索引B-Tree索引,Hash索引,GIST索引,GIN索引。分别讲述了这四种索引相关的原理,组织结构,创建,查询,插入等相关重要函数,同时也学会了在PG中如何使用这些索引类型来加快查找的速度。
在分析了关于PG中与索引相关的代码,这只不过是PG源码的一部分,但通过这一部分我充分体会到了PG源码的强大,可靠,安全等等特性,在索引的源码中,为了避免并行操作造成的数据的不统一以及其他的一些危害,在大部分函数的前一阶段,PG对于锁的设置与考虑是十分缜密的,包括缓冲区的pin以及页面上的lock等,多种锁的使用保证了系统的并发进行的安全性。
我们分析的12.0版本与之前的9.0版本很多地方都有较大改动,比如有些索引结构在9.0中使用了stack的相关结构,12.0版本改成了堆等查询速度更快的数据结构,这样更加优化了数据库处理大量数据时的查询速度,12.0版本对于相关的数据结构考虑更加全面,对于锁的设置以及加锁和解锁的时机考虑更加恰当,这也是PG开源后更加强大的地方。
而在PG中引用了大量的指针,加快函数调用的速度,同时对于大量的函数的层级调用PG也做的很有条理,把不同的功能封装成各个的函数从而可以使得结构更加清晰明了,这也是之后我需要需要学习的地方。
总之这次的分析PG源码获益匪浅,在之后的写代码过程中我也会学习PG的相关思想,让自己的代码更有条理,更有鲁棒性。

postgreSQL源码分析——索引的建立与使用——总结篇相关推荐

  1. postgreSQL源码分析——索引的建立与使用——GIST索引(2)

    2021SC@SDUSC 本篇博客主要讲解GiST索引创建以及删除的相关函数 这里写目录标题 GIST创建 相关数据结构 GISTBuildState GISTInsertStack gistbuil ...

  2. postgreSQL源码分析——索引的建立与使用——Hash索引(3)

    2021SC@SDUSC 上一篇博客讲了关于Hash索引创建与插入的相关函数,这一篇博客讲述关于溢出页的操作函数以及Hash表的扩展相关的函数. 目录 溢出页的分配和回收 _hash_addovflp ...

  3. postgreSQL源码分析——索引的建立与使用——Hash索引(2)

    2021SC@SDUSC 目录 Hash索引创建 hashbuild函数 _hash_init函数 Hash索引的插入 hashinsert函数 _hash_doinsert函数 总结 Hash索引创 ...

  4. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(2)

    2021SC@SDUSC 目录 上层操作函数 index_open index_beginscan() index_create() indexcmd.c 下层接口函数 IndexScanDescDa ...

  5. postgreSQL源码分析——索引的建立与使用——Hash索引(1)

    2021SC@SDUSC 目录 Hash索引 Hash索引原理 Hash表 Hash索引结构 Hash的页面结构 元页 桶页,溢出页,位图页 和B-Tree相比的优缺点 优点 缺点 总结 Hash索引 ...

  6. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)

    2021SC@SDUSC 目录 概述 管理索引的系统表 记录索引相关的系统表 与索引系统表相关的后端源码 索引的操作函数 上层操作函数 下层接口函数 概述 索引是指按表中某些关键属性或表达式建立元组的 ...

  7. postgreSQL源码分析——索引的建立与使用——B-Tree索引(3)

    2021SC@SDUSC 目录 B-Tree的插入 bt_insert _bt_doinsert BTInsertStateData _bt_search函数 _bt_moveright函数 B-Tr ...

  8. postgreSQL源码分析——索引的建立与使用——B-Tree索引(2)

    2021SC@SDUSC 目录 B-Tree建立过程 IndexAmRoutine BTBuildState BTWriteState btbuild() _bt_leafbuild _bt_load ...

  9. postgreSQL源码分析——索引的建立与使用——GIST索引(1)

    2021SC@SDUSC 这一篇博客主要讲解GIST索引的相关的介绍,组织结构以及原理的讲解. 目录 GIST 简介 介绍 扩展性 实现 typedef struct GISTSTATE GIST的索 ...

最新文章

  1. 转-android图片降低图片大小保持图片清晰的方法
  2. 关于docker的存储驱动
  3. mysql replace into 使用过程中报错
  4. 前端:CSS/13/HTML引入CSS的方法,CSS表格属性,盒子模型,上下外边距合并
  5. 对Redis单线程的一些看法
  6. kali中binwalk/foremost/zip2john工具的配合使用
  7. php houdini,houdini中文翻译.pdf
  8. 网站建设经验分享:如何设计及运营网站
  9. 3.4.7nbsp;安迪·格鲁夫
  10. java 自定义循环标签_Jsp2.0自定义标签(第二天)——自定义循环标签
  11. Ubuntu-18.04.5-desktop安装教程
  12. 华为模拟器三个路由器全网互通
  13. JAVA 接口(interface)
  14. 用Arduino制作红外线循迹自动机器人
  15. SEED(1)-实验环境搭建
  16. js 中的this指针
  17. 西安的IT要怎么才能发展?
  18. 奔腾PLFE5001电压力锅
  19. 电商项目秒杀设计思路
  20. 佳力奇IPO过会:拟募资11亿 西安现代与华控湖北是股东

热门文章

  1. u-boot移植随笔:System.map文件格式
  2. python 标量_python:将标量视为一个元素列表
  3. 【Flink】Flink Container exited with a non-zero exit code 143
  4. 【Java】Java Long映射到浏览器或者JavaScript后损失精度
  5. windows下curl
  6. 【Flink】Flink的窗口触发器 PurgingTrigger
  7. mac 下 ~/.bash_profile无效
  8. Spring: Spring 从xml获取bean
  9. Oracle : ORA-02290: 违反检查约束条件
  10. 【python】python 爬虫(python抓取网站的图片)