【IT168 资讯】 根据一些专家的调查分析,发现企业在使用数据库的时候,90%以上主要用来查询。有些企业这个比例甚至更高。也就说,用户对数据库的操作,其实更新操作占的比例很少。大部分的操走都只是查询操作。如一些论坛,大部分用户只会看贴,而不会发帖。这就是一个典型的查询操作比例大大超过更新操作比例的例子。针对这种情况,其查询操作往往是其数据库性能的瓶颈。如何有效提高查询的性能,这就使各个数据库专家在考虑的问题。在SQL Server数据库中,已经有了一个现成的解决方案。数据库管理员可以利用缓存服务器来提高数据库的性能。笔者这里就以SQLServer2008为例,谈谈如何利用缓存服务器来实现负载均衡,来提高数据库的查询效率。

如上图,是一家著名的BBS论坛的数据库架构。首先其通过多台WEB应用服务器来实现负载均衡。这个方案跟数据库架构关系不大,笔者不做过多阐述。笔者要谈的是,其在数据库服务器与WEB应用服务器之间,还多了一层,即数据库缓存服务器。在SQLServer数据库中,就是利用这些缓存服务器来实现数据库层面的负载均衡,来提高数据库的查询性能。那么这个解决方案到底有什么特点呢?是如何来解决查询操作这个瓶颈问题?在部署这个解决方案的时候需要注意哪些问题呢?不要着急,笔者会一一回答这些问题。

一、数据查询与数据更新分开走

如上图所示,如果用户要查看某个帖子,其就会打开某个连接。此时WEB应用服务器就会从后台数据库中查询相关的记录。这里需要注意的是,由于其只是查看帖子,而不涉及到更新的操作,为此WEB应用服务器就只从缓存服务器中读取数据。这个缓存服务器中的记录跟数据库服务器的内容是同步的。WEB应用服务器在从数据库缓存服务器读取数据之前,还会先判断一下哪台数据库服务器比较空。会优先连接到比较空闲的数据缓存服务器中,然后从这台服务器中读取数据。所以,当访问这个论坛的用户比较多时,这个数据缓存服务器能够实现负载均衡的需要。

如果用户看了某个帖子,现在需要发表一个评论,此时后台数据库会怎么操作呢?注意,当WEB应用服务器发送了一个Update更新操作的时候,其应用服务器会自动连接到数据库服务器,而不会再连接到数据库缓存服务器。而是直接向数据库服务器发送更新操走的语句。当数据库服务器更新了相关的内容之后,会与数据库缓存服务器实现数据的同步。从上图中可以看出,整个数据查询与数据更新WEB应用服务器是分两条路走。其实这就好像是公路上分道行驶,机动车走机动车道;非机动车走非机动车道。如此的话,就不会因为非机动车比较慢,而影响到机动车的速度。在这个方案中,将数据库的更新操作与查询操作分开来走,也是类似的道理。在查询时,数据流是单向流动的,所以能够在很大程度上提高查询的效率。从而让数据负载均衡的效果更加明显。总之,当某个应用程序查询操作大大超过更新操作时,通过在多个数据库间缓存只读数据,并在数据库间均匀连接客户端以分发负载,则就可以向外扩展工作负荷的读取分区,即实现负载均衡的目的。

二、 采用这个方案需要注意的地方

在部署这个解决方案时,仍然有些数据库管理员需要关注的内容。如以下这些内容,数据库管理员需要根据企业的实际情况来进行调整,以提高这个方案的价值。

