数据库一致性的实现
相信这是全网截至目前介绍隔离级别最详细的一份材料,欢迎批评指正。本文主要介绍了事务ACID的概念、对一致性和隔离性的理解。重点介绍了数据库隔离级别的基本原理,并介绍了MySQL和PostgreSQL隔离级别的实现。最后对TDSQL的数据库一致性实现方案做了介绍。
相信这是全网截至目前介绍隔离级别最详细的一份材料,欢迎批评指正。本文主要介绍了事务ACID的概念、对一致性和隔离性的理解。重点介绍了数据库隔离级别的基本原理,并介绍了MySQL和PostgreSQL隔离级别的实现。最后对TDSQL的数据库一致性实现方案做了介绍。
本文对PostgreSQL create index concurrently的原理分析。整个过程分为三段,每个阶段需要一个独立的事务。共需要对表进行两次全表扫描。
本文主要以btree为例介绍pg_am、pg_opclass、pg_opfamily、pg_amop、pg_amproc等几张系统表的作用。
作者最初阅读indxpath.c的原因是想找到下面这个问题的答案:索引到底在什么场景下可以被使用?src/backend/optimizer/path/indxpath.c可以回答这个问题。本文对它进行了注释,介绍索引扫描路径生成的全过程。主要包括索引扫描路径生成的前提、生成过程中所用的算法、最终路径的种类等。整个过程,有大量的代码与处理条件(过滤条件和连接条件)相关。
本文列出了PG索引系列文章的所有链接
本文介绍Bloom filter,它可以用来检查一个元素在集合中是否存在。如果它判断元素在集合中不存在,则这个元素在集合中一定不存在。如果它判断元素在集合中存在,则可能存在,也可能不存在。即它可能返回假阳性的结果,但不会返回假阴性的结果。
本文介绍BRIN索引,它的思想是为一段连续的页面生成一个摘要信息,根据摘要信息判断这些页面是否都不满足查询条件,如果都不满足,则不再扫描这些页面,从而加速查询。它用来快速排除不符合查询条件的页面,而不是快速找到符合条件的页面或元组。
本文介绍RUM索引,它没有被包含在PG的标准发行版中。它是GIN索引的升级版,与GIN最大的区别是,它不但索引词素,把把词素在文档中出现的位置记录在索引中。在需要这些位置信息时,它的性能比GIN高很多。
本文介绍了GIN索引在全文检索、数组类型、jsonb类型上的应用。
SP-GiST索引主要突出SP,即空间划分。它适用于一个空间可以被递归划分成子空间的场景。