Table of Contents
Q1:character类型有哪些别名
问题描述
PostgreSQL里character类型有哪些别名?
问题解答
- char(n)
- bpchar(n)
bpchar (“blank-padded char”, the internal name of the character data type)
postgres=# create table test_char(a character(10),b char(10),c bpchar(10));
CREATE TABLE
postgres=# \d test_char
Table "public.test_char"
Column | Type | Collation | Nullable | Default
--------+---------------+-----------+----------+---------
a | character(10) | | |
b | character(10) | | |
c | character(10) | | |
结论:使用char、bpchar类型,数据库都会转换为character类型。
Q2:使用with查询,对数据库的影响
问题描述
PostgreSQL 研发的人员经常使用with查询,这个操作有什么影响吗?
问题解答
首先with查询是一个标准用法,PostgreSQL、MySQL、Oracle、SQL Server等都支持。
with子句可以看作是一个查询语句在内存中的临时表。在内存中解析,提高执行效率.,并且提高SQL语句的可读性,用完即销毁。
with查询常见使用场景的递归查询,比如查询动态菜单树。对性能的影响要看具体语句写法,通常对复杂的语句是可以提速的。
可参考:https://www.modb.pro/db/12389
Q3:索引推荐的插件
问题描述
PostgreSQL中索引推荐的插件有哪些?
问题解答
-
HypoPG,PostgreSQL 虚拟索引插件。
-
pg_qualstats,统计 WHERE 和 JOIN 中的谓词,提供索引建议。
-
Paw Index Advisor
-
index_adviser
Q4:PostgreSQL数据实时同步Oracle?
问题描述
有没有什么软件把PostgreSQL的数据实时同步到Oracle?
问题解答
-
OGG
https://www.oracle.com/middleware/technologies/goldengate-downloads.html
-
DBSyncer
https://gitee.com/ghi/dbsyncer
-
Tapdata Cloud
https://tapdata.net/tapdata-cloud.html
Q5:索引损坏(有坏块),对表的影响
问题描述
PostgreSQL中索引损坏(有坏块),对该索引存在的表的正常使用是否有影响?
问题解答
-
对于存储:
PostgreSQL中表和索引是独立存储的,索引如果有坏块并不影响表数据。
-
对于查询:
执行计划如果没走这个索引,而走了全表扫描,查询正常。
索引坏块的解决:
-
重建索引:阻塞表的读写操作
reindex index CONCURRENTLY index_name; -
concurrently 重建索引:在表上加 ShareUpdateExclusiveLock(v12+)
reindex index CONCURRENTLY index_name;




