返回顶部
首页 > 资讯 > 数据库 >OGG中主键与trandata的添加顺序是什么
  • 222
分享到

OGG中主键与trandata的添加顺序是什么

2024-04-02 19:04:59 222人浏览 安东尼
摘要

本篇文章给大家分享的是有关OGG中主键与trandata的添加顺序是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最近在做OGG的压力测试

本篇文章给大家分享的是有关OGG中主键与trandata的添加顺序是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

最近在做OGG的压力测试,源库与目标库采用表级同步。 源库有20张表,每张表的列都在30-40个之间,数据量不小。

测试时候采用循环执行dml语句的方式来测试OGG同步效果,测试脚本示意如下:

脚本只是用于说明过程,并不严谨

begin

for i in 1..100000 loop

     Insert into table1 (test_id, col1,col2) values(i,x,x);

     Insert into table2 (test_id, col1,col2) values(i,x,x);

     ...

     Insert into table20 (test_id, col1,col2) values(i,x,x);

     if mod(1,1000)=0 then

          commit;

     end if;

end loop;

commit;

end;

/

begin

for i in 1..100000 loop

     update table1 set col1=48452 where test_id=i;

     update table2 set col1=48452 where test_id=i;

     …

     update table20 set col1=48452 where test_id=i;

     if mod(1,1000)=0 then

          commit;

     end if;

end loop;

commit;

end;

/

begin

for i in 1..100000 loop

     delete table1 where test_id=i;

     delete table2 where test_id=i;

     …

     delete table20 where test_id=i;

     if mod(1,1000)=0 then

          commit;

     end if;

end loop;

commit;

end;

/

测试结果非常差,耗时长达10小时!其中抽取和投递速度都比较理想,耗时集中在复制进程执行delete操作部分。

GGSCI > lag REPSYM_T

Sending GETLAG request to REPLICAT REPSYM_T ...

Last record lag: 36481 seconds.

At EOF, no more records to process.

遇到这个问题有以下几个思路:

1. 设置多个复制进程,使其并行。

2. 在复制进程参数文件中加入batchsql参数。

3. 绑定变量优化delete语句。

直观感觉不是以上问题能解决的,但是也逐一尝试了。效果不明显。 测试时一直监控undo表空间和用户表空间都没有什么问题,所以也不是这部分问题。

接下来做了一个测试,不通过OGG复制的方式,在目标端创建测试表,插入10万数据,删除10w数据速度正常。看来问题就是在OGG复制上。

难道是没有主键? 使用下面的SQL语句查看了下结果。发现所有的表都有主键。

select owner,table_name,constraint_type,constraint_name,status

from dba_constraints

where owner='TEST'

and constraint_type in('P','U');

接下来再查看trandata状态,结果很出乎我的意料。

GGSCI > dblogin userid ogg,passWord ogg

GGSCI> info trandata TEST.*

...

Logging of supplemental redo log data is disabled for table TEST.table1.

..

看到这里,我明白问题出在哪了。

同步表没有主键,在设置了trandata后,update、delete操作使用所有列绑定为一个列作为唯一标识来同步变化的。后来手工添加了主键,但是trandata还是按照之前的方法来做,并没有采用主键。解决方法很简单,删除原有trandata,重新add trandata使主键生效。

GGSCI> delete trandata TEST.*

GGSCI> add trandata TEST.*

再次测试效果显著,复制进程的延时从36481降到了542秒!

GGSCI> lag REPSYM_T

Sending GETLAG request to REPLICAT REPSYM_T ...

Last record lag: 542 seconds.

At EOF, no more records to process.

总结:在部署OGG之前需要先对复制对象做个健康体检。其中最重要的一点就是源表需要有主键或唯一键。 如果在OGG部署完成后才发现源表缺少主键或者唯一键,需要手工添加后将原有trandata删除,再重建使其生效。这样在OGG同步update和delete操作时才能减少传输量,不至于将所有列打包绑定作为“键值”来应用。

以上就是OGG中主键与trandata的添加顺序是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: OGG中主键与trandata的添加顺序是什么

