数据库内核

热衷于分享开源数据库使用、内核源码等相关技术,包括但不限于 MySQL/PostgreSQL/Greenplum/TiDB 等。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2021年9月21日

摘要: 本文首发于 2016-03-30 15:34:34 引言 通常我们评判一个 test case 好坏的标准之一是代码的覆盖率,一个好的 test case 应该覆盖到所有的代码。 那么问题来了,我们怎么知道这个 test case 有没有覆盖到所有的代码呢? 以 PostgreSQL 为例,我们看看 阅读全文
posted @ 2021-09-21 18:26 DBKernel 阅读(76) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2016-03-30 15:29:35 背景 回归测试是 PostgreSQL 的测试方法之一。 回归测试,需要事先定义好测试脚本(通常是 SQL 脚本,放在 sql 目录中),同时定义好调用执行测试脚本的预期正确输出文件(通常放在 expected 目录中)。 测试使用 make ch 阅读全文
posted @ 2021-09-21 18:22 DBKernel 阅读(73) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2016-03-15 19:56:52 注意:本篇文章成文时 Postgres-XC 还未改名为 Postgres-X2 。 1. 下载源码 git clone git@github.com:postgres-x2/postgres-x2.git 2. 安装依赖 对于 Ubuntu/De 阅读全文
posted @ 2021-09-21 18:20 DBKernel 阅读(47) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2016-01-21 20:02:26 引言 PostgreSQL 主备同步机制是通过流复制实现,其原理见 PG主备流复制机制。 Greenplum 是基于 PostgreSQL 开发的,它的主备也是通过流复制实现,但是 Segment 节点中的 Primary 和 Mirror 之间的 阅读全文
posted @ 2021-09-21 18:13 DBKernel 阅读(92) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2016-01-14 19:55:08 本文介绍如何在 CentOS/RedHat、Ubuntu/Debian 下通过安装包方式和源码方式安装配置 GreenPlum 集群。 1. 安装步骤 1.1. 规划 192.168.4.93(h93) 1个主master 2个主segment、2 阅读全文
posted @ 2021-09-21 16:46 DBKernel 阅读(33) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2015-12-23 21:04:17 环境 PG数据库提供了一款轻量级的压力测试工具叫 pgbench,其实就是一个编译好后的扩展性的可执行文件。 测试环境: CentOS 5.7 in VMWare 8.0 PG:9.1.2 数据库参数: max_connection=100 其他默 阅读全文
posted @ 2021-09-21 16:38 DBKernel 阅读(259) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2015-11-21 20:02:26 引言 PostgreSQL 在 9.0 之后引入了主备流复制机制,通过流复制,备库不断的从主库同步相应的数据,并在备库 apply 每个 WAL record,这里的流复制每次传输单位是 WAL 日志的 record 。而 PostgreSQL 9 阅读全文
posted @ 2021-09-21 16:34 DBKernel 阅读(36) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2015-11-04 15:28:08 前言 本文成文较早,依赖的是 PostgreSQL 9.3 版本,后续内核版本可能不兼容,但核心原理是相通的,可做参考。 表结构 pg_depend pg_depend 是 postgres 的一张系统表,用来记录数据库对象之间的依赖关系,除了常见 阅读全文
posted @ 2021-09-21 16:28 DBKernel 阅读(426) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2015-05-04 14:50:16 概述 一个由 C/C++ 编译的程序占用的内存分为以下几个部分: 栈区(stack):由编译器自动分配、释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。一般大家常说的堆栈和栈是一样的,就是栈(stack),而说 堆 时才是堆 阅读全文
posted @ 2021-09-21 16:22 DBKernel 阅读(140) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2015-01-03 21:04:36 概述 IPv4 中使用 gethostbyname() 函数完成主机名到地址解析,这个函数仅仅支持 IPv4 ,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储 IPv4 地址的空间。 IPv6中引入了getaddrinfo() 阅读全文
posted @ 2021-09-21 16:19 DBKernel 阅读(339) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-08-08 17:55:32 概念 daemon 程序,又称为守护进程,通常在系统后台长时间运行,由于没有控制终端而无法与前台交互。daemon程序一般作为系统服务使用,Linux系统中运行着很多这样的守护进程,如 iptables,nfs,ypbind,dhcpd 等。 da 阅读全文
posted @ 2021-09-21 16:16 DBKernel 阅读(23) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-08-05 10:14:48 1. Samba作用 Samba的主要任务就是实现Linux系统和Windows系统之间的资源共享。我们现在是要在Linux下配置Samba,让Windows的用户可以访问你的PC。 当然,也可用于VMWare虚拟机与宿主机之间的资源共享。 2. 阅读全文
posted @ 2021-09-21 16:13 DBKernel 阅读(290) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-07-21 15:35:30 6. 附录 6.1. 字节序与网络序 6.1.1. 字节序 字节序,顾名思义就是字节的高低位存放顺序。 对于单字节,大部分处理器以相同的顺序处理比特位,因此单字节的存放和传输方式一般相同。 对于多字节数据,如整型(32位机中一般占4字节),在不同的 阅读全文
posted @ 2021-09-21 16:06 DBKernel 阅读(46) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-07-10 10:00:41 代码 #include <stdio.h> #include <stdlib.h> #include <glob.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> 阅读全文
posted @ 2021-09-21 15:54 DBKernel 阅读(39) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-07-10 09:48:48 代码 #include <stdio.h> #include <mntent.h> #include <string.h> #include <sys/vfs.h> static const unsigned long long G = 1024* 阅读全文
posted @ 2021-09-21 15:50 DBKernel 阅读(40) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-03-12 21:27:30 Linux 内存地址映射图 后文中 图:XXX 指的就是上图中对应区域。 地址映射(图:左中) inux 内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。 想一下,地址映射还是一件很 阅读全文
posted @ 2021-09-21 15:44 DBKernel 阅读(117) 评论(0) 推荐(0) 编辑

