使用SQLBuilder功能在Swingbench中构建性能测试场景

1、Swingbench介绍 Swingbench是常用的一款进行压力测试和基准测试的软件,旨在对Oracle数据库(12c,18c,19c)进行压力测试。该软件可以生成负载并绘制事务/响应时间图表。SwingBench附带的代码包括6个基准,即OrderEntry,SalesHistory,TPC-DS Like,JSON,CallingCircle和StressTest。 当SwingBench附带的6个基准代码无法满足压力测试要求时,可以使用Swingbench提供的 SQLBuilder 工具和 Java API … [Read more...]

greenplum使用gpcopy数据传输方案

一 架构基础环境 主机mdw和备机mdwbak节点对等,都采用2+4架构。 1.1 主机列表 主机 IP地址 备机 IP地址 mdw 192.168.0.20 mdwbak 192.168.0.30 smdw 192.168.0.21 smdwbak 192.168.0.31 sdw1 192.168.0.22 sdw1bak 192.168.0.32 sdw2 192.168.0.23 sdw2bak 192.168.0.33 sdw3 192.168.0.24 sdw3bak 192.168.0.34 sdw4 192.168.0.25 sdw4bak 192.168.0.35 1.2 CPU及内存 所有节点都采用华为云服务器,CPU核心数为16核心,内存为32G,节点总数为12。主机备机都采用内部万兆网络。磁盘为单独挂载磁盘,采用高性能IO磁盘,实际最高读写性能为350M/s。 1.3 计算节点和镜像节点 计算节点primary数量为主备机都为24,镜像节点mirror数量为主备机都为24,总节点数量为48。 1.4 数据库版本 数据库采用greenplum官方发布的5.27.1开源版本。   二 环境磁盘IO和网络IO性能基准测试 2.1 … [Read more...]

Greenplum 数据同步方案—PostgreSQL技术文章晟数

更多精彩内容,请登录:ke.sandata.com.cn 一、目的 当前现有服务器状态为同机房两套 Greenplum 集群,节点数为 2 + 4。为满足未来灾备中心建设,需要构架高可用架构方案,以满足未来在生产系统集群出现不可恢复状态下,备用集群可以完全接管生产系统集群,以实现高可用架构。 二、方案 目前方案分为以下两种,一种为数据实时同步高可用方案,一种为允许数据同步有一定的延迟状态。 2.1 数据实时同步高可用架构(本文省略) 架构图如下(不做说明) 当主机中心由于不可抗拒因素或者硬件及认为因素不可用,备机完全接管主机。 2.2 … [Read more...]

【故障处理】再次安装Grid时,出现oraInventory目录 No such file or directory的错误

【故障描述】 /u02是之前单实例数据库的安装目录,客户执行删除脚本已经把数据库软件和实例都删除了,现在新装Grid软件,Grid目录指定在/u01下, 现在安装提示没有u02目录。截图如下: 【问题分析】 oracle软件安装时,通常都需要产品清单目录来保存软件安装的目录等信息,有点类似于window里面的注册表。再删除软件时,也需要读取产品清单目录里面的内容,来确定曾经安装的软件位置。 产品清单目录的位置,是保存在/etc/oraInst.loc文件中,如下: [cce] [root@sdedu ~]# cat … [Read more...]

PostgreSQL HLL插件介绍

前言 HLL是 HyperLogLog数据结构的简称。PostgresSQL通过插件的方式引入了这种新的数据类型hll。HyperLogLog是一个具有固定大小,类似于集合结构,用于可调精度的不同值计数。例如,在1280字节的hll数据结构中,它可以在很小的误差范围内估算出数百亿的不同值计数。 算法 hll可以被视为层次结构的不同集合/不同值计数算法的组合,并向上移动该层次结构的规则。为了区分上述描述算法,将其命名为以下: ♠ EMPTY 表示空集的常量值 ♠ EXPLICIT 集合中确定的,唯一的,排序完整的整数列表,该列表保持一个固定的基数 ♠ SPARSE HyperLogLog是基于映射的“惰性”实现,是一种基于概率集合的数据结构。仅将非零寄存器的索引和值存储在 map中,直到非零寄存器的数量超过固定的基数。 ♠ … [Read more...]

PostgreSQL备份工具 pgBackRest使用

