自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

数据源的港湾

要么健身,要么读书,身体和灵魂,必须有一个在路上

  • 博客(515)
  • 收藏
  • 关注

原创 (论文阅读)TiDB:一款基于Raft的HTAP数据库

关系数据库管理系统(RDBMS)因其关系模型、强大的事务保证和SQL接口而流行。它们在传统应用程序(如业务系统)中被广泛采用。但是,老的RDBMS不提供可伸缩性和高可用性。因此,在21世纪初,互联网应用程序更喜欢NoSQL系统,如谷歌Bigtable和DynamoDB。NoSQL系统放宽了一致性要求,并提供了高可伸缩性和可替代的数据模型,如键值对、图和文档。然而,许多应用程序还需要强大的事务、数据一致性和SQL接口,因此出现了NewSQL系统。

2023-11-17 18:28:09 352

原创 Oracle ADG的基本概念

备库与主库相比,可能暂时落后,但当它再次变为可用时,备用数据库将自动同步,而不会丢失数据。由于同步重做传输,这种模式可潜在地影响响应时间和吞吐量。可以通过配置一个低延迟网络,并为它分配足够应用高峰事务负载的带宽来将这种影响减到最小。最大可用模式适用于想要在生产站点上出现严重中断时确保获得零数据丢失保护,但不想让生产数据库受网络/备用服务器故障影响的企业。为防止备库发生网络故障,最好设置reopen参数,即使出现网络故障,也不会引发主库挂起,这时主库将从最大可用模式切换到最大性能模式。

2023-11-08 16:39:39 1580 1

原创 Oracle RAC是啥?

RAC是一个具有共享缓存体系结构的集群数据库,它克服了传统的不共享和共享磁盘方法的限制,为所有业务应用程序提供了一种可伸缩性和可用性的数据库解决方案,一般与Oracle Clusterware或第三方集群软件共同组成Oracle集群系统。裸设备(Raw devices) - 不经过文件系统,数据直接写入磁盘,好处是磁盘I/O性能很高,适合写操作频繁的业务系统。缺点是数据维护和备份不方便,备份只能通过dd命令或基于块级别的备份设备来完成,增加了维护成本。

2023-11-07 16:23:36 763

原创 哈希索引(PostgreSQL 14 Internals翻译版)

在这个特殊的例子中,我们取两个最低的位,得到0到3的值;通过绝对统一的数据分布和没有散列冲突,您可以使用更高的填充因子值,但在实际数据库中,它会增加页面溢出的风险。由于哈希函数将返回一个相同的值,因此所有数据将被放置到相同的桶中,并且增加桶的数量不会有帮助。为了在一定程度上平衡这种增长并避免一次分配过多的页面,从第10次增加开始,将页面分配为四个相等的批次,而不是一次分配所有的页面。综合所有页面的统计数据,桶0是空的,而所有的值都被放到了桶1中:其中一些位于主页面,不适合的可以在溢出页中找到。

2023-10-23 16:16:45 284

原创 理解Hash表

有效管理数据的技术是计算机科学的传统热点。除了存储数据之外,从存储中高效地恢复数据是另一个相关问题。即使使用最好的算法处理某些特定的数据,如果没有优化数据管理,我们的性能也会很差。因此,恢复和向算法提供数据以及保存其输出成为性能瓶颈。随着时间的推移,已经提出了几种保存和管理数据的技术。例如数组、链表、树和图。这些数据结构非常适合多种用途。但是,查找和恢复存储在它们中的数据的时间复杂度通常高于另一种数据结构:哈希表。因此,本教程将探讨与散列表有关的最相关的概念。首先,我们将简要回顾一下哈希。

2023-10-23 10:35:35 90

原创 Merge Joins(PostgreSQL 14 Internals翻译版)

合并连接处理的数据集,并返回以类似方式排序的结果。输入集可以在索引扫描后预先排序;否则,执行者必须在实际合并开始之前对它们进行排序。

2023-10-23 09:41:34 115

原创 B-tree(PostgreSQL 14 Internals翻译版)

