- 博客(62)
- 资源 (5)
- 收藏
- 关注
原创 数据库微观案例第53期
根因:在事务隔离级别RC下,事务更新行时,如果此行被其他事务更新,需要重新读取新的版本再重试一次,而范围更新的场景下,tuple新版本大概率会在其它页面上,更容易形成ABBA锁的条件,出现死锁。从MySQL迁移过来的业务如果不希望带时区信息时,应该明确使用timestamp without time zone类型,而不要使用timestamp别名类型。gs_copy_summary表记录COPY执行结果汇总,包括成功行数,出错行数,忽略行数,空行数。业务查询这个大表时,字段有50多个,记录有三千多万。
2024-12-26 16:19:50
792
原创 数据库微观案例第52期
系统自动帮我们生成了10月之前的上边界分区,同时利用了10月的分区名称,10月之前的上边界分区名称为p2410_0,10月的分区名称为p2410_1,11月的分区名称保持不变。注记的编写并不是一件容易的事,即要兼顾不同提交者的声音,又要对所有的变化保持简明扼要及张弛有度。可对于新特性重度爱好者,注记内容的详实度级别是不够的,而这些新增的链接对他们如获至宝。再次查看分区表详情,符合预期。
2024-12-15 11:32:44
1319
原创 数据库微观案例第50期
这个功能仅影响 UNIQUE,PRIMARY KEY,REFERENCES (外键)和 EXCLUDE 约束,他们是可延迟的,而NOT NULL和CHECK是不可以做延迟生效的。执行自治事务可通过pg_running_xacts视图进行观测,自治事务的会话连接,sessionid对应的is_autonomous_session为t,parent_sessionid不为0。当pg_hba.conf文件配置的认证方法为md5,但服务端用户密码采用SCRAM加密时,服务端会自动采用SCRAM认证。
2024-12-15 11:29:26
1008
原创 数据库微观案例第49期
MySQL兼容性下,使用虚拟行号,类似Oracle的rownum,示例如下使用@设置自定义变量,需要先开启enable_set_variable_b_format参数为on。
2024-12-15 11:28:55
922
原创 数据库微观案例第48期
除此之外,不管PG或者openGauss,我们还可以使用dump清单这个高级功能,对-Fc导出的dump文件先使用-l生成清单,编排清单文件后进行恢复,往期的案例也有过介绍。注意:切割sales_maximize时,切割为sales_20240731 和sales_maximize,仍然保留了原来的分区名,并新增一个分区。从上面的表格,可以看出PG 14使用LLVM 16的最低小版本是14.10,而当前使用的小版本是14.9。PG 17对pg_restore工具也增加了filter选项读取文件来进行恢复。
2024-12-15 11:28:24
727
原创 数据库微观案例第47期
目前遇到的问题是最新的v0.17不能编译成功,v0.15版本与PG 16可以编译成功,pgcopydb编译后支持的PG版本为11到16,但操作时源端与目标端的大版本必须一致,而pg_dump/pg_restore没有这个限制,因为向下兼容,相对更灵活些。使用pg_dump进行逻辑导出时,在PG 15之前即便不导出分区表,普通表导出也会受pg_dump查询分区函数的影响,而此时任意某个分区表有DDL操作时都会导致pg_dump被卡。从PG 15开始,这个场景pg_dump可以正常执行完成,不会被卡。
2024-12-15 11:27:51
761
原创 数据库微观案例第46期
由于主库并未提前创建相应的复制槽,但基础备份还是会继续执行拉取数据的流程,数据拉完后再提示slot的错误,为什么不先检测slot,如果不存在就直接报错退出,而需要浪费时间拉完数据再删除呢?个人觉得这是一个可以优化的点,当前的流程是先拉取数据,拉取数据的过程中同时去接收WAL(stream模式),同时使用复制槽来预防备份过程中数据变化太快,可能导致WAL被回收。),能正常显示为中文吗?如果使用自定义的slot,需要我们提前创建,并且还需要注意及时删除,所以缺省的临时复制槽对我们更合适。
2024-12-15 11:27:14
615
原创 数据库微观案例第46期
由于主库并未提前创建相应的复制槽,但基础备份还是会继续执行拉取数据的流程,数据拉完后再提示slot的错误,为什么不先检测slot,如果不存在就直接报错退出,而需要浪费时间拉完数据再删除呢?个人觉得这是一个可以优化的点,当前的流程是先拉取数据,拉取数据的过程中同时去接收WAL(stream模式),同时使用复制槽来预防备份过程中数据变化太快,可能导致WAL被回收。),能正常显示为中文吗?如果使用自定义的slot,需要我们提前创建,并且还需要注意及时删除,所以缺省的临时复制槽对我们更合适。
2024-12-15 11:26:30
953
原创 数据库微观案例第45期
so_reuseport的作用是让pgbouncer启动并监听网络端口时增加Socket选项SO_REUSEPORT ,这个选项允许多个进程在同一个端口上进行监听。文档描述可以手动起多个pgbouncer进程,监听同一端口,但要设置so_reuseport=1且需要设置不同的unix_socket_dir、pidfile和logfile参数。
2024-12-15 11:25:53
1163
原创 数据库微观案例第44期
从12版本开始,浮点数输出显示的精度做了优化,extra_float_digits参数描述也说明了这一点,使用shortest-precise模式。这是9.6版本的行为,而10版本插入的行数虽然是一致,但第二个函数只产生2行数据不会重复,其他数据库行的第二列值为NULL。FROM子句后的函数使用with ordinality后缀修饰时,函数的每行输出将追加一列类型为bigint的自增序号。注意增量追赶主库,需要先停standby节点的服务,才能操作。同时保留postgresql.conf配置文件,不同步。
2024-12-15 11:24:04
564
原创 数据库微观案例第43期
如果活动会话视图监控到commit操作产生等待,优先排查的方向是操作系统层I/O是否存在压力,检查I/O是否使用NAS,TCP网络是否超载,或者共享存储是否有争用,磁盘或者操作系统硬件相关的问题。成本预估:use_remote_estimate、fdw_startup_cost、fdw_tuple_cost、analyze_sampling。commit提交事务是一件很轻量的事儿,它仅需注册clog文件里2个比特位的状态,也无需对数据表进行操作,通常很快。3)设置fetch_size。
2024-12-15 11:23:36
496
原创 数据库微观案例第42期
需要将事件触发器以及清理函数与插件删除依赖绑定关系,当删除插件产生sql_drop事件时,清理函数才能正常工作。建表后插入测试数据,a表插入1000条,b表插入500万条,只包含aid的500个id。上面两种方式将执行时间下降到18s左右,德哥还有大招:稀疏列变态优化,详情见文章。分区表主键字段如果不是分区键,那创建主键约束时会包含tableoid列。3.alter database…1.默认情况下gs_guc工具可以修改实例级的参数,并立即生效。改写前执行时间30s,改写后34ms,大约1000倍提升。
2024-12-15 11:22:19
594
原创 数据库微观案例第41期
本期分享几个NULL相关的案例,包括:NULL与操作符、NULL与索引、NULL与UNIQUE字段、NULL与外键引用、NULL与默认值。
2024-12-15 11:21:38
407
原创 数据库微观案例第41期
本期分享几个NULL相关的案例,包括:NULL与操作符、NULL与索引、NULL与UNIQUE字段、NULL与外键引用、NULL与默认值。
2024-12-15 11:21:03
259
原创 数据库微观案例第40期
除此之外,不管PG或者openGauss,我们还可以使用dump清单这个高级功能,对-Fc导出的dump文件先使用-l生成清单,编排清单文件后进行恢复,往期的案例也有过介绍。注意:切割sales_maximize时,切割为sales_20240731 和sales_maximize,仍然保留了原来的分区名,并新增一个分区。从上面的表格,可以看出PG 14使用LLVM 16的最低小版本是14.10,而当前使用的小版本是14.9。PG 17对pg_restore工具也增加了filter选项读取文件来进行恢复。
2024-12-15 11:19:20
1000
原创 快速掌握PostgreSQL版本新特性:勘误
今年一月发布新书后,陆续收到读者朋友们的一些问题反馈,我们在三月份根据读者朋友们的反馈做了第1次修订,最近正要进行第2次修订,现正式发布完整的勘误表,各位朋友们如果还有新的问题请随时反馈给我。
2024-09-11 10:41:16
521
原创 PostgreSQL智慧碎片|微观案例 |宏观收获
精选10个小案例:分区键妙用表达式、默认权限的小误解、普通用户禁用触发器失败、数据库管道操作安全问题、多种方式灵活设置search_pathchar、字段使用bpchar转型走索引
2024-05-30 07:56:48
819
原创 PostgreSQL知识分享-第39期
通过LSN获取WAL段文件名为什么失灵、设置GUC参数可直接更新pg_settings吗、MySQL存过一次返回多个结果集,如何迁移?
2024-05-05 09:43:11
981
原创 PostgreSQL知识分享-第36期
ACL默认显示问题、关于发布的两个小知识、Drop Table后空间未释放、DBeaver阻止并行、映射bit类型
2024-04-16 09:50:58
904
原创 几个提高性能的小特性
LOCALE 与 "operator class"Trigger 与 Transition TableCase 与 Filter
2024-04-08 09:06:27
181
原创 PGer应知十技
1.准确理解tuple(元组)的概念2.初始化时打开checksums3.跨库访问需重新连接4.xlog不能删除5.按需设置日志项并合理输出6.truncate操作应按DML进行配置7.使用tmux工具高效搭配psql8.autovacuum调优9.定期维护索引10.善用PG关键字
2024-04-07 08:12:18
1058
转载 请不要固步自封,升级到 PostgreSQL 16 的 7 大理由!
升级时考虑的7大理由:1. 生命周期 2.安全性 3. 并行能力 4.易于管理和配置 5. 详细的I/O诊断信息,方便DBA甩锅 6. 逻辑复制不受主备切换影响,可安心的发布订阅数据表 7. SQL:2023新标准,PostgreSQL比商业数据库支持更全面
2024-04-07 08:11:33
2118
区块链blockchain概念
2017-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人