当前位置:  数据库>oracle

通过STANDBY数据库实现读写分离时索引过多的问题

    来源: 互联网  发布时间:2017-06-24

    本文导语: Oracle 11g的物理STANDBY数据库可以只读打开并实时应用,可以满足很多应用更改为读写分离的架构。但业务上将主库主要做DML操作,备库上做SELECT操作,可能存在的一个问题就是,备库上的SELECT可能需要大量的索引,而这些索引在...

Oracle 11g的物理STANDBY数据库可以只读打开并实时应用,可以满足很多应用更改为读写分离的架构。但业务上将主库主要做DML操作,备库上做SELECT操作,可能存在的一个问题就是,备库上的SELECT可能需要大量的索引,而这些索引在主库上实际是没有意义的,并且还影响主库DML操作的性能和日志量。但物理STANDBY只能通过在主库上建索引后同步到备库上,备库自己是无法新建索引的。这种情况就可以发挥逻辑STANDBY的优势了。

数据库的GUARD STATUS分为三种:NONE,STANDBY和ALL.默认逻辑STANDBY数据库的GUARD STATUS是ALL,可通过SELECT GUARD_STATUS FROM V$DATABASE查看,可通过ALTER DATABASE GUARD ALL/STANDBY/NONE进行调整。GUARD STATUS为ALL,可以防止数据库中的所有对象被修改,也就是只能通过SQL APPLY进行应用;GUARD STATUS为STANDBY,用户不能修改SQL APPLY进行应用的表,但可以自己创建新表并进行相关的DDL/DML操作;GUARD STATUS为NONE,用户可以随便修改任何表,只要具有权限即可。

针对备库的SELECT操作需要大量索引的问题,通过逻辑STANDBY实现就简单了,只需将GUARD STATUS修改为NONE,然后在备库上建索引即可。

个人建议:

1.不要在原始的用户下建索引,可以新建一个用户,在新建的用户上建原始用户表上的索引,这样便于区分。

2.一般不要在备库上建唯一索引或其它约束,防止SQL APPLY无法应用。

3.对于需要对原始数据进行二次处理的需求,也可以通过在逻辑STADNBY上新建用户进行处理。

物理STANDBY转逻辑STANDBY的文档可参考:


    
 
 

您可能感兴趣的文章:

  • 如何通过LD_PRELOAD降低程序的读写速度
  • linux下是通过什么方式读写硬盘的?
  • 各位老兄好,通过ObjectoutputStream ,ObjectINputStream 如何读写数据
  • windows下怎样通过网络读写linux下的文件
  • linux下,通过jsp网站进行文件读写,提示permission denied
  • 两个不同的进程对共享内存中的变量读写,一般通过什么方式同步方便?
  • Session id实现通过Cookie来传输方法及代码参考 iis7站长之家
  • 想搞嵌入式驱动的开发,请大虾给个简单例程(通过SPI读写外扩存储芯片),以及开发步骤及应注意的地方,怎么加入内核和使用该驱动?谢谢
  • I2c能否通过mmap读写
  • 通过mysql-proxy完成mysql读写分离
  • MySQL 通过索引优化含ORDER BY的语句
  • 解析一个通过添加本地分区索引提高SQL性能的案例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker run命令运行新的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 通过docker ps命令检查运行中的docker镜像
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Session id实现通过Cookie来传输方法及代码参考
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 通过docker search命令搜索可用docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Python3通过request.urlopen实现Web网页图片下载
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3