在这种情况下,节点被分成两个,旧节点的一些元素被移动到新节点中,指向新子节点的指针被添加到父节点中。此外,可能有太多的副本,以至于它们不适合单个节点,因此相邻的叶节点也必须处理。如果搜索是通过条件“索引-列 ⩽expression”(或“索引-列⩾expression”)执行的,我们必须首先搜索满足相等条件的值的索引,然后在所需的方向遍历其叶节点,直到到达树的末端。您可以注意到,树的内部节点中最左边的键是冗余的:要选择根的子节点,只要满足条件KJA < OVB就足够了。生成的新节点在下面的图中突出显示。

2023-10-22 00:03:32 598 1

原创 WAL 模式(PostgreSQL 14 Internals翻译版)

因此,在最坏的情况下,walwriter需要运行三次才能到达特定的WAL条目:首先,它将写入位于缓存末尾的所有完整页面,然后它将返回到开头,最后,它将处理包含条目的未填充页面。由于这种类型的加载与典型的数据文件访问非常不同,因此有必要为WAL文件设置一个单独的物理存储,并用一个指向已挂载文件系统中的目录的符号链接替换PGDATA/pg_wal编录。当然,每个特定系统都有自己的数据,具体取决于当前负载,但很明显,对短OLTP事务的影响是非常明显的。从暂停中唤醒,进程检查缓存中是否有新的完全填满的WAL页面。

2023-10-20 18:18:11 402

原创 Write-Ahead Log(PostgreSQL 14 Internals翻译版)

由于检查点在启动时不记录任何日志,因此该LSN可以属于任何类型的WAL条目。

2023-10-18 18:46:39 309

原创 Hash Join(PostgreSQL 14 Internals翻译版)

因此,如果外部集的mcv上有常规的非多元统计信息(即,外部集由表表示,连接由单列执行),则具有与mcv对应的哈希码的行被认为是第一批的一部分。例如,如果键列在其所有行中包含一个相同的值,则它们将被放入同一个批处理中,因为散列函数将一次又一次地返回相同的值。两遍连接的启动成本是基于单遍连接的启动成本,这是由于写入尽可能多的页面以存储内部集所有行的所有必要字段的估计成本而增加的。每个批处理实际上被分成两个新的批处理:大约一半的行(假设分布是均匀的)留在哈希表中,而另一半保存到一个新的临时文件中。

2023-10-18 12:14:48 484

原创 Nested loop(PostgreSQL 14 Internals翻译版)

这里,Nested Loop节点遍历外层集合(tickets)的行,并对每一行搜索内部集合(ticket_flights)的对应行,将机票号(t.t ticket_no)作为参数传递给条件。可以更准确地估计列表中出现的行的选择性,只有剩下的行必须依赖基于均匀分布的计算。如果对Memoize节点的调用显示传递的参数值与已经缓存的行对应,则这些行将被传递到父节点(Nested Loop),而不检查子节点。由于连接的表是通过外键连接的,因此选择性估计依赖于子表的每一行在父表中恰好有一个匹配行的事实。

2023-10-17 16:48:09 654

原创 hash join的基本原理是怎样的?

我们知道数据库里面两表关联主要有三种常见的关联方式,即nested loop join在OLTP交易场景占比是最多的,常用于关联字段为主键或索引字段的情况,通过主键或索引以及loop的方式,A表可以快速查找到匹配的B表中的数据。merge join又称为sort merge,可想而知,如果被关联的两个数据集正好是有序的,那么采用这种方式是最高效的。hash join则是把一个表(通常为小表)放在hash内存中,进行匹配关联。虽然知道这点简单的理解,不过当别人问起来hash join具体怎么实现的时候,发现并

2023-10-17 09:24:08 299

原创 key value存储到底有什么优势?