本文链接: https://lsjlt.com/news/65984.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • OGG中主键与trandata的添加顺序是什么
    本篇文章给大家分享的是有关OGG中主键与trandata的添加顺序是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。最近在做OGG的压力测试...
    99+
    2024-04-02
  • OGG中add trandata的含义是什么
    这期内容当中小编将会给大家带来有关OGG中add trandata的含义是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在配置OGG时,需要给同步的表添加补充日志,在...
    99+
    2024-04-02
  • Java中类的加载顺序是什么
    本篇文章为大家展示了Java中类的加载顺序是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体如下:public class Parent { public static int a = pa...
    99+
    2023-05-31
    java 中类 ava
  • Java中父子类的加载顺序是什么
    今天就跟大家聊聊有关Java中父子类的加载顺序是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 静态 > 非静态当且仅当该类在程序中第一次被 new(是第一次被类加载器...
    99+
    2023-06-20
  • Java代码块与代码加载顺序是什么
    本篇内容介绍了“Java代码块与代码加载顺序是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!局部代码块位置:局部位置(方法内部)作用:限...
    99+
    2023-06-02
  • 什么是sql关键词执行的先后顺序
    本篇文章给大家分享的是有关什么是sql关键词执行的先后顺序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。sql关键词执行的先后顺序是:首先执行...
    99+
    2024-04-02
  • html,css,js三者的加载顺序是什么
    这篇文章主要为大家展示了“html,css,js三者的加载顺序是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html,css,js三者的加载顺序是什么”这...
    99+
    2024-04-02
  • PHP 函数的加载顺序和执行顺序之间的关系是什么?
    php 函数加载顺序由声明顺序决定,包括脚本中定义、包含文件中的函数、导入命名空间中的函数;执行顺序由函数调用的顺序决定,依次执行脚本中的函数调用。 PHP 函数的加载顺序和执行顺序:...
    99+
    2024-04-18
    php 执行顺序 函数加载顺序
  • oracle增加主键的方法是什么
    要为现有表添加主键,可以使用ALTER TABLE语句。以下是在Oracle数据库中添加主键的方法: 首先,使用ALTER TAB...
    99+
    2024-04-09
    oracle
  • mysql中主键与索引的区别是什么
    这期内容当中小编将会给大家带来有关mysql中主键与索引的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  下面是主键和索引的一些区别与联系。  1. 主键一定...
    99+
    2024-04-02
  • MySQL 表中的默认排序顺序是什么?
    MySQL 表中的默认排序顺序是升序。每当我们使用 ORDER BY 子句对表中的行进行排序时,MySQL 都会按升序给出输出,最小值在前。考虑以下来自名为“student”的表的示例 -mysql> Select * fr...
    99+
    2023-10-22
  • mysql中主键的关键字是什么
    在 mysql 中,使用 primary key 关键字指定主键,主键是唯一标识每行记录的字段或字段组合,具有唯一性(每行主键值不同)和非空(主键值不为 null)特性。此外,使用以下语...
    99+
    2024-04-26
    mysql
  • nginx添加虚拟主机的方法是什么
    在nginx中添加虚拟主机的方法是通过配置文件进行的。以下是添加虚拟主机的步骤:1. 打开nginx的配置文件。通常位于 `/etc...
    99+
    2023-09-07
    nginx 虚拟主机
  • Spring AOP与代理类的执行顺序是什么
    本篇内容介绍了“Spring AOP与代理类的执行顺序是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!关于 Spring AO...
    99+
    2023-07-05
  • python字典添加键和值的方法是什么
    Python字典添加键值对的方法有两种:1. 使用索引赋值:可以通过索引的方式给字典添加键和值。例如:```my_dict = {}...
    99+
    2023-09-28
    python
  • php数组添加键值对的方法是什么
    在PHP中,有以下几种方法可以向数组中添加键值对:1. 使用`$array['key'] = 'value'`语法,其中`$arra...
    99+
    2023-10-10
    php
  • 虚拟主机添加域名的方法是什么
    虚拟主机添加域名的方法通常包括以下步骤:1. 确定域名可用性:首先需要确保所要添加的域名可用且未被其他用户使用。2. 获取虚拟主机的...
    99+
    2023-09-12
    虚拟主机
  • Java监听器ActionListener与MouseListener的执行顺序是什么
    这篇文章主要介绍“Java监听器ActionListener与MouseListener的执行顺序是什么”,在日常操作中,相信很多人在Java监听器ActionListener与MouseListener的执行顺序是什么问题上存在疑惑,小编...
    99+
    2023-06-21
  • Spring初始化与销毁的执行顺序是什么
    这篇文章主要介绍了Spring初始化与销毁的执行顺序是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring初始化与销毁的执行顺序是什么文章都会有所收获,下面我们一起来看看吧。演示 - 初始化销毁顺序@...
    99+
    2023-07-05
  • MariaDB中的主键约束是什么
    在MariaDB中,主键约束是一种唯一性约束,用于确保表中的每一行都有一个唯一的标识符。主键约束可以由一个或多个字段组成,这些字段的...
    99+
    2024-04-09
    MariaDB
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作