- 博客(335)
- 收藏
- 关注
原创 pg事务:2PC
分布式事务实现方案很多,2PC是其中最基础也是最常见的。分布式事务包括原子提交、原子可见性、全局一致性,2PC只是原子提交的实现方案。
2023-05-20 16:59:04 755
原创 pg事务:隔离级别历史与SSI
ANSI SQL-92定义的隔离级别和异常现象确实对数据库行业影响深远,甚至30年后的今天,绝大部分工程师对事务隔离级别的概念还停留在此,不过数据库的终极目标不是RC
2023-05-20 15:36:41 1349
翻译 在postgresql中打开和关闭autovacuum
在postgresql中如何打开和关闭autovacuum。关闭后autovacuum还会做事吗?
2023-05-19 21:34:24 702
翻译 理解弱隔离是一个严重的问题
数据库应该朝着可序列化前进,而真实的情况是,我们沉浸于使用RC或SNAPSHOT隔离。而应用程序却没有发现自己的数据已经异常
2023-05-16 20:41:25 45
翻译 事务的历史
大神总结事务隔离级别的历史:ANSI SQL92标准的问题、什么是快照隔离级别、什么是SSI、数据的终极隔离级别是可序列化、什么是真正的可序列化?
2023-05-15 21:05:37 79
翻译 src/backend/access/heap/README.HOT翻译
Heap Only Tuples (HOT) 源码内的readme翻译。postgresql官方对HOT的描述和实现要点
2023-05-12 22:08:33 70
原创 pg内功修炼:逻辑复制
postgresql逻辑复制知识点详解,逻辑解析、复制槽、output plugin、replica identity、发布订阅、事务snap落盘、解析溢出spill···
2023-03-01 23:28:03 1346
原创 读书笔记——《Sapiens : A Brief History of Humankind》
《人类简史》从人类直立行走到到上帝。宗教、经济、社会、科学无所不含,非常棒的一本书,充实历史观
2023-02-19 23:49:34 298
原创 读书笔记——《educated 》和《atomic habits》
《educated 》《atomic habits》读后感,开启阅读后的读书记录
2023-02-07 19:22:46 348
原创 PG流复制详解
什么是PG流复制?Streaming Replication是pg9.0开始提供的传递WAL日志的方式,只要primary库一产生日志,就会立马传递到standby库。在pg9.0之前,pg只能一个个传送wal日志(log shipping),备库至少比主库落后一个wal日志pg流复制进程wal sender:wal sender存在于主库。wal sender进程将主库最新LSN到备库最新的LSN之间的wal 传递给备库wal receiver:wal receiver存在于备库。wal re
2021-08-30 17:22:28 7655
原创 pg_basebackup初识
什么是pg_basebackup?1.pg_basebackup是pg自带的备份工具,它用来做pg的基础备份。pg_basebackup可以用作PITR,也可以用来构造log-shipping standby和stream standby2.pg_basebackup总是备份整个pg,不能做单独的database备份。如果要单独备份某个database或者schema,应该用pg_dump。3.pg_basebackup会备份除了临时文件的所有文件,包括data目录下的所有数据文件,配置文件等等
2021-08-09 11:11:20 2198 1
原创 pg_rewind详解
什么是pg_rewind?pg_rewind是pg提供的工具,当2个pg实例时间线(timeline)出现分叉时,pg_rewind可以做实例间的同步。(比如主库运行的情况下,备库failover后运行了一段时间,此时主备的时间线就出现了分叉)pg_rewind会对比两者的大小,然后把大小不一样的文件从源拷贝到目标,包括配置文件。但是它不会对比没有发生改变的文件,所以pg_rewind在比较大的库,更改少量数据时,运行效率较高。pg_rewind可以运用在备库failover后,备库即时运行一段时间
2021-07-30 16:51:15 4655 1
原创 PG主从搭建——简易版
此次主从搭建全部使用pg9.6,在同一个机器上安装主库和从库,主库从库分别使用不同的端口1 环境准备1.1 软件准备文件:postgresql-9.6.17.tar.bz2(直接官网下载)解压:tar -xvf /pg/soft/postgresql-9.6.17.tar.bz2软件目录:/pg/soft/postgresql-9.6.17安装目录:(prefix指定安装目录)/pg/pg96主库data目录:/pg/pg96data_pri从库data目录:/pg/pg96da
2021-07-27 17:41:55 1000
原创 count(1),count(col1),count(*)的区别
1.count(1)=count(*),计算的是表的真实行数,无论行是否为空2.count(col1)计算的是col1列不为空的行数3.在mysql中,count(1),count(col1),count(*)均访问二级索引4.在oracle中,仅count(col1)访问索引,count(1)和count(*)均访问主键或表5.访问方式的区别是因为mysql索引存储了null值,oracle索引没有存储null值。oracle必须访问主键或表才可以count出表的真实行数,mysql则访问
2021-06-03 15:18:42 549 1
原创 innodb锁详解
如果是索引唯一扫描或主键唯一扫描,innodb只会上行锁锁住一行数据。如果是索引范围扫描或主键范围扫描,innodb会上临键锁。唯一索引同样会有索引范围扫描,仅在等值条件下扫描唯一索引(或主键)才会触发唯一扫描。临键锁会锁住“小于范围的最大存在值和大于范围的最小存在值”,如果没有实际存在值,innodb会给临键锁“超大值”或“超小值”去锁一个大范围。所以在某些情况下,一个update可以锁住整张表。
2021-05-24 17:33:19 1232
原创 rr模式下的快照读--更新操作仍然会导致事务前后数据不一致
rr快照读只会读取当前事务下数据的“历史态”,但当更新(dml)时,事务会去查看“当前态”某些数据行,验证数据的可执行性(如主键冲突、唯一性约束冲突等等)。一但有“当前态”的行数据被更新,这个行就会和当前”历史态“数据合并成新的”历史态“,此后该事务的快照读均是读取的新”历史态“快照。
2021-05-19 16:17:57 631 1
原创 关于组合索引的第二列为in时是否可用走索引的问题
组合索引的第二列为in时是否可用走索引?当时面试直接把我问蒙了。一般来说in会等价改写成or,然后走索引。比如where a in (1,2)等价于where a=1 or a=2在oracle中肯定会这样去改写,所以该走索引的还是会走索引。但是这个条件放在组合索引的第二列呢?首先等价改写同样成立,比如where a in (1,2) and b=0等价于where (a=1 or a=2)and b=0优化器是否会这样做呢?这只有测试了才知道oracle..
2021-05-11 09:46:36 3957
原创 show engine innodb status和innodb锁监控
innodb monitor是innodb内置的监控模块,用show engine innodb status就可以查看。innodb monitor output可以输出在错误日志中查看更细粒度的innodb锁信息,需要打开innodb_status_output_locks
2021-05-10 17:45:58 1712
原创 mysql内存溢出分析办法
mysql内存监控大体归为一下3步1.os角度查看mysql进程内存使用2.mysql服务角度查看mysql内存池使用3.开启performance_schema及内存监控1.从OS进程使用情况出发,查看mysql进程的内存使用情况因为mysql是单进程的,可以通过ps -aux或者top -H -p查看进程的内存使用情况#ps -aux|grep 3306root 40761 0.0 0.0 9696 1632 ? S Mar22 ...
2021-05-08 18:03:08 2323
原创 关于不等于是否可以走索引的问题
以前在学oracle的时候,不等于不能走索引似乎是一条铁律SQL> select a,count(*) from unequal_oracle group by a; A COUNT(*)---------- ---------- 1 2048 2 1create index idx_unequal on unequal_oracle(a);--a=2时,索引的过滤性是比较好的,这里我们取a<&
2021-04-26 17:50:42 7325
事务的历史与SSI-PostgreSQL数据库技术峰会成都站分享
2023-06-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人