如果我们设计为一张二维表格,那么如果这里的指标非常多,这张二维表格就会变得很宽,同时里面的数据会有很多的NULL值,这样会浪费大量的空间,因为存储时需要将没有数据的内容置为NULL(置为NULL也是需要消耗存储空间的)。由于这个二维矩阵是固定的表格的形式,这意味着表格里面的每个值都需要给定一个内容,如果这个值没有,就需要赋值NULL。如果我们业务模型是一个类似工业时序场景,数据并不是那种固定的二维表格形式,而是像下面这种方式入库,那么我们的表结构应该怎么设计呢?后来仔细想想,回答的完全偏了。

2023-10-13 17:19:51 213

原创 PostgreSQL的MVCC对比Oracle的MVCC有什么优劣势?

Oracle在修改数据前会把数据的旧值先写到undo表空间中以实现MVCC,而PG中的更新操作会被转换为delete+insert操作,然而这个delete并不是真正的把数据立刻删除掉,而是通过修改记录中的隐藏列来标记此行被删除,并在之后的某个时间通过后台任务来进行无效数据的清理。怎么理解呢,其实这些是相对Oracle的MVCC来说的,正如前面说的,Oracle的MVCC实现是把修改前数据存放在独立的undo表空间中,那么它就存在几个不足之处。当然了,PG的MVCC机制有好处,但它也是有坏处的。

2023-10-13 12:09:58 147

原创 关于GP7 release版在麒麟V10信创操作系统编译不过的问题解决

如上面同学所示,可能是代码习惯不好,漏掉了参数的初始化,从而导致编译报错。为了帮助社区的同学一起看一下如何处理这个问题,于是请相关研发同学找了一个麒麟V10的环境尝试了一下,果不其然,遇到了相同的报错,报错内容完全一样。根据这位同学的说法,主要问题出在rand_heap_pages这个变量的地方,原话说的是“把这个变量的定义地方,初始化一下就行”很多同学已经忍不住想快速试用GP 7新版本了,同时,为了满足信创要求,需要在国产的操作系统服务器上运行GP。接着,我们再尝试重新编译,编译成功!

2023-10-11 09:26:13 270

原创 Greenplum 对比 Hadoop

基于上述不同,体现在效率、功能等特性方面也大不相同。

2023-09-27 11:31:27 1232

原创 关于Greenplum为什么基于PostgreSQL而不是MySQL?

特别是在关联时对于三大JOIN技术:hash join、merge join、nestloop join的支持,MySQL只支持最后一种nestloop join(未来会支持hash join),而多个大表关联分析时hash join是必备的利器,缺少这些关联功能非常致命,难以在OLAP领域充当大任。PG中contrib目录下的各个第三方模块,在GP中的postgis空间数据库、R、MADLIB、pycrypto各类加密算法、gptext全文检索都是通过这种方式实现扩展的。的,没有被大公司控制,

2023-09-27 09:12:21 279

原创 Greenplum - 优化SQL语句

注:本文翻译自官网Greenplum数据库基于成本的优化器评估用于运行查询的许多策略,并选择成本最低的方法。与其他RDBMS优化器一样,在计算备选执行计划的成本时,Greenplum优化器会考虑要连接的表中的行数、索引的可用性和列数据的基数等因素。优化器还考虑数据的位置,它倾向于在段上执行尽可能多的工作,并尽量减少为完成查询而必须在段之间传输的数据量。当查询的运行速度低于预期时,您可以查看优化器选择的计划以及它为计划的每个步骤计算的成本。

2023-09-25 16:27:35 233

原创 YMatrix 5 社区版本安装介绍

本文描述YMatrix 5.1版本的安装过程,由于使用的操作系统为CentOS 7,具体步骤参考官网。

2023-09-20 18:22:43 253

原创 Greenplum实用工具-gpfdist

注:本文翻译自向Greenplum数据库段提供数据文件或从数据库段写入数据文件。

2023-09-19 09:40:26 524 1

原创 Greenplum实用工具-gpcheckperf

注:本文翻译自。

2023-09-18 12:40:36 177

原创 Greenplum报错could not fork new process for connection: Cannot allocate memory

