![](https://img-blog.csdnimg.cn/20200208160120793.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库系统原理
文章平均质量分 83
数据库系统原理
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
<PostgreSQL数据库内核分析>之第六章:查询执行
文章目录五、其他子功能介绍1.元组操作TupleTableSlot2.表达式计算五、其他子功能介绍1.元组操作TupleTableSlotPG中使用元组存储所有信息,把偶偶各种系统信息、数据等存储模块提供了很好的元组HeapTuple定义和操作结构,但是该接口是面向物理元组的,结构解析和构造开销较大,不能满足执行器高效处理元组的需求为了能够统计地表示和处理各种形式的元组,执行器定义了数据结构TupleTableSlot结构和相关的处理函数,以便执行过程中按照需要,使用相应形式的元组进行处理,并支原创 2022-02-14 11:30:19 · 1248 阅读 · 2 评论 -
<PostgreSQL数据库内核分析>之第五章:查询编译
文章目录一、概述二、查询分析一、概述查询编译的主要任务是根据用户的查询语句生成数据库中最优的执行计划查询执行过程中所涉及的各个模块说明如下:若是简单的命令(建表、创建用户、备份等)则将其分配到功能性命令处理模块负责命令(SELECT\INSERT\DELETE\UPDATE)则要为其构建查询树(Query结构体),然后交给查询重写模块查询重写模块接收到查询树后,按照该查询所涉及的规则和视图对查询树进行重写,生成新的查询树生成路径模块依据重写过的查询树,考虑关系的访问方式、连接方式和连接顺序等原创 2022-02-10 13:48:41 · 1127 阅读 · 1 评论 -
<postgreSQL查询优化深度探索>之第四章:逻辑分解优化
文章目录一、创建RelOptInfo1.RelOptInfo结构体2.IndexOptInfo结构体3.创建RelOptInfo二、初识等价类三、谓词下推四、PlaceHolderVar的作用五、Lateral语法的支持1.Lateral的语义分析2.收集Lateral变量3.收集Lateral信息六、消除无用连接项七、Semi Join消除八、提取新的约束条件1.提取需要满足的条件2.提取流程3.选择率修正一、创建RelOptInfo在进行逻辑重写优化的过程中,查询树中的连接树Query->jo原创 2022-01-30 11:20:03 · 1477 阅读 · 0 评论 -
<postgreSQL查询优化深度探索>之第六章:扫描路径
文章目录一、代价1.代价基准单位2.启动代价和整体代价3.表达式代价的计算二、路径PATH1.Path结构体2.并行参数3.参数化路径4.PathKey三、make_one_rel函数四、普通标的扫描路径1.顺序扫描2.索引扫描3.位图扫描五、小结一、代价1.代价基准单位扫描路径是对基表进行扫描的执行路径,针对不同的基表有不同的扫描路径eg:对于堆表有顺序扫描SeqScan、针对索引有索引扫描IndexScan和位图扫描BitmapScan,子查询有子查询扫描SubqueryScan、对于通用表达原创 2022-01-29 13:59:04 · 2372 阅读 · 0 评论 -
第四章:德哥之PostgreSQL应用开发指南4
文章目录1.SQL高级用法1.SQL高级用法PostgreSQL SELECT 的高级用法(CTE, LATERAL, ORDINALITY, WINDOW, SKIP LOCKED, DISTINCT, GROUPING SETS, …) - 珍藏级CTE(递归)LATERALORDINALITY(SRF)WINDOWSKIP LOCKEDDISTINCT ONGROUPING SETS,CUBE,ROLLUP28:18...原创 2022-01-26 23:00:58 · 875 阅读 · 0 评论 -
PG-Strom源码分析
文章目录1.环境2.PG-Strom启动3.如何自定义一个Custom Scan?1.环境硬件:CentOS7,3.10.0-1160.49.1.el7.x86_64Tesla T4 GPU软件:PG14.1,PG-Strom4.0CUDA 11.52.PG-Strom启动何时开始执行_PG_init?下面是PG代码的执行流程(gdb) bt#0 _PG_init () at src/main.c:560#1 0x0000000000b0d00f in interna原创 2022-01-18 15:17:26 · 1178 阅读 · 0 评论 -
第四章:德哥之PostgreSQL应用开发指南2
文章目录1.数据类型、操作符2.内置数据类型2.数据库对象1.数据类型、操作符pg中所有的数据类型postgres=# select * from pg_type ;postgres=# \d pg_type;增加一个表,会增加一个表类型,这是一个复合类型,数据输入输出接口走的是record_in 和record_outpostgres=# \d table1;postgres=# select * from pg_type where typname = 'table1'; oid原创 2022-01-12 11:24:49 · 830 阅读 · 0 评论 -
NVIDIA CUDA初级教程(P11)CUDA程序基本优化
文章目录1.Parallel Reduction并行规约2.Warp分割1.Parallel Reduction并行规约最优性能=有效的数据并行算法+针对GPU架构特性的优化eg:Parallel Reduction(sum)这个过程类似篮球锦标赛的淘汰过程:n个元素进行log(n)个回合,如何在CUDA上实现?//累加存在shared memory内的元素,目的是提升访存性能__shared__ float partialSum[element_num]; unsigned int原创 2022-01-05 23:08:06 · 487 阅读 · 0 评论 -
NVIDIA CUDA初级教程(P5-P10)GPU体系架构和CUDA/GPU编程模型
文章目录1.GPU体系架构2.CUDA/GPU 编程模型1.GPU体系架构为什么需要GPU?应用的需求越来越高计算机技术由应用驱动(Application Driven)GPU(Graphic Processing Unit)GPU是一个异构的多处理器芯片,为图形图像处理优化CPU类型的存储器架构GPU类型的存储器架构2.CUDA/GPU 编程模型CPU-GPU交互各自的物理内存空间通过PCIE总线互连(8GB/s~16GB/s)交互开销较大GPU线程组织模型原创 2022-01-04 20:16:16 · 2092 阅读 · 0 评论 -
NVIDIA CUDA初级教程(P2-P3)CPU体系架构概述、并行程序设计概述
文章目录1.CPU体系架构概述1.CPU体系架构概述现代CPU架构CPU的定义(1)执行指令、处理数据的器件:完成基本的逻辑和算术指令(2)内存接口、外部设备接口(3)包含大量晶体管指令指令优化的目标:CPI(每条指令的时钟数)*时钟周期算术: add r3,r4 -> r4访存: load [r4] -> r7控制: jz end桌面应用Desktop Programs的特点(1)轻量级进程,少量线程 Lightly threaded(2)大量分支和交互操作原创 2022-01-04 17:29:59 · 1383 阅读 · 0 评论 -
<postgreSQL查询优化深度探索>之第三章:逻辑重写优化
文章目录一、通用表达式二、子查询提升三、UNION ALL优化四、展开继承表五、预处理表达式1.连接Var的溯源2.常量化简3.谓词规范4.子连接处理六、处理HAVING子句七、Group By键值消除八、外连接消除九、grouping_planner的说明十、小结一、通用表达式二、子查询提升三、UNION ALL优化四、展开继承表五、预处理表达式1.连接Var的溯源2.常量化简3.谓词规范4.子连接处理六、处理HAVING子句七、Group By键值消除八、外连接消除九、grou原创 2022-01-04 11:03:02 · 489 阅读 · 0 评论 -
NBIDIA CUDA初级教程(P4)Window和Linux安装CUDA环境
文章目录1.在windows下安装CUDA开发:2.Linux下安装1.在windows下安装CUDA开发:CUDA toolkit+vs2010环境(1)CUDA Windos toolkit打开NVIDIA Corporation中CUDA Samples里面搜索smoke,若可以允许说明CUDAtoolkit安装完毕(2)打开vs,若能在新建程序处看到新建一个NVIDIA事务程序,说明开发环境安装完毕2.Linux下安装判断是否有GPUlspci|grep -i nvidia原创 2021-12-29 22:31:13 · 1361 阅读 · 0 评论 -
<postgreSQL查询优化深度探索>之第二章:查询树学习总结
文章目录一、Node的结构体二、Var结构体三、RangeTblEntry结构体四、RangeTblRef结构体五、JoinExpr结构体六、FromExpr结构体七、Query结构体八、查询树的展示九、查询树的遍历十、执行计划的展示十一、小结一、Node的结构体typedef struct List{ NodeTag type; /* T_List, T_IntList, or T_OidList */}List;typedef struct Query{ NodeTag typ原创 2021-12-29 17:36:40 · 1589 阅读 · 0 评论 -
<postgreSQL查询优化深度探索>之第一章:概述学习总结
文章目录一、查询优化的简介二、逻辑优化1.关系模型2.逻辑优化eg三、物理优化1.物理优化的4个法宝2.物理路径的生成过程四、文件介绍五、实例的约定六、小结一、查询优化的简介二、逻辑优化1.关系模型关系代数的5个基本操作符:选择、投影π、笛卡尔积X、并集、U、差集eg:基本操作扩展操作2.逻辑优化eg若要获得编号为5的老师承担的所有的课程的名字eg:关系代数的等价变换前后结果如下优化:分别从水平和垂直方向上尽早缩小笛卡尔积的中间结果(1)进来将选择操作下推到下层节点来做(2原创 2021-12-29 16:39:44 · 812 阅读 · 0 评论 -
第四章:德哥之PostgreSQL应用开发指南1
文章目录1.需要了解的网站2.基本SQL语句1.需要了解的网站PostgreSQL TutorialSQL CommandsChapter 2. The SQL Language2.基本SQL语句保留字:PostgreSQL Oracle兼容性 之 - parser SQL保留|关键字(keywrods)大全(1)建表create table test(id int8 primary kety,info text,crt_time timestamp);(2)select int原创 2021-12-27 20:27:40 · 730 阅读 · 0 评论 -
第三章:德哥之PostgreSQL实例初始化、基本配置
文章目录1.初始化数据库集群2.PG参数介绍、优化3.数据库防火墙介绍与配置4.数据库物理架构5.数据库逻辑架构6.数据库权限体系7.连接数据库8.SSL链路1、初始化数据库实例2、数据库架构3、PG参数介绍、优化4、数据库防火墙介绍与配置5、数据库权限体系、逻辑结构介绍6、连接数据库7、PG 11 新特性1.初始化数据库集群使用PG的bki脚本创建元数据规划数据目录默认的表空间是pg_default,其目录在$PG_DATA中,就是base目录,base就是一个默认的表空间$PG_DATA原创 2021-12-23 12:03:40 · 1959 阅读 · 1 评论 -
3.8 最长共同前缀
文章目录1.题目2.代码1.题目题目思路(1)无脑查找即可,定义两个变量i和j,其中i是遍历搜索字符串中的字符,j是遍历字符串集中的每个字符串(2)将单词上下排好,则相当于一个各行长度有可能不相等的二维数组,遍历顺序和一般的横向逐行遍历不同,而是采用纵向逐列遍历2.代码...原创 2021-12-22 10:01:30 · 189 阅读 · 0 评论 -
第二章:德哥之PostgreSQL在Linux中的软件安装
参考:第二章:安装,DBA不可不知的操作系统内核参数原创 2021-12-21 22:39:26 · 1337 阅读 · 0 评论 -
SQL查询优化原理与向量化执行引擎
文章目录1.SQL查询优化的目的2.SQL 查询优化的基本原理之研究如何通过关系代数优化执行方案3.总结使用关系代数进行查询优化的要点1.SQL查询优化的目的从使用的角度,SQL 作为一种可以被非相关技术人员快速入手的编程语言, 其主要优点就在于即使用户因并不了解数据库内部的实现细节而写出来十分糟糕的查询语句,数据库就可以在一定程度上将其转化为合理的执行方案高效的返回结果从技术的角度来说,通过对用户输入的查询进行优化,实现更优的执行步骤规划数据库可以实现更快的执行和更少的 IO 消耗。从而节约资源原创 2021-12-18 22:49:32 · 1838 阅读 · 2 评论 -
在CentOS上安装PMDK库安装(保姆级教程)
文章目录1.安装前的准备2.安装说明3.安装PMDK库4.安装ndctl库1.安装前的准备安装前需要保证yum是可用状态若服务器能访问阿里云镜像,可以参考中yum源配置yum repolistyum makecache执行上述命令不会报错2.安装说明PMDK库安装依赖ndctl,ndctl依赖autoconf和pkg-config等库,如果安装过程中缺少相应依赖,需要参考以下命令的执行方式去安装依赖包yum install -y bash-completion*yum instal原创 2021-12-15 10:18:00 · 2087 阅读 · 0 评论 -
<POSTGRESQL修炼之道:从小工到专家>之PostgreSQL中执行计划(1-3结)
文章目录一、执行计划的解释1.EXPLAIN命令2.EXPLAIN输出结果解释3.EXPLAIN使用示例4.全表扫描5.索引扫描6.位图扫描7.条件过滤8.Nestloop Join9.Hash Join10.Merge Join二、与执行假话相关的配置项三、统计信息的收集一、执行计划的解释1.EXPLAIN命令2.EXPLAIN输出结果解释3.EXPLAIN使用示例4.全表扫描5.索引扫描6.位图扫描7.条件过滤8.Nestloop Join9.Hash Join10.Merge J原创 2021-12-13 20:28:48 · 1692 阅读 · 0 评论 -
LLVM的编译原理
文章目录1.编译原理2.基于LLVM的编译原理简明教程1.编译原理Java语言Java结合了编译和解释的过程,我们写的 Java 源文件首先被编译成 字节码(bytecode),字节码是一种中间码,它通常被看成是可执行的二进制文件。再由 Java 虚拟机对字节码解释执行。这样,在一台机器上编译的字节码就能够在其他机器上解释执行,这种体现了 Java 语言的平台无关性。为了提高编译速度,Java 中有一种 just-in-time,JIT,即时编译器会一边编译一边执行。一个源文件程序可能被划分为原创 2021-12-10 15:05:13 · 624 阅读 · 0 评论 -
数据库与开源编译器框架LLVM
文章目录1.开源编译器框架LLVM2.LLVM如何在数据库中使用?3.PG中的JIT1.开源编译器框架LLVM2.LLVM如何在数据库中使用?3.PG中的JIT参考:为什么编译原理被称为龙书?,有说llvmJIT对SQL解析优化提升PG查询性能数倍,SQL解析本身消耗占比不高吧,能有这么高提升?,作为编译优化技术代表的开源编译器框架LLVM,如何在数据库中应用?,PgSQL · 特性分析 · 浅析PostgreSQL 中的JIT,JIT 在数据仓库中的应用价值...原创 2021-12-09 19:58:08 · 2555 阅读 · 0 评论 -
SQL优化之火山模型、向量化、编译执行
文章目录1.当代CPU特性2.查询执行模型3.向量化VS编译执行4.编译执行融合向量化优化方向其次,火山模型中一次只取一条数据,如果每次取多条数据呢?(1)可以将每次 next 带来的 CPU 开销被一组数据给分摊。这样当 CPU 访问元组中的某个列时会将该元组加载到 CPU Cache(如果该元组大小小于 CPU Cache 缓存行的大小), 访问后继的列将直接从 CPU Cache 中获取,从而具有较高的 CPU Cache 命中率(2)当然是同一列的时候,所以针对的是列存的场景,因为输入是原创 2021-12-09 11:29:31 · 5173 阅读 · 0 评论 -
三种常见的数据库查询引擎执行模型
文章目录参考:「分布式技术专题」三种常见的数据库查询引擎执行模型原创 2021-12-09 11:08:57 · 1359 阅读 · 0 评论 -
《GPU 数据库核心技术综述》论文学习
文章目录一、背景二、GPU 数据库分类与层次1.商用型C-GDBMS 中分为3类2.研究型R-GDBMS三、查询编译器一、背景1.GPU性能极高GPU 与 CPU 具有不同的体系结构和处理模式,将更多的片上空间用于计算单元,控制单元和缓存单元相对很少,使得单块 GPU 上拥有数千个并发计算核心。因此,在同样的主频下,GPU 能够取得更高的并发计算能力,也使 GPU 具有满足大数据处理需求的巨大潜能。在时空数据 OLAP 分析任务和结果的可视化展示方面,几十个 GPU 的 GPU 数据库可以取原创 2021-12-08 17:34:17 · 3253 阅读 · 0 评论 -
操作型数据和分析型数据的主要区别
文章目录1.数据库的两大基本类型2.操作型数据库 VS 分析型数据库1.数据库的两大基本类型操作型数据库主要用于业务支撑。一个公司往往会使用并维护若干个数据库,这些数据库保存着公司的日常操作数据,比如商品购买、酒店预订、学生成绩录入等;分析型数据库主要用于历史数据分析。这类数据库作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析;2.操作型数据库 VS 分析型数据库数据组成差别 - 数据时间范围差别操作型数据库只会存放90天以内的数据,分析型数据库存放的则是数年原创 2021-12-08 16:31:02 · 2121 阅读 · 0 评论 -
持久内存入门篇
文章目录1.持久内存到底是什么?3.持久内存主要优势场景是什么?1.持久内存到底是什么?持久内存其实是一种新型的内存条,插在服务器的内存插槽里的-AMD的CPU无法使用,仅属于Intel持久内存所处地位我们可以看到持久内存处于外存(HDD或者SSD)以及内存DRAM之间,其不论在容量、性能、价格上都是处于两者的中间位置。如果你还是不太能理解我描述的是什么,那么最直接的,告诉你持久内存三个最重要的特征:大, 快,持久性:大:目前持久内存单条内存容量最大可以达到 512 GB,而目前服务器单转载 2021-12-08 11:44:59 · 2674 阅读 · 0 评论 -
<POSTGRESQL修炼之道:从小工到专家>之逻辑结构管理(6-11结)
文章目录九、索引1.索引简介2.索引的分类3.创建索引4.并发创建索引5.修改索引6.删除索引十、用户及权限管理十一、事务、并发、锁九、索引1.索引简介索引记录了表中一列或者多列的值与其物理位置之间的对应关系建立索引的好处是加快对表中记录的查找或者排序但是建立索引也有代价,增加了数据库的存储空间,在插入和修改数据时要花费较多的时间去更新索引2.索引的分类btree应用场景b-tree适合所有的数据类型,支持排序,支持大于、小于、等于、大于或等于、小于或等于的搜索。索引与递归查询结合原创 2021-12-07 12:02:36 · 901 阅读 · 0 评论 -
<POSTGRESQL修炼之道:从小工到专家>之逻辑结构管理(1-5节)
文章目录一、数据库逻辑结构介绍二、数据库基本操作三、模式schema1.模式的定义2.模式的使用3.公共模式4.模式的搜索路径5模式的权限6.模式的移植性四、表1.创建表2.表的存储属性3.临时表4.默认值5.约束6.修改表7.表继承及分区表8.分区表五、触发器一、数据库逻辑结构介绍PG中, 数据的组织结构可以分为三层:数据库一个PG数据库服务下可以管理多个数据库,当应用连接到一个数据库时,只能访问这个数据库中的数据表、索引一个数据库中有很多表、索引。PG中称之为Relation,其他数据库叫原创 2021-12-03 16:08:57 · 1114 阅读 · 0 评论 -
<PostgreSQL数据库内核分析>之第三章:存储管理
文章目录一、存储管理器的体系结构一、存储管理器的体系结构存储管理器是DBS与物理存取设备的接口存储管理器的体系结构如下(1)本地内存是每个后台进程所专有,存储属于该进程的高速缓存Cache、事务管理信息、进程信息等(2)为了防止多个进程并发访问共享内存中的数据时产生的冲突,PG提供了轻量级锁,用于支持对共享内存中同一数据的互斥访问...原创 2021-11-30 10:49:08 · 1244 阅读 · 0 评论 -
PostgreSQL数据库
《PostgreSQL数据库内核分析》–<PostgreSQL数据库内核分析>之第二章:PostgreSQL的体系结构–––【小马技术】PostgreSql 关系型数据库入门,一天学完 PostgreSQL–––––––––...原创 2021-11-25 22:34:11 · 743 阅读 · 0 评论 -
PostgreSql 关系型数据库入门之PostergreSql
文章目录1.什么是PostgreSql ?1.什么是PostgreSql ?原创 2021-11-25 22:31:24 · 1229 阅读 · 0 评论 -
<PostgreSQL数据库内核分析>之第二章:PostgreSQL的体系结构
文章目录一、PostgreSQL安装和数据库命令1.安装2.PG的数据库命令3.PG源代码的组织结构二、PG体系结构1.系统表一、PostgreSQL安装和数据库命令1.安装初始化数据库集簇cd postgres-master在拥有configure目录下执行:chmod +x ./configuremake;make installcd /usr/local/pgsqlmkdir data/-----数据库文件的存放目录useradd postgrespasswd postgres原创 2021-11-25 17:38:27 · 2102 阅读 · 0 评论 -
(P74-78)数据库系统下-运行日志
文章目录1.事务涉及到的元素2.不同的缓冲区策略会影响事务的持久性3.事务故障会影响事务的原子性4.怎样记录日志?5.Undo型日志及其故障恢复6.Redo型日志及其故障恢复7.Undo/Redo结合型日志及其故障恢复1.事务涉及到的元素数据库通常由元素构成通常, 1 元素 = 1 磁盘块 = 1 内存页/块可以更小,=1 记录 或更大 =1 关系每个事务都会读/写某些元素每个事务都以提交或者撤销结束COMMIT:事务提交ABORT:事务撤销DBMS需要保证事务的:持久性:原创 2021-11-23 16:27:14 · 818 阅读 · 0 评论 -
(P72-73)数据库系统下-数据库事务处理技术(故障恢复)
文章目录1.数据库的故障类型以及其影响2.数据库故障恢复的宏观思路3.小结1.数据库的故障类型以及其影响DBMS的运行方式DBMS利用内存(主存)和外存(辅存)这样的存储体系来进行数据库管理在内存中, 又将其分为程序数据(事务数据)和系统数据事务事务是DBMS对数据库进行控制的基本逻辑单元。事务:宏观上是由程序员设置的一条或多条SQL语句的一次执行;微观上是对数据元素的一系列基本操作,如读写等。需要提交和撤销。数据元素:DBMS一般以磁盘块为数据元素进行处理通常 1 数据元素 =原创 2021-11-23 14:51:35 · 1118 阅读 · 0 评论 -
(P67-71)数据库系统下-基于时间戳的并发控制
文章目录1.什么是时间戳?2.基于时间戳的并发控制1.什么是时间戳?不用锁,能否进行并发控制?时间戳(TIMESTAMP)一种基于时间的标志,将某一时刻转换成的一个数值。时间戳具有唯一性和递增性。事务的时间戳事务T启动时,系统将该时刻赋予T,为T的时间戳时间戳可以表征一系列事务执行的先后次序:时间戳小的事务先执行,时间戳大的事务后执行。利用时间戳,可以不用锁,来进行并发控制2.基于时间戳的并发控制借助于时间戳,强制使一组并发事务的交叉执行,等价于一个特定顺序的串行执行。特原创 2021-11-22 23:27:34 · 3122 阅读 · 4 评论 -
(P64-66)数据库系统下-锁
文章目录1.基于封锁的并发控制方法2.什么是锁3.封锁协议之锁的类型4.SQL之隔离性级别(允许程序员选择使用)5.两段封锁协议1.基于封锁的并发控制方法并发调度的正确性:当且仅当在这个并发调度下所得到的新数据库结果与分别串行地运行这些事务所得的新数据库完全一致,则说调度是正确的冲突可串行⊆可串行性⊆并发调度的正确性怎么样产生一个正确的并发调度?也就是怎么产生一个冲突可串行化的调度?主要分为:基于锁的方法金额基于撤回的方法2.什么是锁锁” 是控制并发的一种手段每一数据元素都有一唯一的原创 2021-11-22 22:18:08 · 584 阅读 · 0 评论 -
(P53-56)物理层查询优化
文章目录1.为什么要物理查询优化?2.1.为什么要物理查询优化?2.原创 2021-11-22 11:41:21 · 624 阅读 · 0 评论 -
(P58-63)并发控制和事务
文章目录1.为什么要进行并发控制2.事务1.为什么要进行并发控制数据库存在的三种典型的不一致现象,理解不一致是怎么发生的?丢失修改不能重复读脏读并发控制就是通过两大类并发控制方法去解决三种不一致性并发控制及相应的事务处理技术是DBMS的核心技术2.事务事务Transaction的定义事务是数据库管理系统提供的控制数据操作的一种手段,通过这一手段,应用程序员将一系列的数据库操作组合在一起作为一个整体进行操作和控制,以便数据库管理系统能够提供一致性状态转换的保证eg:“银行转帐原创 2021-11-22 10:37:51 · 674 阅读 · 0 评论