自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(634)
  • 收藏
  • 关注

原创 my2sql —— go语言版binlog解析及闪回工具

之前学习过python语言版binlog解析及闪回工具最近听同事介绍有了新的go语言版的my2sql。优点是不需要安装一大堆依赖包,直接可以安装使用,并且解析更高效,试用一下。

2024-03-20 17:32:09 2450 1

原创 Oracle 主从切换脚本

【代码】Oracle 主从切换脚本。

2024-03-13 11:25:33 1791 1

原创 由PG序列监控,看三种列自增方式

PG SEQUENCE、SERIAL 和 IDENTITY的相似和不同

2024-03-09 12:19:23 2270 1

原创 Linux中的各类时间 与 find命令的常用参数

之前研究wal日志清理的副产物,wal日志名被修改后文件的哪个时间会变?应该如何删除?由此整理一下Linux中atime、mtime、ctime的区别,以及find的常见用法。

2024-02-22 17:28:46 2401 1

原创 延迟恢复了? pg重启后pg_stat_replication中的延迟信息会如何变化?

之前重启数据库时遇到一个问题,本来主从间有超过2小时的延迟,重启db后监控突然提示延迟为0,告警恢复。一段时间后,监控又显示延迟逐渐增加,直至逐渐回到2小时。这是为什么?

2024-02-14 22:01:42 1720 1

转载 MySQL 轻量级Online DDL工具 —— gh-ost