在GP环境中有时候我们会遇到“could not fork new process for connection: Cannot allocate memory” 这样的报错,有时可能是整个节点的segment都会宕机。那么有可能就是内存相关的参数配置有误。Greenplum是一个进程模型的MPP数据库,对内存的要求相对较高。Greenplum中也有一些关于内存如何合理配置的要求,包括官方文档。上次输出表示协调者配置243G,segment配置82G内存。永久修改总进程数 pid_max,使配置立即生效。

2023-09-15 13:20:25 482

原创 Greenplum-性能问题常见原因

注:本文翻译自。

2023-09-14 16:23:57 317

原创 Greenplum-内存配置概述

在Greenplum数据库段主机上,可用的主机内存在计算机上运行的所有进程之间共享,包括操作系统、Greenplum数据库段实例和其他应用程序进程。管理员必须确定哪些Greenplum Database进程和非Greenplum Database进程共享主机的内存,并配置系统以有效地使用内存。定期监视内存使用情况以检测Greenplum Database或其他进程使用主机内存的方式的任何变化也同样重要。

2023-09-14 11:53:26 353

原创 Greenplum的并发控制概述

注:本文翻译自Greenplum数据库使用PostgreSQL多版本并发控制(MVCC)模型来管理堆表的并发事务。数据库管理系统中的并发控制允许并发查询以正确的结果完成,同时确保数据库的完整性。传统数据库使用两阶段锁定协议,防止事务修改已被另一个并发事务读取的数据,并防止任何并发事务读取或写入另一个事务已更新的数据。协调事务所需的锁会给数据库增加争用,从而降低整体事务吞吐量。Greenplum数据库使用PostgreSQL多版本并发控制(MVCC)模型来管理堆表的并发性。

2023-09-13 10:49:25 409

原创 gpcopy命令详解

注:本文部分翻译自gpcopy实用程序将对象从源Greenplum数据库系统中的数据库复制到目标Greenplum数据库系统中的数据库。

2023-09-12 10:21:27 516

原创 Greenplum高可用-从失效协调者恢复

注:本文翻译自如果主协调器失败,则无法访问Greenplum数据库系统,并且WAL复制停止。使用gpactivatstandby激活备用协调器。激活备用协调器后,Greenplum Database在最后一次成功提交事务时重建协调器主机状态。这些步骤假定为系统配置了备用协调器主机。

2023-09-11 15:49:15 172

原创 Greenplum高可用-从失效segment恢复

本主题将指导您在一个或多个段或主机出现故障并希望恢复故障段时应采取的措施。注:增量恢复只有在将段恢复到当前主机(就地恢复)时才有可能。

2023-09-11 12:01:58 321

原创 Greenplum高可用-如何检测失效Segment

注:本文翻译自启用段镜像后,当主段实例出现故障时,Greenplum Database会自动将故障转移到镜像段实例。如果每个数据部分都有一个段实例在线,用户可能不会意识到段已关闭。如果发生故障时,正在进行的事务回滚,并在重新配置的段集上自动重新启动。实用程序可用于标识失败的段。该实用程序显示来自目录表的信息,包括。如果整个Greenplum Database系统由于段故障而变得不可操作(例如,如果未启用镜像或没有足够的段在线访问所有用户数据),则用户在尝试连接数据库时将看到错误。

2023-09-11 10:33:02 196

原创 Greenplum 查找数据目录占用最大的表

针对这种情况,这样的文件可以直接删除即可,当然,为了保险起见,我们可以备份到一个别的目录。这意味着,某个对象的Oid和RelFileNode可能并不能完全对应起来,所以,当在磁盘目录中找到一个filenode,但从pg_class中找不到也是有可能的。另外,对于普通表,将对表执行truncate,vacuum full等操作后,会重写这个表的数据,也会引发这个表relfilenode值的变更。因此,针对这位同学的需求,既然已经从磁盘文件中找到对应占用空间大的oid,我们就可以通过以下语句找到对应的表。

2023-09-09 22:02:49 353

原创 Greenplum执行SQL卡住的问题

