# 问题描述数据库创建索引可能会锁住创建索引的表,这样阻塞业务在生产中一般是不被允许的,那么 PostgreSQL 如何解决这个问题哪?# 问题分析PostgreSQL 在 CREATE INDEX 命令中新增CONCURRENTLY 选项来实现索引的并发创建# 验证方法1. 创建测试表并插 3000000 条 数据```sqlpostgres=# CREATE TABLE demo(id int);CREATE TABLEpostgres=# INSERT INTO demo SELECT generate_series(1,3000000);INSERT 0 3000000```...
# 前言在 PostgreSQL 中,有如下场景我们需要进行重建索引1. 索引膨胀。2. 当修改了某些参数,为了使之完全生效,需要进行 reindex 操作,如 fillfactor。3. 索引损坏。4. 在线创建索引失败,索引状态为 "invaild... PostgreSQL 使用如下步骤进行 reindex concurrently 操作 [2]:1. 在表上持有 SHARE UPDATE EXCLUSIVE 锁,创建新的索引,以_ccnew 结尾。设置新的索引 pg_index.indisready = TRUE,pg_index 中字段说明请参考 [3]...
# 问题描述PostgreSQL 数据库中如果有长时间未提交的 2PC,会对数据库造成哪些影响。```Plain Textrudonx=> begin;BEGINrudonx=> insert into accounts values(1,100);INSERT 0 1rudonx=> prepare transacti... ## 影响一:长期持有锁运行 alter table,会发现阻塞。同样的,运行 vacuum full 也会阻塞。```Plain Textrudonx=> alter table accounts ADD COLUMN pc int;rudonx=> select * from pg_stat_activity\gx-[ REC...
# 问题描述尝试在RDS PostgreSQL实例上运行查询,发现查询语句长时间未返回结果,语句执行被阻塞。我该如何排查并解决这个问题?# 问题分析通常情况下,查询被阻塞是由于其他未提交的事务所导致的。当锁等待超时后,查询语句将返回失败。大量的阻塞会导致应用与数据库性能下降,应该引起我们的足够重视。# 解决方案### 1. 通过对pg_stat_activity [1]定位被阻塞的事务的当前状态```test=# SELECT * FROM pg_stat_activity...
# 问题描述PostgreSQL 数据库中如果有长时间未提交的 2PC,会对数据库造成哪些影响。```Plain Textrudonx=> begin;BEGINrudonx=> insert into accounts values(1,100);INSERT 0 1rudonx=> prepare transacti... ## 影响一:长期持有锁运行 alter table,会发现阻塞。同样的,运行 vacuum full 也会阻塞。```Plain Textrudonx=> alter table accounts ADD COLUMN pc int;rudonx=> select * from pg_stat_activity\gx-[ REC...
云数据库 PostgreSQL 版支持通过插件 pg_repack 提供在线 Vacuum Full 的能力,有效解决因为频繁 Update、Delete 等操作引起的表和索引等对象所占据的物理磁盘空间膨胀的问题。相较于 Cluster 和 Vacuum Full,pg_repack 在执行过程中,不会阻塞对目标表的 DML 操作。 原理介绍pg_repack 支持对全表和索引进行 repack,缩减因 Update、Delete 等操作引起的表和索引等对象所占的磁盘空间。 对全表进行 repack对全表进行 repack 的实现...
# 问题描述尝试在RDS PostgreSQL实例上运行查询,发现查询语句长时间未返回结果,语句执行被阻塞。我该如何排查并解决这个问题?# 问题分析通常情况下,查询被阻塞是由于其他未提交的事务所导致的。当锁等待超时后,查询语句将返回失败。大量的阻塞会导致应用与数据库性能下降,应该引起我们的足够重视。# 解决方案### 1. 通过对pg_stat_activity [1]定位被阻塞的事务的当前状态```test=# SELECT * FROM pg_stat_activity...
# 问题描述尝试在RDS PostgreSQL实例上运行查询,发现查询语句长时间未返回结果,语句执行被阻塞。我该如何排查并解决这个问题?# 问题分析通常情况下,查询被阻塞是由于其他未提交的事务所导致的。当锁等待超时后,查询语句将返回失败。大量的阻塞会导致应用与数据库性能下降,应该引起我们的足够重视。# 解决方案### 1. 通过对pg_stat_activity [1]定位被阻塞的事务的当前状态````undefinedtest=# SELECT * FROM pg_stat_acti...
# 前言PostgreSQL 在 9.1 中推出了一种特殊的表:unlogged table,使用 unlogged table 最大的特点是涉及到表的更新,删除等操作不会记录 WAL 日志,这样可以大大的提高性能。不过需要特别注意的是,在数据库异常宕机... 备库中只有表结构而没有数据。3. 当数据库 crash 后,如运行 kill -9 postgresql_pid,数据库重启时自动清空unlogged table的数据。4. 如果正常关闭数据库,如(pg_ctl stop -D /home/pgsql11.5/data/ -m fast),再启...
# 前言PostgreSQL 在 9.1 中推出了一种特殊的表:unlogged table,使用 unlogged table 最大的特点是涉及到表的更新,删除等操作不会记录 WAL 日志,这样可以大大的提高性能。不过需要特别注意的是,在数据库异常宕机时... 备库中只有表结构而没有数据。3. 当数据库 crash 后,如运行 kill -9 postgresql_pid,数据库重启时自动清空unlogged table的数据。4. 如果正常关闭数据库,如(pg_ctl stop -D /home/pgsql11.5/data/ -m fast),再启...
数据库传输服务 DTS 创建或配置 PostgreSQL 的迁移或同步任务时,会先对数据库进行各项检查。本文介绍检查项的详细信息。 检查项 数据库类型 检查范围 级别 检查内容 备注 数据库连通性检查 源库 目标库 所有迁移... pgsql plr postgis postgis_raster postgis_sfcgal postgis_tiger_geocoder postgis_topology postgres_fdw set_user sslinfo tablefunc tsm_system_rows tsm_system_time unaccent uuid-ossp xml2 源库 WAL 级别...
本文介绍云数据库 PostgreSQL 版的各规格实例在 PostgreSQL 11 版本下性能测试的测试结果。 规格代码 最大连接数 表数量 单表数据量 线程数 SysBench 读取次数 SysBench 写入次数 QPS TPS rds.postgres.1c2g 200 64 10,000,000 32 1,452,332 414,950 11,520 576 rds.postgres.2c4g 400 64 10,000,000 32 3,520,888 1,005,968 27,932 1,396 rds.postgres.4c8g 800 64 10,000,000 32 7,283,878 2,081,106 57,793 2,889 rds.postgre...
本文介绍云数据库 PostgreSQL 版的各规格实例在 PostgreSQL 13 版本下性能测试的测试结果。 规格代码 最大连接数 表数量 单表数据量 线程数 SysBench 读取次数 SysBench 写入次数 QPS TPS rds.postgres.1c2g 200 64 10,000,000 32 1,415,834 404,523 11,229 561 rds.postgres.2c4g 400 64 10,000,000 32 3,285,996 938,854 26,075 1,303 rds.postgres.4c8g 800 64 10,000,000 32 7,261,814 2,074,804 57,630 2,881 rds.postgres....