当前位置: 首页 > news >正文

数据刷新中的并行改进(r5笔记第72天)

昨天按照计划进行了系统升级,多多少少还是碰到了一些问题。有一个问题不算紧急,但是也在计划之中需要进行调优和改进。是关于数据的复制刷新的使用。为了更加清楚的描述问题,自己画了下面的一个简单的示意图来说明。其实真实环境要远远比这个复杂,这是简单说明问题点到为止即可。这是一个数据字典数据型数据,也算是静态数据,配置数据等的刷新示意图,数据的源头只有一个,数据都在active的一个schema上,其他几个类似的节点都在维护这样一套类似的结构,但是因为节点都是分布式的,所以都分散在不同的机器上,数据的刷新目前是采用物化视图来做的。远程的刷新是通过db link+物化视图来完成的。对于下层应用来说,还是根据业务规则连接到不同的节点中。0?wx_fmt=png大体的情况就是如此,在生产中进行数据刷新的时候,如果进行并行复制,其实对于主节点还是有很大的压力的。而且目前的刷新情况也是一个串行的方式。比如我们存在表a,b,c则在不同的节点中进行刷新的时候,是先刷新a,在各个节点一次刷新,然后刷新b,然后继续刷新c,依次类推。在最后的时候,只需要切换对应的快照schema即可。即上图中红色和蓝色的部分,最后把schema进行切换即可,对于应用来说是透明的,如果数据出现问题进行undo也是很轻松的事情。所以在采用刷新的时候,也是考虑了主节点中的负载和压力,采用了串行的方式进行刷新,但是一方面保证了压力,但是刷新时间就是一个比较明显的问题了。时间会随着节点的增多而进行指数级增长。在尽可能不改动逻辑,少改动逻辑的情况进行的调研情况,得知这种数据的刷新频率还是不高的,可能几周才会进行这样的一次刷新,而且在刷新的过程中,对于应用app1来说优先级是比较高的,app1中的刷新完成之后,会有一些业务的预处理,对于app2,app3的数据刷新速度就没有很严格的要求了。慢一些还是可以接受的。所以的改进思路就是分成两部分来处理,两条腿走路。对于app1优先刷新,而且对于app1中的表进行并行切分。比如里面有15张表,就可以分成多个并行刷新session来处理。一方面刷新的都是不同的表,不会有之前热点快的争用的情况,而且这个过程完成了就对后续的处理优先级就会大大降低。依赖性就大大降低了。0?wx_fmt=png当然了这个过程还有很多的细节需要考虑,主要的一个思路就是对于近上千张静态数据表进行快速的刷新,有几个要点需要考虑。一个就是并行切分的把握,因为数据字典表的数据量相对来说不算很大,总体来说分区表还是很少存在的,所以进行并行切分的时候可能直接根据segment的情况就能够得到一个大体的数据分布情况了。优先刷新app1需要的节点之后,对于后续的节点可以还是保留原有的方式进行刷新即可。看起来思路还是比较简单的,但是能够使得方案落地还是需要做不少的工作,后续对切分的细节进行分享。

相关文章:

  • 一条sql语句的建议调优分析(r5笔记第73天)
  • 泰国之旅随感(r1笔记第70天)
  • 曼谷周末游(r5笔记第74天)
  • 使用flashback query巧妙抽取指定数据(r5笔记第75天)
  • 数据刷新中的并行改进(二) (r5笔记第76天)
  • 养鱼生活的一段终结(r5笔记第77天)
  • oracle监控工具ignite使用图解(r5笔记第78天)
  • 数据刷新中的并行改进(三) (r5笔记第79天)
  • 浅谈exp/imp(上) (r5笔记第81天)
  • dataguard中MRP无法启动的问题分析和解决(r5笔记第82天)
  • tomcat源码编译和环境搭建(r5笔记第83天)
  • 浅谈exp/imp(下) (r5笔记第84天)
  • IT中的闰秒问题(r5笔记第85天)
  • 并行查询缓慢的问题分析(r5笔记第86天)
  • 关于ORA-01555的问题分析(r5笔记第87天)
  • 《剑指offer》分解让复杂问题更简单
  • Android Volley源码解析
  • Angular 响应式表单 基础例子
  • JavaScript 基础知识 - 入门篇(一)
  • Java读取Properties文件的六种方法
  • Java教程_软件开发基础
  • JS函数式编程 数组部分风格 ES6版
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • oschina
  • pdf文件如何在线转换为jpg图片
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SpringBoot几种定时任务的实现方式
  • V4L2视频输入框架概述
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 机器学习学习笔记一
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 微信小程序开发问题汇总
  • 我看到的前端
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #QT(TCP网络编程-服务端)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $L^p$ 调和函数恒为零
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2015)JS ES6 必知的十个 特性
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (function(){})()的分步解析
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)终结任务
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记