后来,此同学不知用了什么方案,查询出来了gp_interconnect_type的值,已经修改为tcp模式了。不过在执行gpconfig -s gp_interconnect_type命令时同样会卡住,根据相关日志找到后台调用的SQL命令,使用相应的命令执行仍然卡住,截图如下。据这位同学说的是,虚拟机一重启,hosts就自动修改了,说是 华某云 的问题,希望 华某云能解决这个hosts自动修改的问题吧。查看/etc/hosts配置,发现同一个hostname既配置了特定的IP,也配置了127.0.0.1。

2023-09-08 17:17:17 539

原创 关于Greenplum Platform Extension Framework(PXF)

本文翻译自随着数据存储和云服务的爆炸式增长,数据现在以各种格式驻留在许多不同的系统中。通常,数据根据其位置、对数据执行的操作以及访问数据的频率进行分类:实时或事务性(热)、不太频繁(热)或存档(冷)。下图描述了一个数据源,它跟踪多年来每月的销售额。实时运行数据存储在MySQL中。分析和商业智能操作的数据存储在Greenplum数据库中。很少访问的归档数据驻留在AWS S3中。当外部系统中存在多个相关数据集时,远程连接数据集并只返回结果通常更有效,而不是协商执行相当昂贵的全数据负载操作的时间和存储需求。

2023-09-08 13:44:27 453

原创 Greenplum导入导出-COPY命令

注:本文翻译自Greenplum中的COPY命令用于在表和文件之间进行数据复制,可以将文件的数据写入到表中,也可以将表中的数据写出到文件。

2023-09-08 11:40:20 796

原创 Greenplum 实用工具-gpinitsystem

注:本文翻译自gpinitsystem工具使用gpinitsystem_config文件中指定的配置参数初始化Greenplum数据库系统。

2023-09-06 18:03:35 310

原创 Greenplum 实用工具-gpaddmirrors

注:本文翻译自gpaddmirrors工具用于向未配置镜像的Greenplum数据库系统添加镜像segment。

2023-09-06 17:15:21 179

原创 Greenplum启动卡住的问题

说明一下,此问题是社区一位同学遇到的,据他描述是说机器在断电后再启动数据库,就启不起来了,然后在启动的过程中一直卡住。卡在了以下截图这里。听到是因为断电后导致的,怀疑是不是机器启动后自动打开了防火墙,但这个同学确说他部署的是一个单节点。在这个同学排查下,果然发现是/etc/hosts配置错误导致,问题解决。也是根据报错信息,从网上搜了一下相关解决方法,找到。从日志截图中,看到一些异常的信息,重点内容为。于是让他去看一下启动的日志,日志截图如下。这篇文章,说是和网络回环有关。所以,遇到错误不要慌,先看日志。

2023-09-06 16:39:15 193

原创 Greenplum 实用工具-gpinitstandby

注:本文翻译自gpinitstandby工具用于为Greenplum Database系统添加和/或初始化备用协调器主机。

2023-09-06 10:13:13 163

原创 Greenplum实用工具之gpactivatestandby

注:本文翻译自gpacttivatestandby工具用于激活备用协调器主机,并使其成为Greenplum数据库系统的活动协调器。

2023-09-06 09:21:22 150

原创 QianBase MPP执行qstate报错No module named qpylib

在QianBase数据库中执行qstate检查状态,报以下错误,其次查看PYTHONPATH环境变量是否正常,发现此环境内容为空。首先,确认qpylib目录是否存在,查看安装目录发现此目录存在。source相关path文件,如下所示,

2023-09-05 17:55:46 103

原创 QianBase MPP之qb_toolkit管理模式

QianBase MPP提供了一个称为qb_toolkit的管理schema,它能用来查询系统表目录、日志文件以及操作系统环境来获取系统状态信息。qb_toolkit方案包含了一些能够通过SQL命令来访问的视图及函数。qb_toolkit能够被所有的数据库用户访问,但是一些对象需要超级用户权限。下面对相关的视图依次讲解其用途。

2023-09-05 11:47:27 179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除