首先需要考虑数据缓存服务器与数据库服务器之间同步的频率问题。这个同步操作是一把双刃剑。若同步的频率太高,会影响数据库服务器与缓存服务器的性能;若同步频率比较低的话,则数据库缓存服务器中的数据得不到及时的更新。如此的话,用户查询时可能在短时间内无法获取最新的数据。所以,一般来说,系统滞后的时间应该尽量的短,即数据库服务器的更新内容必须尽快与数据库缓存服务器进行同步。理想的状态时,在更新数据库服务器的同时更新数据库缓存服务器。但是,这么做是以牺牲数据库与数据库缓存服务器的性能为代价的。为此数据库管理员在实施这个解决方案时,往往不会这么做。而是设置在一段时间之后同步。如可以设置为10秒、60秒、300秒或者更长的时间后进行同步。具体这个同步的时间间隔多少为好,没有一个统一的标准。这需要数据库管理员根据企业对数据同步的要求不同而定。一般来说,数据库管理员在满足用户需要的前期下,可以将这个时间设置的相对长一点。这可以避免因为过多的同步操作而降低了这个方案的价值。其实,对于大部分用户来说,60秒左右的时间差异还是可以接受的。如在论坛中,一个人发帖后,在一分钟之后看到一般不会有什么问题。对于人的感觉来说,这个一分钟时间不长。但是对于数据库服务器来说,这一分钟可以做很多事情。所以,适当延长这个同步时间,却可以在很大程度上提高数据库服务器性能。这个时间的代价,有时候还是值得的。

其次,在数据库服务器与数据库缓存服务器之间,应该建立比较直接的、快速的网络连接。当用户比较多时,数据库服务器与数据库缓存服务器之间若发生同步操作,则会造成很多的网络流量。有时候同步操作发生时,影响这个工作的效率可能并不是数据库服务器或者数据库缓存服务器本身,而是他们之间的网络连接。由于其可用的带宽跟不少数据库服务器系统的吞吐量,从而影响到了同步操作的效率。为此,在数据库服务器与数据库缓存服务器之间的网路连接,应该尽量的直接。如最好不要在中间夹着其他的不必要的网络设备;也最好不要在他们之间配备防火墙等安全策略。这些安全策略与网络设备都会在很大程度上影响到这个同步操作的效率。另外,最好也不要有其他的应用服务来争抢带宽。所以简单的说,如果可能的话,在数据库服务器上部署多张网卡,直接与数据库源服务器实现双机互联,而那传输同步操作需要的数据,这是一个很不错的手段。由于其数据传输更直接、而且其他设备或者应用服务也会来争夺其带宽,同时又可以克服他们的非法攻击。为此,只要他们之间多距离比较短的话,采用这种方案可能效果会比较好,可以在最大程度内缩短这个同步操作所需要的时间,从而让其他用户尽早看到更新的数据。

三、为同步选择合适的复制方案

那么该如何实现数据库服务器与缓存服务器之间的同步呢?在SQLServer数据库中,有三个方案可供数据库管理员选择。这三个方案分别为快照复制、合并复制与事务复制。这三个复制模型各有各的特点。不过从最终效果来看,其都可以实现数据库服务器与数据库缓存服务器之间的同步。不过由于其内部的实现机制不同,为此其虽然结果相同,但是从性能等方面考虑,还是有差异的。各种复制模型的原理与特点属于基本知识的范畴,笔者在这里就不做过多阐述了。笔者认为,在利用这个数据库缓存服务器来实现负载均衡的方案中,最好采用事务复制的同步方案。因为相比其他方案来说,事务日志能够满足事务的一致性、数据库服务器系统比较大的吞吐量、同步时尽量少的开销、以及系统比较短的滞后时间等等需求。另外在有些企业中采用这个方案的话,还要考虑到表与记录的过滤需求。而通过事务复制的话,就可以实现对列和行的过滤。而其他复制模型的话,只能够部分满足这些需求。所以,笔者认为,在选择数据同步方案时,可能选择事务复制来实现同步,更加的合适。不过最终是否真是如此,还是要求数据库管理员根据企业的实际需要,然后分别采用几个复制模型来进行测试,才能够得出真正合理的结果。

