Dynamics AX 2012 性能优化之 SQL Server 复制

分析数据滞后

在博文 Dynamics AX 2012 在BI分析中建立数据仓库的必要性 里,Reinhard 阐述了在 AX 的 BI 分析过程中,建立数据仓库的必要性。

数据仓库将分析的工作负载,从事务的工作负载中分离出来,让企业能够整合来自多个数据源的数据

但是从 AX 数据库中抽取数据到数据仓库的时候,Reinhard 发现耗时非常长。Reinhard 认为主要有三个原因:

  • 我们不敢贸然在AX生产环境的数据库层面做优化
  • 数据基数大
  • 需要新增和更新的数据多

因为数据抽取对正式环境的性能影响非常大,并且耗时长,所以我们只能选择在下班后去执行ETL作业。这样做的缺点也是显而易见的,无论我们的报表跑得多快,但是展示的数据总是滞后的

SQL Server 复制

有没有什么方案,能够实时地展示数据,又对正式环境的性能影响小呢?这就是 Reinhard 在本文中要说的SQL Server 复制

SQL Server 复制 是一项非常成熟的技术,它主要应用在以下几个场景中:

  1. 负载转移。将数据复制到其他数据库服务器,来减少当前服务器的负载。比如创建只读的报表环境。
  2. 合并数据。有多个门店,每个门店的数据库服务器都维护着自己的数据。总部需要将所有门店的数据合并到一起。
  3. 故障转移。

Reinhard 这里的应用场景其实就是负载转移。将所需的数据从生产库发布到只读的复制库中,然后在复制库上执行数据抽取作业,这样就将一部分工作负载,从事务的工作负载中分离出来。

复制的类型

复制类型 中,微软介绍了三种复制类型,分别是:

  • 事务复制
  • 合并复制
  • 快照复制

这三种复制都有各自的特点,需要根据自身的实际环境和业务场景来选择,并且要注意复制过程中的表锁。主要考虑因素有:

  • 要复制的数据类型,数量,和更新频率
  • 订阅服务器上的数据是只读的,还是可以更新的
  • 涉及到的计算机的数量和位置

Reinhard 这里简单说说不同复制类型的特点,详细信息还请参考微软官方文档SQL Server 复制

快照复制

特点

  • 不跟踪数据更改,每次应用快照都完全覆盖现有数据。
  • 过程不一致,结果一致。

适合场景

数据更改量大,但很少更改,允许一定时间的滞后。

资源占用

因为不跟踪数据更改,所以连续开销比事务复制低。但是如果数据集非常大,也需要使用大量资源生成和应用快照。

表锁

整个快照生成过程中都是用共享锁

事务复制

特点

  • 通过SQL Server事务日志跟踪更改。
  • 过程一致,结果一致。

适合场景

  • 数据更改频繁,数据复制接近实时。
  • 服务器到服务器的环境。
  • 提高可扩展性和可用性
  • 数据仓库和报表
  • 集成多个站点的数据
  • 集成异构数据
  • 将批处理的负载分离出去

资源占用

连续开销比快照复制高。

表锁

事务复制默认使用并发快照处理,在整个初始化快照生成过程中并不保留共享锁,期间用户可以继续工作。

合并复制

特点

  • 通过触发器和源数据表跟踪数据更改。
  • 过程不一致。
  • 不同站点可以脱机修改同一数据,在合并更新时需要处理冲突。

适合场景

  • 不同站点接收数据,然后脱机更改数据,再与发布服务器和其他订阅服务器同步更改。
  • 服务器到客户端的环境。

表锁

不使用锁。

其它 SQL Server 高可用性和数据恢复技术

故障转移集群

通过添加相关的硬件,可以使用故障转移集群保证数据中心内的高可用性。

故障转移集群中的所有SQL Server实例,在网络上显示为一个节点。

数据库镜像

数据库镜像是一个软件方案。它有一个主体服务器和一些镜像服务器。

在主体服务器可用的时候,镜像服务器是不能处理读写请求的。

日志传输

日志传输可以将主数据库的事务日志备份,自动发送给多个辅助数据库。

主数据库可用的时候,辅助数据库是不支持写数据。

AlwaysOn高可用性组

在SQL server 2012后,新增了AlwaysOn高可用性组特性。

辅助副本复制的是主体节点的完整数据库,不能选择复制部分数据到辅助节点。它的辅助副本可以用于报表和备份,但是不支持写数据。

总结

从上面的对比中,Reinhard 认为,事务复制更适合我们的应用场景。它能够在企业层构建可扩展、高可用、松耦合的集成生态系统。

