堕络的小屋

  • 首页
  • 小工具
    • 百度
    • 武器库
    • 堕络的图床
    • 子域名爆破
    • 音乐搜索器
    • 手绘相片制作
    • 微博图片找博主
    • 社会主义核心价值观编码转换
  • 值得一看
    • 黄色
    • 天天优惠
    • 剑灵小助手
  • 系统
    • 高清壁纸
    • 全网优惠券
    • 付费音乐解锁
    • 自动签到框架
    • 我们的足迹系统
    • 网易云音乐签到打卡
    • 全自动网页生成系统
    • 自动采集活动线报
堕络哥哥
一个专业打杂的程序猿
  1. 首页
  2. Linux
  3. 正文

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

2017年11月16日

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的文档可参考:http://www.linuxidc.com/Linux/2015-08/122093.htm

标签: Linux
最后更新:2017年11月16日

chenxing

'

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 堕络的小屋. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang