于2022-01-02 加入墨天轮
个人成就
发布109次内容
获得202次点赞
内容获得70次评论
获得62次收藏
回答了1次问答
TA的专栏
文章分类
墨力计划
(68)
postgresql
(17)
达梦数据库
(12)
oceanbase征文
(12)
opengauss
(11)
mogdb
(10)
oceanbase
(8)
postgresql 15
(6)
mogdb技术分享
(5)
ebpf
(5)
国产数据库
(4)
ivorysql
(3)
展开
文章档案
2024年01月
(1)
2023年03月
(7)
2023年02月
(3)
2023年01月
(1)
2022年12月
(4)
2022年11月
(12)
2022年09月
(7)
2022年08月
(4)
展开
最新评论
PostgreSQL + eBPF实现数据库服务可观测
我们已经实现了eBPF对MySQL的细粒度观测,包含SQL执行过程,能够拿到SQL执行过程中具体的资源消耗;拿到审计日志;拿到SQL详细的加解锁;并且做成了一个便于使用的产品DBdoctor,目前我们正在适配PostgreSQL,官网可以免费下载也能直接线上试用,欢迎交流:http://hisensecloud.com/col.jsp?id=126
-愤怒的小强 pg_lock_tracer实现数据库服务可观测
补充一下,在运行pg_lock_tracer可能会遇到下面的错误:
root@LAPTOP-4OF1323N:/home/frank/github/pg-lock-tracer# pg_lock_tracer -x /home/frank/pgsql/bin/postgres -p 29661
===> Compiling BPF program
===> Attaching BPF probes
Traceback (most recent call last):
File "/usr/local/bin/pg_lock_tracer", line 33, in <module>
sys.exit(load_entry_point('pg-lock-tracer==0.5.4', 'console_scripts', 'pg_lock_tracer')())
File "/usr/local/lib/python3.10/dist-packages/pg_lock_tracer/pg_lock_tracer.py", line 806, in main
pg_lock_tracer.init()
File "/usr/local/lib/python3.10/dist-packages/pg_lock_tracer/pg_lock_tracer.py", line 664, in init
self.attach_probes()
File "/usr/local/lib/python3.10/dist-packages/pg_lock_tracer/pg_lock_tracer.py", line 759, in attach_probes
self.register_probe(
File "/usr/local/lib/python3.10/dist-packages/pg_lock_tracer/pg_lock_tracer.py", line 708, in register_probe
raise ValueError(f"Unable to locate function {function_regex}")
ValueError: Unable to locate function ^FastPathGrantRelationLock$
主要原因是您内核版本比较低,可以升级内核版本,或者修改python脚本,不跟着FastPathGrantRelationLock这个函数。
-夏克动态
文章 ·73
数说 ·16
问答 ·1
文档 ·36
课程 ·0
视频 ·0
活动 ·0
关注
留言板·1
新年快乐
发布数说于
2024-02-10
基于eBPF的交易系统可观测技术
eBPF(Extended Berkeley Packet Filter)技术是最近10年linux内核最热门也是最具影响力的技术之一,随着网络和云原生技术的飞速发展,eBPF被广泛的应用于网络和安全、性能分析、容器和云原生、运维和排障以及对应用系统的观测。本文将针对如何使用eBPF技术对交易系统运行状态、处理能力和性能热点观测进行实践。eBPF技术的引入会在交易系统的开发、测试、运维阶段极大提高效率并降低成本,对性能优化,辅助测试以及生产运维期间的故障定位和排查提供有效的手段。
发布文章于
2024-01-02
基于bpftrace对PostgreSQL进行观测(续)
uprobe是eBPF中的一种类型,它可以让用户空间的程序在应用程序的用户空间地址上安装观察点(probe),并在应用程序执行到该地址时执行自定义的代码。使用uProbe,用户可以监控应用程序的函数调用、系统调用、信号处理等事件,从而实现一些特定的功能,如性能分析、错误排查、安全监控等。
发布文章于
2023-03-25
基于bpftrace对PostgreSQL进行观测
前面几篇文章介绍了如何使用eBPF对数据库(PostgreSQL、OceanBase)进行观测,但给出的几个例子还是需要进行编码的,需要一些C/Python的基础,严格说还是需要“造轮子”的过程。因此对DBA来说并不是十分友好,这也有悖于我做这件事情的初衷。解决这个问题大概有两种思路,一是尽量开发一些通用的工具,二是寻求更简单的方法或工具,前者我试图筹划去写一套工具集(可能周期会比较长),而后者正是今天要介绍的一个更加工具——bpftrace。
发布文章于
2023-03-17
eBPF实现“零”侵入的慢SQL抓取
最近写了几篇eBPF结合数据库的帖子,但都是“Hello World”级别的简单例子,意在抛砖引玉,希望能够将可观测技术与数据库领域更好的结合。但有小伙伴反馈由于例子过于简单且没有什么实践性的意义,所以不太好理解eBPF技术到底能做到什么程度的可观测、怎么辅助DBA的日常运维和问题排查?因此,这篇文章通过一个完整的例子介绍我们经常遇到的一个场景“慢SQL抓取”,
发布文章于
2023-03-15
pg_lock_tracer实现数据库服务可观测
pg_lock_tracer是一个开源项目,虽然它未必能用到生产上,但它们非常酷,我认为它们展示了如何使用eBPF监视Postgres的前景。pg_lock_tracer的灵感来自于pg_locks表所展示的内容,即当前由哪个Postgres连接持有哪些锁。这里的区别在于pg_lock_tracer会查看每个锁定调用并随时间进行总结。显然,这会带来一些额外的开销,因此这不一定是您一直在生产系统上运行的东西,但如果您面临无法通过其他方式进行调试的问题,这可能是有意义的。
发布文章于
2023-03-14
PostgreSQL 16中WAL日志的改进
Write-Ahead Logging 是PostgreSQL的一个关键特性,通过记录所有对数据库的更改,实现了数据的持久性和一致性。WAL允许快速的崩溃恢复和复制,是PostgreSQL架构的基本部分。在PostgreSQL 16中,WAL系统发生了一些重要的改进,包括记录格式的改变和WAL重放的Just-in-Time 编译。本文将详细介绍这些改变及其工作原理,以及它们的优缺点。这些改进提高了性能、复制和崩溃恢复能力,使PostgreSQL更加强健和易于使用。这个标志表示对表中的“热点”进行了更改,即经常更新的区域,例如序列的当前值或索引的根页面。这个信息有助于数据库在回放WAL记录时进行优化,通过减少在恢复期间需要从磁盘读取和处理的数据量。为实现这个功能,PostgreSQL添加了一个新的WAL记录类型XLOG_HOT_STANDBY,其中包含了HOT标志和修改表的相关信息。PostgreSQL 16的WAL记录格式还增加了一个新的记录类型XLOG_INDEX_DELETE,用于记录从索引中删除元组的情况。当恢复WAL记录时,PostgreSQL会解码记录并使用JIT编译器将其转换为可执行的代码。
发布文章于
2023-03-13
「OceanBase 征文」OceanBase 4.0 改装:另一种全链路追踪的尝试
大部分的DBA可能没有使用过eBPF技术,说起来算是一个比较小众的技术领域,一些Linux内核研发人员可能比较熟悉。在一些开源数据库中,如MySQL、PostgreSQL中已经使用了相关技术,可以参考我最近的一篇文章《[PostgreSQL + eBPF实现数据库服务可观测](https://www.modb.pro/db/617157)》。eBPF出现的早期主要是用于网络抓包和网络包的过滤,类似tcpdump、wareshark之类的抓包工具,后来用来替代内核模块的部分功能,以非侵入式的方式拓展内核模块的功能(主要是监控、过滤、负载均衡等)。eBPF技术还是比较复杂的,因此很难用较短的篇幅将它讲透彻。本文主要是抛砖引玉,通过一个例子介绍如何使用eBPF对OceanBase进行观测。例程中会修改OceanBase源码,目的是埋入一些探针,通过eBPF内核程序采集应用数据,并提供给eBPF用户程序进行展示。
发布文章于
2023-03-07
PostgreSQL + eBPF实现数据库服务可观测
本文通过一个demo简单介绍了如何使用eBPF技术观测PostgreSQL服务端,eBPF技术比较低调,文章并没有详细的进行讲解(内容很多)。通过BCC框架的搭建也相对比较麻烦,感兴趣的小伙伴可以自行了解。PostgreSQL共有57个跟踪点供观测,大家可以根据具体场景的需要编写BCC的Python脚本
发布文章于
2023-03-03
ChatGPT眼中的墨天轮
发布数说于
2023-03-03
核心系统国产平台迁移验证
信息技术应用创新,旨在实现信息技术领域的自主可控,保障国家信息安全。金融领域又是关系国家经济命脉的行业,而对核心交易系统的信息技术应用创新是交易所未来将要面临的重大挑战。为了推进国产化进程,选取核心交易系统的典型模块,实践了基于鲲鹏平台的迁移验证,在各技术栈迁移流程方法、性能调优、典型问题等方面,做了大量的探索与尝试
发布文章于
2023-02-23
Pandoc安装、使用、快速上手
如果你需要将文档从一种格式转换成另一种格式,那么Pandoc是你的一把瑞士军刀,Pandoc可以将下列格式文档进行相互转换。
`Markdown`、`Microsoft Word`、`OpenOffice/LibreOffice`、`Jupyter notebook`、`HTML`、`EPUB`、`roff man`、`LaTeX`、甚至是`PDF`。当然Pandoc还包括很多类型文档的转换,这里就不一一例举了,可以参考[About pandoc](https://www.pandoc.org/index.html)。
发布文章于
2023-02-06
MySQL LOAD VS DM8 dmfldr
某业务系统从MySQL迁移至达梦后,有导入业务文件的功能使用MySQL的LOAD方式将csv文件导入到指定的表中。迁移到达梦后,该功能需要进行对应的调整(因为达梦没有LOAD功能),但达梦提供了dmfldr来实现快速的将文件装载到数据库的表中,从目前业务的需求上看,达梦的dmfldr是可以替代MySQL的LOAD功能。针对这个需求,本文使用一个demo来对比LOAD和dmfldr的使用与性能差异。
发布文章于
2023-01-13
【与达梦同行】达梦驱动图谱
达梦提供了大部分主流开发语言的驱动接口,在我用使用过的国产数据库中对客户端驱动的支持应该算是非常不错的。本文主要介绍达梦的驱动开发,通过实际操作,从环境搭建到实践验证,介绍了达梦各种语言驱动的详细使用过程,由于篇幅原因,将演示代码提交到gitee仓库上供大家参考。
发布文章于
2022-12-15
openGauss洗冤录 之 copy from
前文提到使用openGauss的copy from导入csv文件耗时是mysql的2倍,是PostgreSQL的6倍,这个结果与我预期结果有较大的差距。由于之前的测试都是基于各数据库产品的默认配,所以,未必能反应出其真实性能,尤其是openGauss,我个人认为其性能还是被严重低估。这篇文章将通过参数的调整/优化,看看是否可以还原openGauss的真实性能。由于水平有限,也欢迎大家留言反馈更好的优化方案。
发布文章于
2022-12-10
测评报告:文件导入哪家强?
最近业务上遇到一个场景,需要将一个/多个文本文件导入到与其结构对应的表中。功能需求比较简单,大部分的关系数据库基本都支持这个功能。基于上面的场景把手头上的几款开源数据库和国产数据库的文件导入功能进行了性能对比。
发布文章于
2022-12-10
测评:IvorySQL COPY VS MySQL LOAD
# 测评:IvorySQL COPY VS MySQL LOAD
# 概述
> IvorySQL/PostgreSQL的COPY和MySQL的LOAD都是快速加载文件的利器,本文将对两个功能进行性能对
发布文章于
2022-12-08
Ubuntu 22.04.1 LTS 下编译安装IvorySQL
IvorySQL可以在Linux, OSX, Unix和Windows平台上构建。虽然官方给出了Linux的编译安装步骤,但是实际上并不适用于Ubuntu。本文主要演示IvorySQL在Ubuntu 22.04.1 LTS 上的编译、部署及运行。
发布文章于
2022-11-20
OCI客户端应用Ctrl-C无法退出问题
• 修改sqlnet.ora文件(改文件与tnsnames.ora在同一个目录),增加以下内容:
```bash
DIAG_ADR_ENABLED=FALSE
DIAG_DDE_ENABLED=F
发布文章于
2022-11-18
「更易用的OceanBase」| OceanBase TableAPI实践案例(Rust)
# 引子
这是[OceanBase TableAPI实践案例(Java)](https://www.modb.pro/db/554509)的姊妹篇,上一篇比较全面的比较全面的介绍了TableAPI的相
发布文章于
2022-11-17
「更易用的OceanBase」| OceanBase TableAPI实践案例(Java)
# 引子
之前的一篇文章[《OceanBase 4.0 我回来给你点个赞》](https://www.modb.pro/db/545614)里面提到了关于OceanBase驱动/接口和扩展性的一些问题
发布文章于
2022-11-12
数据库查询优化器的艺术 原理解析与SQL性能优化.pdf
上传文档于
2022-11-12
TDSQL高可用整理
# 系统架构
TDSQL PostgreSQL版采用分布式集群架构,如下图所示。 该架构分布式无共享(share nothing)模式,节点之间相应独立,各自处理自己的数据,处理后的结果可能向上层汇总
发布文章于
2022-11-12
PolarDB高可用整理
# 高可用架构
、主备读写分离、透明分布式架构。
# 共享存储集群
DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同
发布文章于
2022-11-10
openGauss/MogDB高可用整理
# openGauss主备模式
## 主备架构

发布数说于
2022-09-21
PostgreSQL Development Essentials.pdf
上传文档于
2022-09-21
openGauss博客今天是不是蹦了?
发布数说于
2022-09-20
PostgreSQL.Replication.2nd.Edition.pdf
上传文档于
2022-09-20
《Python Cookbook》第三版中文v3.0.0
链接:https://pan.baidu.com/s/1cwZ6K-_gGMDWSlAqDwDeng提取码:w2ie
上传资源于
2022-09-20
Redis运维实践.pdf
上传文档于
2022-09-19
React与Redux开发实例精解 (前端撷英馆)
链接:https://pan.baidu.com/s/11RzXY9Q3MOkiSDxl9hm0Pg提取码:sgwy
上传资源于
2022-09-18
PostingreSQL from Novice to Professional.pdf
上传文档于
2022-09-18
Learning PostgreSQL.pdf
上传文档于
2022-09-17
Servlet JSP和Spring MVC初学指南
链接:https://pan.baidu.com/s/1UZ0qwHa9Rs-ELhKZLHutmg提取码:x5kl
上传资源于
2022-09-17
PostgreSQL Administration.Cookbook 9.59.6 Edition.2017.4.pdf
上传文档于
2022-09-16
霸王枪长一丈三尺七寸三分,重七十三斤七两三钱。霸王枪象征勇气。“一个人只要有勇气去冒险,天下就绝没有不能解决的事。”
发布数说于
2022-09-15
深入理解Java虚拟机:JVM高级特性与最佳实践-周志明.docx
上传文档于
2022-09-15