一、gh-ost 介绍gh-ost是 GitHub 发布的一款用于 MySQL 的无触发器在线模式迁移解决方案。它是可测试的,并提供暂停,动态控制/重新配置,审计和许多操作特权。它在整个迁移过程中,对主服务器产生的工作量很少,与已迁移表上的现有工作分离。此外,它还提供了许多可操作的特权,使其更安全、可信赖且易于使用。gh-ost操作方式与现有的在线模式更改工具类似:它们以与原始表相似的方式创建幽灵表,将数据从原始表缓慢且增量地复制到幽灵表,同时应用正在进行的更改(INSERT,DELETE,UP..

2024-02-14 21:35:54 2320 1

转载 PG fast模式停库 在归档过慢及有发送延迟 会被阻塞

尝试停库时遇到的两个现象:当archiver process仍有.ready文件待处理时,执行fast模式执行stop时,必须等其处理完当walsender进程仍有wal日志未发送至从库时,必须等其发送完

2024-02-12 21:30:12 1130

原创 postgresql 手动清理wal日志的101个坑

新年的第一天,总结下去年遇到的关于WAL日志清理的101个坑,以及如何相对安全地进行清理。前面是关于WAL日志堆积的原因分析,清理相关可以直接看第三部分。

2024-02-10 23:12:42 3113 2

原创 常用的文件系统、存储类型小整理

最近接触到了五花八门的文件系统、存储类型,名词听得头大,趁假期整理学习一番~

2024-02-07 22:09:49 3214

原创 从 “template1“ is being accessed 报错,看PG数据库的创建过程

报错原因、解决方法、以及PG数据库的创建过程到底会干些什么?

2023-12-13 18:01:29 2679 2

原创 会长期锁表吗?PostgreSQL add column default 在各版本的优化

pg如何处理新增列的默认值,与Oracle有何区别

2023-12-01 19:42:20 2512 1

原创 会长期锁表吗?Oracle add column default 在各版本的优化

Oracle add column default 在各版本的优化

2023-11-29 14:55:43 4446

原创 PostgreSQL日志中的SQL记录时机 —— log_statement 和 log_min_duration_statement

log_statement 和 log_min_duration_statement 的作用及注意事项、源码学习

2023-11-28 21:05:11 3157 1

原创 PostgreSQL create or replace view和重建视图 有什么区别?

遇到开发提了个问题,create or replace view和重建视图(drop+create)有什么区别,查询资料整理了一下。replace后不影响权限和依赖于该视图的对象。来看看replace操作到底在干些啥 ˇˍˇ。

2023-11-22 19:51:54 2046

原创 从物理磁盘到数据库 —— 存储IO链路访问图

存储服务器、交换机、物理机、虚拟机、数据库

2023-11-05 00:03:29 2455 1

原创 pgbackrest归档目录满,清理后写入仍报错,分析及处理

pgbackrest配置的归档目录/backup被写满,清理后归档仍报错 No space left on device

2023-10-17 15:26:17 1905

原创 pg ash自制版 —— pg_active_session_history

由于pgsentinel插件存在严重的内存占用问题,本篇改为自行实现,但其语句仍可以参考pgsentinel插件。v1.0 根据pg 14版本设计及测试,仅支持收集主库信息。默认每10秒收集一次 active与idle in transaction 状态会话信息,保留两个月。参考 pgsentinel插件的pg_active_session_history视图及pg pg_stat_activity视图,根据不同版本,其中部分字段的值可能为空。列名数据类型字段含义。

2023-10-15 13:06:08 2882

原创 PostgreSQL ash —— pgsentinel插件 学习与踩坑记录

众所周知,pg是没有像oracle那样的ash视图的,因此要回溯历史问题不太方便。pgsentinel插件会将pg_stat_activity与pg_stat_statements视图内容定期快照,并存入pg_active_session_history和pg_stat_statements_history视图中。与对应版本的pg_stat_statements视图字段含义相同。也可以直接在postgresql.conf中修改。若未配置,查询会报错。

2023-10-05 00:41:38 2611 1

原创 PostgreSQL unloged表测试及记录

不写WAL日志,因此性能优于普通表从库查询unloged表会报错非crash安全:数据库crash或以immediate方式关闭,unloged表数据会被自动清空

2023-09-14 19:56:09 2320 1

原创 娱乐时间 —— 用python将图片转为excel十字绘

图片的每一个像素点都可以数值化,那么将构成图片的每一个像素点填充到excel的单元格中去,然后合理调整单元格长宽比便可以拼成一副画。反过来想,用一张单元格足够小的excel表格将图片蒙上一层,犹如用 一张网去切割这张图片,图片被切割成一小块一小块 ,如果网格足够细,每一小块里面的颜色几乎只有一种,这样就可以用一个三元组(RGB)来刻画 ,这样一张图片就可以由一个很大的矩阵来刻画 ,矩阵中的每一个元素都是一个 RGB三元组。最近看蛮多朋友在玩,要么只能画比较简单的,要么非常花时间。

2023-09-10 17:20:21 2151 1

原创 记一次前端页面加载方式调整导致的数据库连接数暴增

前端代码也会导致数据库问题?

2023-09-04 21:10:45 1353 1

原创 clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测

s 100 lineorder表会生成6亿行数据(约67G),-s 1000则会为其生成60亿行数据(约670G),需要大量空间和时间,注意控制。clickhouse-benchmark是自带的一个简单压测工具,可以控制执行SQL的次数、并发度等。相对来说 ssb-dbgen工具 生成的表比较简单,数据量也可以自己控制,更加方便。ssb-dbgen工具指定参数可以生成如下表的数据,其中lineorder是最大的。测试表可以都用,也可以调一些,官方文档只建了4个。查询执行时间的百分比。

2023-08-24 21:37:59 2355

原创 Oracle 主从库目录不一致(异路径)的n种处理方案及效果

db_create_file_dest db_file_name_convert log_file_name_convert 与 不设置

2023-08-20 18:49:43 1697

原创 定位postgresql中疯狂执行DML的表&原理学习

定位一段时间内DML量最大的表,并稍微改动监控每天表变化量。另外,也通过源码学习学习相关字段究竟是从何获取的。

2023-08-15 21:41:51 1881 1

原创 记一次空间告警与pg_rman keep-data-days参数研究

keep-data-days参数明明只设置了1,为什么本地会出现3份备份(保留了3天的备份)?

2023-08-09 22:39:13 2054

原创 clickhouse DBA入门常用SQL

clickhouse DBA入门常用SQL

2023-08-03 10:51:27 1492 1

原创 pg_archivecleanup清理wal日志

pg_archivecleanup代码中仅进行了wal日志文件名的对比,没有实现对WAL日志名及对应生成时间的判断。在WAL日志未被重命名时,时间与日志名顺序名一致,没有问题。一旦WAL日志被重命名,pg_archivecleanup清理就可能清理掉比指定文件更新的WAL日志。因此,在涉及主从尤其是有lag的情况下,非必要不建议使用。真正到了必要的时刻,例如剩余磁盘空间已不足10%甚至5%,必须先检查从库所需日志与待清理日志间的新旧。

2023-07-26 21:21:32 2720 1

原创 postgresql源码学习(58)—— 删除or重命名WAL日志?这是一个问题

最近因为WAL日志重命名踩到大坑,一直很纠结WAL日志在什么情况下会被删除,什么情况下会被重命名,钻研一下这个部分。首先无用WAL日志的清理发生检查点执行时,检查点执行核心函数为CreateCheckPoint。其中核心调用栈为CreateCheckPoint函数很复杂,从外往里看会很容易晕,所以我们倒过来,先从最内层的RemoveXlogFile开始研究。因为debug跑了很多次,后文各日志段号等不会完全一致,但本质是相同的。注意这个跟踪属于高危操作,db进程有可能挂掉,千万别在生产环境随便执行。

2023-07-22 23:20:08 2409

原创 postgresql_internals-14 学习笔记(七)—— parallel 并行

不完全来自这本书,把查到的和之前的文章重新汇总整理了一把。参考:PostgreSQL: Feature Matrix例外命令:以下语句可以在查询部分用到并行 CREATE TABLE ... AS,SELECT INTO,CREATE MATERIALIZED VIEW,REFRESH MATERIALIZED VIEW 计划中可并行部分越多,潜在的性能增益就越大。然而,某些操作仅能由leader进程严格顺序执行,即使它们本身不会干扰并行化。换句话说,它们不能出现在Gather节点下面的计

2023-06-27 23:55:59 4393 1

原创 postgresql_internals-14 学习笔记(六)—— 统计信息

不完全来自这本书,把查到的和之前的文章重新汇总整理了一把。

2023-06-24 22:55:00 5837

原创 postgresql源码学习(57)—— pg中的四种动态库加载方法

pg中四种动态库加载方法及源码学习

2023-06-24 12:57:52 2691

原创 postgresql源码学习(56)—— explain是如何快速估算pg表行数的

但是这个字段的值需要收集统计信息后才有,如果统计信息过旧,也会不准确。但是注意不要EXPLAIN SELECT count(*),相差很大。如果没有统计信息或者比较旧了,又不想收集,可以使用explain。加::numeric是为了防止数字太大,变成科学计数法。为了方便获取预估值,可以将执行计划输出转为json格式。看到在完全没有统计信息的情况下,偏差大概在10%左右。,类似oracle的num_rows。收集之后,偏差明显减少。

2023-06-15 19:01:20 2348

原创 ORA-01795 Oracle in中超过1000个值处理方法汇总

最近又又又遇到了开发同事问Oracle 中in超过1000个值遇到ORA-01795: maximum number of expressions in a list is 1000怎么处理,之前也陆陆续续查过一些方法,汇总整理一把。当然,其中的一些方法只是保证它不报错,性能可能堪忧,尽量少用。

2023-06-03 19:46:38 6172

原创 postgresql源码学习(55)—— 列中的NULL值是如何存储和判断的?

在pg元组头数据中,有一个t_bits数组,用于存储空值位图。当元组中没有null值的时候,t_bits可以被认为是空的,当元组有null值的列时,t_bits使用一个bit来表示列是否为null。可以看到,表中已删除列会被视为空列。当表中有许多列时,删除列将为每条记录生成额外的t_bit,这将导致存储膨胀。100000,注意实际存储的时候值是颠倒的,所以是000001。为了看t_bits数组更清晰,我们加多几列。10000,颠倒后为00001。,所以第一列非空,与实际一致。判断字段是否为空代码在。

2023-05-13 21:53:04 3214 1

原创 ChatGPT prompt engineering for developers 笔记

ChatGPT prompt engineering for developers 笔记

2023-05-07 23:20:15 2330

原创 PostgreSQL WAL产生量、发送速度、应用速度监控脚本

PostgreSQL WAL产生量、发送速度、应用速度监控脚本

2023-04-24 20:43:24 2057 1

原创 Linux 内存回收,思维导图记录

最近天天跟内存斗智斗勇,整理下学习的记录。

2023-04-09 12:03:25 2558 1

原创 PostgreSQL定位函数中最耗时的SQL(2)—— plProfiler插件图形化展示耗时语句

plProfiler插件使用C和python语言共同开发,可以收集PL/pgSQL语言(不支持SQL语言)的函数和存储过程的profile信息,并生成html报表。报表以火焰图形式展示函数调用堆栈、耗时占比,还可以查看函数中每个SQL的位置、执行次数、最长执行时间、总时间,清晰明了。由于依赖于python环境,安装、排错较复杂,对python小白不友好。同时,它也并非旁路监控,必须要手动执行对应函数。

2023-04-05 23:57:51 2139 1

原创 从无法创建的索引看 PostgreSQL的create index concurrently(CIC)过程

CREATE INDEX CONCURRENTLY (CIC)大概是DBA们最常用的语句之一,创建索引时只加4级锁,不阻塞DML。听上去非常美好,但在大事务、长事务较多的系统,可能被阻塞得一个中午也建不上一个索引。本篇就从这个无法创建的索引开始,学习CIC的过程、原理以及注意事项。

2023-04-04 22:53:31 2883

原创 PostgreSQL定位函数中最耗时的SQL

开发反馈pg中某函数执行时间很长,超过30分钟,想看看慢在其中哪一段SQL。但是如果直接通过pg_stat_activity查询,只能看到上层执行函数的语句,而不像oracle和SqlServer能看到当前在执行什么。咨询群友们得到了几种方法,下面测试和对比一下。执行函数查看运行情况。

2023-03-12 22:49:35 2765 1

空空如也

空空如也

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

TA关注的人

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