这是杂货铺的第463篇文章 曾经测试过Oracle 11g下count(*)、count(1)、count(主键列)和count(包含空值的列)这几种操作,究竟有何区别,结论如下, 11g下,通过实验结论...,说明了count(1)和count(主键索引字段)其实都是执行的count(*),而且会选择索引的FFS扫描方式,count(包含空值的列)这种方式一方面会使用全表扫描,另一方面不会统计空值,因此有可能和业务上的需求就会有冲突...前几天,碰巧看见PostgreSQL中文社区发的一篇文章,关于在PG中count(1)和count(*)的效率问题,从结论看,和Oracle很像,但是他是从开源code,探究的整个过程,能够更准确地了解背后的原理...源码解读 查看count函数定义 test=# select proname, pronargs, prosrc from pg_proc where proname='count...可见,Oracle和PG对于一些操作,其实存在相同之处的,谈不上谁借鉴,可能更多地还是针对场景,为了满足业务以及性能方面的需求,提供的合理逻辑。
简介 PG中的file_fdw、postgres_fdw和dblink github:https://github.com/laurenz/oracle_fdw 基于FDW(Foreign Data...Oracle_fdw是PG的一个外部数据接口,可以使PostgreSQL轻松跨库操作Oracle。...Oracle_fdw的作用有以下两点: PG可以跨库增删改查Oracle中的表,可以查询Oracle的视图,可以使PG中的表和Oracle中表/视图作Join查询,类似dblink的功能。...安装 oracle_fdw 的编译依赖系统中需要有pg_config和Oracle客户端的环境。...和tools可选: 下载网址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
本篇主要分析PG的统计信息。 ORACLE统计信息迁移到PG(不接触用户数据),应用场景比较特殊,不再赘述。...mapping values(9, 24, NULL, 'hhh'); insert into mapping values(0, 19, NULL, 'zzz'); -- 便于直观看到统计信息,先查一下pg_stats...这个视图 postgres=# select * from pg_stats where tablename='mapping'; -[ RECORD 1 ]----------+----------
简介 在PG中访问PG可以通过dblink,在PG中访问Oracle可以通过oracle_fdw,访问MySQL可以通过mysql_fdw,具体过程可以参考:https://www.xmmup.com/...中访问SQL Server和MySQL的配置可以参考:https://www.xmmup.com/oracle-database-gatewaystoumingwangguandeanzhuanghepeizhi.html...那么,在Oracle中访问PG该如何配置呢?...Oracle dblink的底层是通过ODBC连接PostgreSQL执行SQL的,需安装unixODBC和PostgreSQL ODBC驱动(它们的配置文件是:odbcinst.ini和odbc.ini...安装完成后,在目录/usr/pgsql-12/下生成lib和share相关目录。pg的odbc驱动放在lib下。
和DDL操作,这也是很多朋友所期待的功能。...脚本DB_PG_HC_lhr_v1.0.0.sql是PG脚本,目前结果比较简单,还在持续更新优化,执行后会产生PostgreSQL的健康检查html报告。...小麦苗数据库巡检脚本特点 1、可以巡检Oracle、MySQL、SQL Server、PG数据库(后期考虑增加MongoDB) 2、脚本为绿色版、免安装、纯SQL文本 3、跨平台,只要有SQL*Plus...19c、20c等高版本Oracle数据库 6、对Oracle 10g、11g、12c、18c、19c等版本分别提供了只读版(只对数据库查询,不做DDL和DML操作) 7、增删监控项非常方便,只需要提供相关...PG数据库 ? 脚本运行方式 Oracle数据库 只要有sqlplus的客户端即可。
这些messager 对应监听 public、cluster、front 和 back 四个端口:public 端口:监听来自 Monitor 和 Client 的连接。...至于,front和back和ceph的网络规划有关,ceph将osd间的副本数据、迁移数据的传输交由cluster network,将client和ceph后端的数据传输交由public network...扩散:作为中心节点的 Monitor 并没有在更新 OSDMap 后尝试广播通知所有的 OSD 和 Client,而是惰性的等待 OSD 和 Client 来获取。...OSD 挂掉之后,ceph 将这个 OSD 上的所有 PG 标记为 degraded,但是此时的集群还是可以正常读写数据的,但是需要做一些额外的标记和处理,因此虽然降级并不是严重的问题,仍会造成读写性能的下降...Peeredpeered,我们这里可以将它理解成它在等待其他兄弟姐妹上线,这里也就是osd.4和osd.7的任意一个上线就可以去除这个状态了,处于peered状态的PG是不能响应外部的请求的,外部就会觉得卡卡的
使用例子 对test数据库下的foo和bar表做在线vacuum full $ pg_repack --no-order --table foo --table bar test 转移foo表的索引到...hours”(0到23)指定了一天内检查的时间,而“days_of_month”(1到31)、“months”(1到12)和“days_of_week”(0到7,其中0和7都代表星期日)确定了检查的日期...如果“minute”、“hour”和“month”都与当前时间戳匹配,则进行检查,而NULL值分别表示任何分钟、小时和月份。...至于“days_of_month”和“days_of_week”,至少有一个需要与当前时间戳匹配,或者两者都为NULL才会进行检查。...3.其它 pg_repack和pg_squeeze都需要表有主键或者非空唯一约束。
Ora2pg 使用总结 1 Ora2pg特性 1、导出整个数据库模式(表、视图、序列、索引),以及唯一性,主键、外键和检查约束。 2、导出用户和组的授权/权限。 3、导出筛选的表(通过制定表明)。...4、导出Oracle模式到一个PostgreSQL(7.3以后)模式中。 5、导出预定义函数、触发器、程序、包和包体。 6、导出范围和列表分区。 7、导出所有的数据或跟随一个WHERE子句。...Oracle特定的PL/SQL代码生成函数、过程 和触发器时必须进行审查,以便匹配PostgreSQL的语法 2 Ora2pg支持的导出对象 这是允许导出的不同的格式,默认是TABLE: table 提取所有包括索引...--forceowner : 导入数据时,强制 ora2pg 将导入 PostgreSQL 的表和序列的拥有者设置为连接 Oracle 数据库时的用户。...该参数只能用于 SHOW_REPORT 和 QUERY 导出类型。 --pg_dsn DSN : 设置在线导入时的 PostgreSQL 数据源。
1 Ora2pg特性 1、导出整个数据库模式(表、视图、序列、索引),以及唯一性,主键、外键和检查约束。 2、导出用户和组的授权/权限。 3、导出筛选的表(通过制定表明)。...4、导出Oracle模式到一个PostgreSQL(7.3以后)模式中。 5、导出预定义函数、触发器、程序、包和包体。 6、导出范围和列表分区。 7、导出所有的数据或跟随一个WHERE子句。...Oracle特定的PL/SQL代码生成函数、过程 和触发器时必须进行审查,以便匹配PostgreSQL的语法 2 Ora2pg支持的导出对象 这是允许导出的不同的格式,默认是TABLE: table 提取所有包括索引...--forceowner : 导入数据时,强制 ora2pg 将导入 PostgreSQL 的表和序列的拥有者设置为连接 Oracle 数据库时的用户。...该参数只能用于 SHOW_REPORT 和 QUERY 导出类型。 --pg_dsn DSN : 设置在线导入时的 PostgreSQL 数据源。
PG中的自动故障转移是什么 PG中设置和配置物理流复制后,如果服务器的master发送故障,则可以进行故障转移。故障转移是描述恢复过程的属于。...为啥使用PG复制 数据复制有很多用途:OLTP 性能、容错、数据迁移、并行测试系统 OLTP 性能:从联机事务处理 (OLTP) 系统中移除报告查询负载可以提高报告查询时间和事务处理性能。...同步和异步模式都有其成本和优势,用户在配置复制设置时会希望考虑安全性和性能。...复制类型 PostgreSQL 数据库的物理复制与PostgreSQL 数据库的逻辑复制 在我们讨论物理和逻辑复制类型之前,让我们回顾一下术语“物理”和“逻辑”的上下文。...它不知道这些文件和目录代表什么。物理复制在文件系统级别或磁盘级别完成。 另一方面,逻辑复制处理数据库、表和 DML 操作。因此,在逻辑复制中可以只复制特定的一组表。逻辑复制在数据库集群级别完成。
PostgreSQL 中的 WAL Sender 和 WAL Receiver 是什么?...一旦 WAL 记录到达 WAL 段文件,备用服务器会不断地回放 WAL,以便备用服务器和主服务器是最新的。...在每个主节点和备用节点上下载并安装 EFM后,您可以创建一个EFM 集群,该集群由一个主节点、一个或多个备用节点和一个可选的见证节点组成,该节点在发生故障时确认断言。...PostgreSQL 的 repmgr 另一个开源工具是 repmgr(复制管理器),它还管理 PostgreSQL 集群的复制和故障转移。...EDB为安装和运行 repmgr for PostgreSQL提供了深入的教程。
支持高效在线扩缩容、用户无感知数据rebalance和冷热数据分级存储,节省用户成本。 数据库特性丰富。支持各种窗口分析函数,高度兼容Oracle常用函数和语法。...存储过程中的输入、输出参数,Oracle支持IN、OUT和INOUT三种类型,但PostgreSQL不支持OUT,TDSQL PG版对此做了兼容,完整支持IN、OUT和INOUT三种类型。...中常用的语法和函数,TDSQL PG版都可以兼容。...3.7 ROWID & ROWNUM ROWID和ROWNUM都是Oracle特有的语法,PostgreSQL并不支持,TDSQL PG版对此进行兼容改造,支持ROWID和ROWNUM。...4.6 双轨运行方案 下图是我们的双轨运行方案,图中有两个架构,分别是Oracle To TDSQL PG版和TDSQL PG To Oracle。
脚本DB_PG_HC_lhr_v7.0.0.sql是PG脚本,执行后会产生PostgreSQL数据库的健康检查html报告。...二、巡检脚本特点 1、可以巡检Oracle、MySQL、SQL Server和PG数据库,也可以巡检Linux操作系统 2、脚本为绿色版、免安装、纯SQL文本 3、跨平台,只要有SQL*Plus、mysql...20c、21c等高版本Oracle数据库 6、对Oracle 10g、11g、12c、18c、19c、20c、21c等版本分别提供了只读版(只对数据库查询,不做DDL和DML操作) 7、MySQL最低支持...4、PG数据库 [image-20210130153433186.png] 5、OS信息 [wps16.jpg] 四、脚本运行方式 1、Oracle数据库 只要有sqlplus的客户端即可。...:1521/orcl as sysdba @DB_Oracle_HC_lhr_v7.0.0_12c.sql 2、MySQL数据库 首先将DB_MySQL_HC_lhr_v7.0.0.sql和pt-summary
PG14 监控和日志功能提升 PostgreSQL 14与2021年9月发布,其中包括很多性能改进和功能增强,包括监控方面的功能提升。下面是一些关键内容。...现主PG的监控工具比如pg_stat_activity、explain、pg_stat_statments使用这个query_id,不再使用算法进行计算。...0.00..15.01 rows=1001 width=4) Output: a Query Identifier: 3480779799680626233 (3 rows) 自动vacuum和自动...analyze 日志改进 PG14改进了auto-vacuum和auto-analyze的logging功能。...PG不断升级其功能以改进日志记录和监控功能。通过这些新增的功能,可以对连接有更多了解,可以轻松跟踪查询和观察性能,并确定vacuum在读写中花费多少时间。可以极大版版主更好配置vacuum参数。
为了解决这些问题,ceph引入了归置组的概念,即PG。 # PG概念 PG是一个逻辑概念,linux系统中可以直接看到对象,但是无法直接看到PG。...PG是一种间址,PG的数量有限,记录PG跟OSD间的映射关系可行,而记录object到OSD之间的映射因为数量巨大而实际不可行或效率太低。...因为对象数无法事先知道,但是有了pg,先把对象映射到pg,然后只需计算pg到osd的映射就可以了,pg数是一定的,这样算法设计可能会简单一点。 # 原理 对象时如何映射进PG的?...Peering peer过程实际上就是让三个保存同一个PG副本的OSD对保存在各自OSD上的对象状态和元数据进行协商的过程,但是呢peer完成并不意味着每个副本都保存着最新的数据。...Stale Ceph使用心跳来确保主机和进程都在运行,OSD进程如果不能周期性的发送心跳包, 那么PG就会变成stuck状态。
coroot-pg-agent 和 postgres_exporter 的不同之处在于, coroot-pg-agent 主要是根据 pg_stat_statements 这个extension来采集sql...coroot-pg-agent 的部署也很简单,参考官方github即可。...说明: 我这里演示的pg14,运行在1921端口上 create role coroot_pg_agent with login password '123456'; grant pg_monitor...to coroot_pg_agent; 编辑pg配置文件,添加如下 shared_preload_libraries = 'pg_stat_statements' 然后重启生效 登录pg,任一个...reload prometheus即可 指标不是很多,但是都是跟pg_stat_statements 相关联的,这些指标,在分析sql耗时和耗io排行时候还是有用的。
该程序使用给定的名称作为备份参数创建一个目录,然后在该目录中使用pg_dump转储per-data和post-data部分。...pg_dumpbinary从pre-data部分收集模式和表的列表,并通过psql命令执行SQL COPY命令以从所有表中以二进制格式转储所有数据。...可以使用pg_restorebinary程序恢复备份。pg_dumpbinary创建一致的备份,数据库服务器需要支持同步快照,这是在PG9.2中引入的用于主服务器和10用于备服务器的功能。...安装 pg_dumpbinary和pg_restorebinary都是perl程序,除了perl本身、perl模块DBD::pg和DateTime外不需要任何其他东西。...PG命令pg_dump、pg_restore和psql必须通过PATH环境变量设置才可用。数据通过gzip压缩。
生产上,有个需要从MySQL异构复制数据到PG中的需求。...str(x).replace(' ', '').encode()).hexdigest() mysql_chksum[id] = chk_sum # print(f"MySQL校验和...) pg_cursor = pg_conn.cursor() pg_cursor.execute(chksum_sql_4pg) pg_chksum_result = pg_cursor.fetchall...(str(x).replace(' ', '').encode()).hexdigest() pg_chksum[id] = chk_sum # print(f"PG校验和 {pg_chksum...= '192.168.31.182' pg_port = '5432' pg_user = 'dts' pg_pass = 'dts' pg_db = 'sbtest' pg_schema = 'public
/var/lib/pgsql/14/data/postgresql.conf //允许远程图片[root@liangcb ~]# vim /var/lib/pgsql/14/data/pg_hba.conf
time: 0.160 ms Execution time: 46.460 ms (5 rows) orafce https://github.com/orafce/orafce orafce英文全称Oracle...可以在PostgreSQL上使用Oracle的特殊函数和包,并且兼容Oracle的部分语法、数据类型、函数、字典表等。 通过orafce可以和Oracle兼容的功能。...https://github.com/markwkm/pg_top pg_top是PostgreSQL的“top”。...pg_top full command line 可以监控到主机的负载、CPU、内存、SWAP、PG的进程数(总数、活跃数,空闲数等),同样还能显示具体的进程信息(PID、DB用户名、资源占用情况等)。...通过系统视图或扩展视图(如pg_stat_activity或pg_stat_statements)来辅助分析函数和存过中的性能问题也是有所局限。
领取专属 10元无门槛券
手把手带您无忧上云