logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

postgresql源码学习(41)—— 崩溃恢复③ - 日志来源

pg会根据当前状态确定初始日志源,当日志源读取发生错误,或者状态发生改变时,会切换到其他日志源。这个功能对应函数是 WaitForWALToBecomeAvailable(在xlog.c文件)前篇中获取到了恢复起点,即开始回放日志的位置,后面我们就可以开始读取并应用日志了。不过在此之前还有一个问题,从哪里获取WAL日志呢?用于在不同时段,从不同的日志源获取WAL日志。,对于不同的用途,也有不同的日

#postgresql
postgresql源码学习(31)—— 检查点③ - 入口函数CheckpointerMain

CheckpointerMain函数是checkpointer进程的主入口函数。第一部分主要是些准备工作:下面这段很重要Checkpointer进程的主流程是一个无条件的for循环,在未触发checkpoint时一直在WaitLatch中sleep,也就是在epoll_wait中观察list链表,查看是否有事件句柄已经就绪(某个条件触发checkpoint)。如果已经存在就绪事件,则通过SetLa

#postgresql
postgresql源码学习(22)—— 事务日志③-日志的注册

从功能上看从对应函数来看本节主要介绍日志注册(蓝色)部分。这俩名字很像,registered_buffers是一个数组,其中的每个元素由registered_buffer结构体组成。该数组用于注册被修改的页面信息,XLogRegisterBuffer函数每注册一个页面时,会在其中占用一个槽位。rdatas是一个数组,其中的每个元素由XLogRecData结构体组成。事务日志并不直接写入WAL Bu

#postgresql
postgresql_internals-14 学习笔记(五)Buffer Cache

调和内存(ns级)与磁盘(ms级)间的速度差异。pg不仅用自己的,也用os cache,所以它使用了“双缓存”,这也是很多文档推荐shared_buffer参数只设为内存25%(通常不超过16G)的原因。

文章图片
#postgresql
postgresql_internals-14 学习笔记(四)TOAST 超尺寸字段存储技术

pg中的每个行只能存在一个page里,不能跨page存储。因此对于一些非常长的行,就需要使用到TOAST(The OverSized Attribute Storage Technique,超尺寸字段存储技术)将大字段值压缩或者拆分为多行到单独表存储。对于用户来说,这是完全透明的。

#postgresql
postgresql源码学习(24)—— 事务日志⑤-日志写入WAL Buffer

日志写入WAL Buffer的过程分为两步:你可能会疑惑:为什么数据复制的并发度只设为8?如果设大会有什么问题吗?这个问题的答案在WaitXLogInsertionsToFinish函数(除此之外它还要解决另一个非常重要的问题),我们后面会学习它。简单来说,每次WAL刷入磁盘,都会调用这个函数,而这个函数需要遍历所有WALInsertLocks,所以NUM_XLOGINSERT_LOCKS不宜过大

#postgresql
Oracle 如何不改变SQL为其绑定构造的执行计划

前面几篇文章介绍的方法只能在sql本身有过好执行计划的时候将其固定,如果sql从未有过好的执行计划,需要添加hint但又无法修改sql代码时,之前的方法就不大合适,需要使用新的方法。一、 问题背景遇到过的一个案例就十分符合这种情况。11.2的数据库A中发现一个慢sql,执行超过4万秒。查询program得知是开发用的datagrip工具自动执行的语句,无法关闭也无法修改该sql,实际对业务功能没一

Oracle授予普通用户kill session权限

开发A在测试环境操作时有时会遇到阻塞问题,需要找DBA帮忙查看阻塞会话及kill session,后来觉得太麻烦想要个kill会话的权限,查了下Oracle授予普通用户kill session权限的方法。1. 授予alter system权限官方文档查到,kill session需要ALTER SYSTEM权限,但是这个权限非常大,不能直接给GRANT ALTER SYSTEM...

文章图片
#oracle
postgresql源码学习(七)—— 自旋锁与轻量锁

一、 pg中的锁pg中的锁可以分为3个层次:自旋锁(Spin Lock):是一种和硬件结合的互斥锁,借用了硬件提供的原子操作的原语来对一些共享变量进行封锁,通常适用于临界区比较小的情况。轻量锁(Lightweight Lock):负责保护共享内存中的数据结构,有共享和排他两种模式,类似Oracle中的latch常规锁(Regular Lock):就是通常说的对数据库对象的锁。按照锁粒度,可以分为表

#postgresql
    共 111 条
  • 1
  • 2
  • 3
  • 12
  • 请选择