负载均衡服务器性能数据,用缓存服务器负载均衡 提数据库查询效率相关推荐

  1. [转载]用缓存服务器负载均衡 提数据库查询效率

    根据一些专家的调查分析,发现企业在使用数据库的时候,90%以上主要用来查询.有些企业这个比例甚至更高.也就说,用户对数据库的操作,其实更新操作占的比例很少.大部分的操走都只是查询操作.如一些论坛,大部 ...

  2. 服务器性能数据收集,使用 Windows 性能监视器收集数据

    若要监视资源使用量和服务器进程,您可以使用 Windows 服务器附带的 Windows 性能监视器 (PerfMon).使用 PerfMon 来收集详细性能信息,包括 CPU 的使用频率.使用的内存 ...

  3. 单台web服务器性能,单台web服务器如何尽可能的提高网站性能

    我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linux+nginx+mysql+php)环境下是个理想的选择. 首先一点linux对比win的优势我就不说了. 其次ngi ...

  4. 小区宽带网页缓存服务器软件,小区宽带缓存服务器

    小区宽带缓存服务器 内容精选 换一换 共享云硬盘是一种支持多个云服务器并发读写访问的数据块级存储设备,具备多挂载点.高并发性.高性能.高可靠性等特点.主要应用于需要支持集群.HA(High Avail ...

  5. linux web 服务器性能,Linux系统Web服务器性能测试(2)

    2.系统内存的影响 在linux系统下,有一点需要注意:对于某些BIOS来说,如果超过64MB内存就需要在LILO.CONF中加入扩展内存的命令,否则服务器内存显示只有64MB.我们对64MB内存和1 ...

  6. python从云端服务器读数据_audio 读取服务器文件

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

  7. 如何来评测服务器性能,Web实战之:服务器性能的测量评价

    随着因特网的迅速发展和网络用户的激增,WWW服务的请求数目正在以前所未有的速度增长,这导致了许多热门站点由于负载过重而变得反应迟缓.因此,用户在购买服务器时迫切需要了解服务器的各项Web指标以及服务器 ...

  8. 服务器cpu对游戏的支持,多核服务器性能实测篇―浪潮:服务器cpu玩游戏怎么样...

    至强5500多 核处理器尽管问世只有半年多时间,但目前基于它的服务器产品在市场上已经很常见了,可以说在主流的1-2路服务器新品中都可以看到它的身影.而此间的旗舰机型基本上都定位为2U高度的双路机架式服 ...

  9. 服务器性能主要指标,性能测试中服务器关键性能指标浅析

    在对互联网服务进行服务端性能测试时,主要关注两方面的性能指标: 业务指标:如吞吐量(QPS.TPS).响应时间(RT).并发数.业务成功率等 资源指标:如CPU.内存.Disk I/O.Network ...

最新文章

  1. 吴恩达机器学习笔记 —— 1 绪论:初识机器学习
  2. php异常跑出,php 抛出异常但继续往下执行为什么
  3. mdx格式的词典用什么软件打开_视频大神都用什么软件转换视频的格式?
  4. 新概念0817:终身学习
  5. c语言猜数字游戏新建,C语言编程 如何构建一个简单的猜数字小游戏
  6. SQLite数据库如何存储和读取二进制数据
  7. 前端学习(3267):js中this的指向二
  8. 数据分析,如何构建指标体系
  9. HTML和XHTML解析(HTMLParser、BeautifulSoup)
  10. JPA-update方法使用踩坑记
  11. html搜索框点击出现提示,js实现搜索提示框效果
  12. 二进制中 等比数列求和公式
  13. 免费书签管理工具:浏览器书签杂乱的整理方法
  14. JSON WEB TOKEN令牌快速入门学习 (jwt)
  15. oracle数据库查询,sql没问题,数据库也有数据,方法没错,项目运行就是查不出数据
  16. 铁路轨道设备概述1:铁路轨道基础设备
  17. mysql中exec语句_SQL语句-exec执行
  18. 华为p6 android4.4,华为P6终于品尝到了安卓4.4.2 可惜……
  19. 拓扑排序(最大食物链计数、图文结合)
  20. STM32 OV7725 传感器

热门文章

  1. c语言——常见占位符(格式说明)
  2. 测绘资质专业类别该如何区分并选择合适的专业
  3. CRT控制台显示中文乱码问题
  4. DDR存储原理,AC/DC判别标准深度解析(官方手册整理)
  5. 集成机器学习服务上架华为应用市场指南
  6. ajax 中的contentType
  7. ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学
  8. 通过线构造面(C# + ArcGIS Engine 9.2)
  9. php和mysql不在一台机器上_MySQL_在同一台机器上运行多个 MySQL 服务,**************************************** - phpStudy...
  10. linux蓝牙语音遥控器,蓝牙智能遥控器介绍