数据库
文章平均质量分 89
总想玩世不恭
这个作者很懒,什么都没留下…
展开
-
PostgreSQL restartpoint 原理详解
在了解 restartpoint 前,首先需要知道 checkpoint,可以参考这篇博文简单的介绍如下所示checkpoint: 主库用的,用来定期刷脏及其他一些功能,crash 后实例自动去找最新的一个 checkpoint ,从其中记录的 redo point 的 WAL 日志位点开始向后进行 redo;原创 2024-03-04 20:06:21 · 662 阅读 · 0 评论 -
PostgreSQL Log 日志模块详解
本文讲的是操作日志,非 WAL 日志。原创 2023-06-28 16:50:14 · 4135 阅读 · 5 评论 -
PostgreSQL 内核源码分析——lazy Vacuum
本文将概要性的讲解 PostgreSQL 中 lazy vacuum 的流程和原理,代码将以 PG 10.17 版本为例。背景知识死元组和表空间膨胀在 PG 中,update/delete 语句的实现通过 MVCC 机制的多版本链实现。对于一条已经被更新/删除的元组来说,当这条元组对所有事物都不可见后,它的存在就没有意义了,理应被删除,对于这种元组,我们称之为“死元组”。当一张表有大量更新/删除时,如果不做清理的话,表里面就会积攒很多这样的“死元组”,占用大量的空间,造成表空间膨胀。事物号回卷PG原创 2022-02-03 18:58:12 · 1284 阅读 · 0 评论 -
PostgreSQL TopN 插件优势分析
topn 插件地址:https://github.com/citusdata/postgresql-topntopn 插件可以在秒级内求出出现频率前 n 高的元组。背景问题假如有如下一张表,我们的目标是求出以下人名中,出现频率前 n 高的人名。举个例子,n = 2 的情况下,出现频率前 2 高的是 Emily 和 Alex。NAMEBobEmilyAlexEmilyEmilyBobAndyAlexEmilyAlexSQL原创 2021-12-30 20:59:13 · 738 阅读 · 0 评论 -
PostgreSQL 中 SELECT 的元组是如何出现的
当我们运行一句最简单的 SQL :SELECT * FROM t; 时,查询结束后会将元组一下子打印到屏幕上。那么就会有一个问题,当元组数量非常多的时候,为什么 SELECT 语句卡一会后,会一下子打印出来?背景介绍从我们日常观察中不难发现,当元组较多时,会如下图所示。一个屏幕装不下,按回车后才能继续浏览下面的元组。底下通过源码分析和 gdb 调试,一步步探索实际情况下,元组是如何被 SELECT 出来的。psql 的建立先来介绍下 psql 大致的工作原理,其主要如下图所示。当 PG 启原创 2021-08-26 12:06:59 · 504 阅读 · 1 评论 -
Ubuntu18 安装和使用 Greenplum
安装教程按照 Greenplum官方安装教程 一步一步来即可。遇到的问题gpssh 报错在gpssh-exkeys -h localhost 这一步,显示无法连接本地 ssh。解决这个问题方法就是配一下 ssh 公钥登录,参考 ssh公钥登录配置。hostname报错在官方教程里面有一步需要自己新建一个 MACHINE_LIST_FILE文件,并将本机的 hostname 放进去。同时要将...原创 2021-05-27 17:40:13 · 538 阅读 · 0 评论 -
探索 PostgreSql 中的 checkpoint 机制
checkpoint 是 PostgreSql 中一个非常重要的概念,本文将详细的介绍什么是 checkpoint,为什么要有 checkpoint,以及 checkpoint 的运作原理。什么是 checkpoint大家在玩游戏的时候经常会需要存档,而这个存档点就是由 checkpoint 单词翻译而来的。在Postgresql 官方文档中,checkpoint 的定义如下:A checkpoint is a point in the write-ahead log sequence at wh原创 2021-03-19 19:11:02 · 1657 阅读 · 0 评论 -
MVCC 机制解决微服务分布式事务问题
根据较为著名的 两阶段提交 协议实现了一个分布式事物, 参照 seata 的实现方法, 目前阶段仅为实现了一个 demo, 还有很多需要改进的东西。github 地址:https://github.com/zxwsbg/go-seata文章目录项目设计整体框架图TC 设计全局单个事务决策全局所有事务状态维护实现细节service a 实现service b 实现TC 实现TM 实现残留问题项目设计根据 seata 的 AT 模式架构为基础,在各本地数据库添加 mvcc 表,以实现 Reapeatab原创 2021-02-07 16:16:15 · 582 阅读 · 0 评论 -
Ubuntu 编译安装 PostgreSQL
预装环境sudo apt-get install build-essentialsudo apt install libreadline-devsudo apt-get install zlib1g.dev编译安装下载源码wget https://ftp.postgresql.org/pub/source/v9.6.10/postgresql-9.6.10.tar.gz解压安装tar zxvf postgresql-9.6.10.tar.gzcd postgresql-9.6.10/原创 2020-10-23 11:36:10 · 1425 阅读 · 0 评论 -
psql: FATAL: role is not permitted to log in
首先解决Peer authentication failed for user “postgres”, when trying to get pgsql working with rails问题,不然会在下一步出错。cd /etc/postgresql/10/mainsudo gedit pg_hba.conf将local all postgres ...原创 2019-09-08 19:37:42 · 4020 阅读 · 1 评论 -
Ubuntu下PostgreSQL调试环境搭建 (eclipse)
文章目录必备组件导入代码开发与调试新建 "Make Target"尝试运行数据库调试数据库代码系统环境:ubuntu18.10eclipse环境:Version: 2019-06 (4.12.0)依据《PostgreSQL数据库内核分析》一书配置。源码下载地址:https://www.postgresql.org/ftp/source/v8.4.1/必备组件首先安装插件。sudo a...原创 2019-09-08 17:10:13 · 523 阅读 · 0 评论