前言 pgBackRest是一款开源的备份还原工具,目标旨在为备份和还原提供可靠易用的备份。 特性 并行备份和还原 备份操作期间压缩通常是其瓶颈所在。pgBackRest通过并行处理解决了备份期间压缩出现的瓶颈问题。 本地远程操作 自定义协议允许 … [Read more...]

PostgreSQL 查找需要收集的vacuum 表信息

前言 通常,在PostgreSQL中,由于经常需要对表进行 UPDATE 和 DELETE,因此表会产生碎片空间。在 PostgreSQL中,使用VACUUM 仅仅对需要执行 VACUUM 表将已删除的空间标识为未使用,以便以后重用这些空间,但是不能立即将占用的空间返还给操作系统,因此需要使用 VACUUM FULL,才可以释放空间,并立即将空间返还给操作系统。 实现脚本 记录收集表创建 [cce] CREATE TABLE IF NOT EXISTS tab_vacuum_record (sqltext text); [/cce] 收集需要VACUUM 表函数 [cce] CREATE OR REPLACE FUNCTION f_vacuum_tables() RETURNS void AS $FUNCTION$ DECLARE v_tablename text; v_dead_cond bigint; v_sql text; cur_tablename REFCURSOR; v_vacuum_record text; BEGIN v_vacuum_record := 'tab_vacuum_record'; OPEN cur_tablename FOR SELECT tablename FROM pg_tables WHERE tablename !~ '^pg|^sql'; LOOP FETCH cur_tablename INTO v_tablename; SELECT n_dead_tup INTO v_dead_cond FROM … [Read more...]

PostgreSQL libpq学习指南二

连接状态函数 PQdb 返回连接的数据库名称 PQuser 返回连接的用户名称 PQpass 返回连接的用户密码 如果连接密码没有被提供,那么将会尝试从 password_file 文件中获取。 PQhost 返回连接的服务器主机名称 PQhostaddr 返回连接的服务器IP地址 PQport 返回连接服务器的端口 PQtty 返回连接的DEBUG 终端信息 PQoptions 返回命令行传递的参数信息 PQstatus 返回连接的状态信息 示例: [cce] #include <stdio.h> #include <stdlib.h> #include "libpq-fe.h" int main(int argc, char **argv) { const char *conninfo; //定义连接信息 PGconn *conn; //连接数据库传递参数 if (argc > 1) conninfo = argv[1]; else conninfo = "dbname = postgres"; /* 连接数据库字符串 */ conn = PQconnectdb(conninfo); /*检查数据库是否连接成功 */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "连接数据库失败: … [Read more...]

PostgreSQL libpq 客户端接口(一)

前言 Libpq 是为 C 语言开发这提供的关于 PostgreSQL 的接口。Libpq 由相关库函数组成,可以允许客户端程序通过将查询传递给 PostgreSQL 后台服务器并接收这些查询返回的结果。同时,libpq 也是其它几个 PostgreSQL 应用程序接口的基础引擎,包括 C++,Perl,Python,Tcl和ECPGC编程的嵌入式 SQL。 连接字符串 以下函数处理 PostgreSQL 后台服务器的连接。一个应用程序同时可以有多个打开的连接,这也是 PostgreSQL 服务器能够同时访问多个库的原因。每一个连接都通过 PGconn 对象表示,该对象可以从函数 PQconnectdb,PQconnectdbParams 中或者 PQsetdbLogin 获取信息。需要注意的是,这些对象通常返回一个非空的对象指针。除非由于内存太小导致无法分配 PGconn 对象。PQstatus … [Read more...]

显示Oracle数据库表或行上持有锁的所有会话

今天一位客户说应用运行比较慢,让我看看数据库中锁的相关情况。 那么如何快速的找到持有锁的会话相关信息呢? 请参考如下SQL: [cce_SQL] set term on; set lines 130; column sid_ser format a12 heading 'session,|serial#'; column username format a12 heading 'os user/|db user'; column process format a9 heading 'os|process'; column spid format a7 heading 'trace|number'; column owner_object format a35 heading 'owner.object'; column locked_mode format a13 heading 'locked|mode'; column status format a8 heading 'status'; spool coe_locks.lst; select substr(to_char(l.session_id)||','||to_char(s.serial#),1,12) sid_ser, substr(l.os_user_name||'/'||l.oracle_username,1,12) username, l.process, p.spid, substr(o.owner||'.'||o.object_name,1,35) owner_object, decode(l.locked_mode, 1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share', 5,'Share Row Excl', 6,'Exclusive',null) locked_mode, substr(s.status,1,8) status … [Read more...]