如何解决数据库负载过大的问题

如何解决数据库负载过大的问题,第1张

嗯是这样的服务器负载均衡只能做数据库的读的负载,如果你们公司的业务都是读取后端数据库的话,你增加一台负载均衡设备,后面在加几个服务器就会有很好的效果,如过你的数据库业务多数用来写的话负载均衡做不了同时写,因此意义不大。除非你做读写分离

SQL Server 负载均衡集群

一个应用系统随着业务量的提高,以及访问量和数据流量的快速增长,各个核心部分的处理性能和计算强度也相应增大,使得单一设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,必将造成现有资源的浪费,而且下一次业务量的提升,又将导致再一次硬件升级的高额成本投入。于是,负载均衡机制应运而生。 对于应用系统的负载均衡的硬件和软件比比皆是,因为应用服务器上的程序基本上认为是不变化的,而且一般的各个应用服务器上的程序是不交互的。因此应用服务器的负载均衡非常好做,只需要能够进行分流的软件或者硬件把多个客户端的连接分配到多个应用服务器上去即可。

因为数据库内的数据是频繁变化的,为了数据的一致性以及锁资源的分配协调等,所以像应用服务器那样只有分流是不够的,各个节点需要频繁的交互。这也是数据库集群软件难做的原因,当然也是卖的贵的原因了。

Oracle Real Application Clusters

对于数据库负载均衡,大家最为耳熟能详的就是Oracle RAC了。RAC是双机并行服务器(8i及以前版本称作Oracle Parallel Server,OPS),用来在集群环境下实现多机共享数据库,以保证应用的高可用性,同时可以自动实现并行处理及均分负载,还能实现数据库在故障时的排错和无断点恢复。它可以自动进行负载平衡、故障修复和规划停机时间,以支持高可用性应用程序。若并行服务器中某节点失效,透明的应用程序容错能够把用户自动转接到另一节点上继续运行,应用程序在用户没有察觉的情况下继续执行。这使周期性和非周期性发生故障的系统增大了连续可用性。进程的失效可以完全透明地转移到另一节点上去,通过适当地配置,可以指定所有查询都在客户端进行缓存,这样它们便可以在转移后的节点上重新设置。

Moebius for SQL Server

截至到SQL Server 2008,微软还是没有推出负载均衡组件,只能靠第三方软件来实现,好在这个软件是几个从微软出来的人写的,也算是个小小的巧合。说他们是微软出来的并不是说他们的技术多厉害,而是他们利用SQL Server的一些内部接口把集群做的非常透明, 无论是应用程序的调用还是开发/管理人员的使用都和面对一个数据库一样。

他们的实现原理是这样的:和SQL Server镜像一样,每个数据库节点都有自己的数据,也就是无共享磁盘架构。他们称之为“中间件”的程序宿主在数据库的内部,每个节点数据库上写入数据导致数据变化时,SQL Server会激活“中间件”,“中间件”把变化的数据同步到其他的节点上。其他节点发生变化也是一样。因为“中间件”宿主在数据库内, 所以它能够把每个同步的Session和SQL Server的Session绑定到一起,也就是使用户的执行和数据的同步成为一个原子 *** 作,从而保证数据在每时每刻都是一致的。因此查询可以随便到每个机器上去查,从而做到了真正的负载均衡。

这是一种叫"数据库路由器"的技术,这种技术的特点是灵活性好,但效率比RAC要低,毕竟RAC是在引擎里实现的不管怎么样有比没有强!

在进行负载测试时,很多同学遇到可能地遇到一个错误“无法打开负载测试结果数据库”,针对这种错误,解决方案大致如下:

1打开 Visual Studio 命令提示

a输入"cd"命名返回上一级目录

b输入"cd Common7/IDE"命名查找到对应的目录

2打开服务管理器并启动"SQL Server (SQLEXPRESS)"服务

3在VS命令提示内键入以下指令:

SQLCMD /S localhost/sqlexpress /i loadtestresultsrepositorysql

警告

参数区分大小写。必须键入大写的 S 和小写的 i。

也可以选择将数据库安装到任何现有的 SQL 服务器上。例如,如果您有一个名为 ContosoServer1 的 SQL 服务器,则可以使用以下命令:

SQLCMD /S ContosoServer1 -i loadtestresultsrepositorysql

可能还需要指定用户名和密码,以便可以连接到 ContosoServer1。在这种情况下,应使用下面的命令:

SQLCMD /S ContosoServer1 -U <用户名> -P <密码> -i loadtestresultsrepositorysql

警告

参数区分大小写。必须键入大写的 S、U 和 P,以及小写的 i。

4在“测试”菜单上,单击“管理测试控制器”。将显示“管理测试控制器”对话框。

5在“服务器名称”中,键入 localhost/sqlexpress 或您在第 2 步中使用的服务器的名称(例如 ContosoServer1)。

6在“登录到服务器”下,选择“使用 Windows 身份验证”。

7在“连接到数据库”下,选择“选择或输入一个数据库名”。从下拉列表框中选择“LoadTest”。

8单击“确定”。

9在“管理测试控制器”对话框中单击“关闭”。

转于:>

以上就是关于如何解决数据库负载过大的问题全部的内容,包括:如何解决数据库负载过大的问题、如何实现mssql数据库负载均衡、Visual studio2013使用时无法打开负载测试结果数据库,求大神支招等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9515260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存