摘要: 本文首发于 2014-01-10 19:48:48 1. getopt 该函数用来解析命令行参数。 1.1. 函数定义 int getopt(int argc, char * const argv[], const char *optstring); #include <unistd.h> 前两个参 阅读全文
posted @ 2021-09-21 15:32 DBKernel 阅读(122) 评论(0) 推荐(0) 编辑

2021年8月22日

摘要: 技术分享 | 如何为你的代码选择一个合适的开源协议? 近期公司全面拥抱开源,在选择开源协议方面遇到了一些问题,查阅了很多资料,特此总结~~ 前言 对于很多刚踏入开源软件这个行业的小伙伴来说,在编码过程中难免会用到其他人的成果,如果你足够细心,很容易注意到即使是一小段代码,优秀的作者都在文件开头附上一段关于版权的声明,比如 Licensed under 阅读全文
posted @ 2021-08-22 12:15 DBKernel 阅读(387) 评论(0) 推荐(1) 编辑

2021年3月7日

摘要: 背景 近期线上MySQL 5.7.20集群不定期(多则三周,短则一两天)出现主库mysql crash、触发主从切换问题,堆栈信息如下; 从堆栈信息可以明显看出,在调用 try_acquire_lock_impl 时触发的crash。 分析 在官方Bug库未搜到类似问题,转而从代码库入手,搜到对应的 阅读全文
posted @ 2021-03-07 19:08 DBKernel 阅读(67) 评论(0) 推荐(0) 编辑

2020年8月27日

摘要: 本文首发于 2020-08-27 13:46:15 前言 近期在给 radondb/xenon 适配 percona xtrabackup 8.0时,遇到了一些问题,经过多日调研、尝试终于解决,特此分享。 版本信息: Percona-Server 8.0.19-10 Percona-Xtraback 阅读全文
posted @ 2020-08-27 14:50 DBKernel 阅读(1280) 评论(0) 推荐(0) 编辑