Dynamics AX 2012 性能优化之 SQL Server 复制的更多相关文章

  1. 【SQL Server性能优化】SQL Server 2008该表压缩

    当数据库是比较大的,而当你想备份,我们可以启动数据库备份压缩.这项由于备份文件比较小的压缩,所以整个备份的更快的速度,同时还低了磁盘空间的消耗. 当然还有一方面.肯定会添加cpu的消耗.只是一般的se ...

  2. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  3. SQL Server数据库性能优化之SQL语句篇【转】

    SQL Server数据库性能优化之SQL语句篇http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 近期项目需要, 做了一 ...

  4. 最有效地优化 Microsoft SQL Server 的性能

      为了最有效地优化 Microsoft SQL Server 的性能,您必须明确当情况不断变化时,性能将在哪些方面得到最大程度的改进,并集中分析这些方面.否则,在这些问题上您可能花费大量的时间和精力 ...

  5. Dynamics AX 2012 在BI分析中建立数据仓库的必要性

    AX系统已有的BI分析架构 对于AX 的BI分析架构,相信大家都了解,可以看Reinhard之前的译文[译]Dynamics AX 2012 R2 BI系列-分析的架构 . AX 的BI分析架构的优势 ...

  6. Dynamics AX 2012 R2 安装Reporting Services 扩展

    今天Reinhard在VS中部署SSRS报表时,接到以下错误: 部署因错误而被取消.在报表服务器上,验证:-SQL Server Reporting Services 服务是否正在运行. 接着,Rei ...

  7. Dynamics AX 2012 R2 安装额外的AOS

    众所周知,AX系统分为三层:Client,Application Server,Database Server. 我们添加额外的Application Server主要是出于以下两个原因: 使用多台服 ...

  8. SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

    本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? ...

  9. Dynamics AX 2012 的工业物联网解决方案

    Dynamics AX 2012 的工业物联网解决方案 物联网 物联网的概念在这两年非常火,包括近期很火的共享单车初创公司--摩拜单车,在产品中运用了Azure Iot物联网技术.但是,物联网并不是一 ...

随机推荐

  1. kafka扫盲笔记,实战入门

    Kafka作为大数据时代的产物,自有其生存之道.让我们跟随扫盲班的培训,进行大致了解与使用kafka吧.(平时工作有使用不代表就知道kafka了哟) 1. kafka介绍 1.1. 拥有的能力(能干什 ...

  2. Anaconda / Conda 实践

    一.环境 CentOS 7.6 有预装 python 2.7 二.Anaconda 与 Conda 区别 1.Anaconda Anaconda 是Python的一种发行版.包含了: (1)conda ...

  3. 基于 jq 实现拖拽上传 APK 文件,js解析 APK 信息

    技术栈 jquery 文件上传:jquery.fileupload,github 文档 apk 文件解析:app-info-parser,github 文档 参考:前端解析ipa.apk安装包信息 - ...

  4. Jenkins系列之七——前端app自动打包

    了两周终于搞掂了,期间各种搜教程.各种懵逼,各种坑对小白来还是很难的额.废话不多说直接开撸~~~ 一.介绍下什么是Gradle Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持m ...

  5. 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手

    关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手   本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...

  6. centOS改编码

    http://jingyan.baidu.com/article/ab69b270de8b4f2ca7189f1d.html cd /rootvim .bashrcLANG="zh_CN.G ...

  7. iOS逆向开发(3):锁定APP的目标类与函数 | reveal | lldb | debugserver | 远程调试

    之前介绍了怎么获取APP的所有类的结构信息,这个有什么用呢?用处大了,比如以这一步为基础,下一步通过注入来做更多研究工作. 注入的最小单位是函数,实际上,编译执行的程序在编译后,类就不复存在了,留下来 ...

  8. Android View 的事件分发原理解析

    作为一名 Android 开发者,每天接触最多的就是 View 了.Android View 虽然不是四大组件,但其并不比四大组件的地位低.而 View 的核心知识点事件分发机制则是不少刚入门同学的拦 ...

  9. 翻译:update语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:UPDATE的译文. 原文:https://mariadb.com/kb/en/update/ 我提交到MariaDB官方手册的译文:https://mariadb.co ...

  10. 爬虫之抓取js生成的数据

    有很多页面,当我们用request发送请求,返回的内容里面并没有页面上显示的数据,主要有两种情况,一是通过ajax异步发送请求,得到响应把数据放入页面中,对于这种情况,我们可以查看关于ajax的请求, ...