Sqlserver 高并发和大数据存储方案

随着用户的日益递增,日活和峰值的暴涨,数据库处理性能面临着巨大的挑战。下面分享下对实际10万+峰值的平台的数据库优化方案。与大家一起讨论,互相学习提高!

案例:游戏平台.

1、解决高并发

当客户端连接数达到峰值的时候,服务端对连接的维护与处理这里暂时不做讨论。当多个写请求到数据库的时候,这时候需要对多张表进行插入,尤其一些表 达到每天千万+的存储,随着时间的积累,传统的同步写入数据的方式显然不可取,经过试验,通过异步插入的方式改善了许多,但与此同时,对读取数据的实时性也需要做一定的牺牲。

异步的方式有很多,目前采取的方式是通过作业每隔一段时间(5min、10min..看需求设定)将临时表的数据转到真实表。

1. 已有原始表A 也是在读取的时候真正用到的表。

2. 建立与原始表A同结构的B和C,用来作数据的中转处理,同步流程是C->B->A。

3. 建立同步数据的作业Job1和记录Job1运行状态的表,在同步的时候比较关键的是需要检查Job1的当前状态,如果当前正在将B的数据同步到A,则把服务端过来的数据存到C,然后再把数据导入到B,等到下一次Job执行的时候再将这批数据转到A。如图1:

图1

同时,为保万无一失和便于排查问题,应该用一个记录整个数据库实例的存储过程,在较短的时间检查作业执行结果,如果遇到异常失败的,应该及时通过其他方式通知到相关人员。如写入到发邮件和短信表,让一个Tcp的通知程序定时读取发送等等。

注:如果一天的数据达到几十个G,如果又对这个表有查询要求(分区下面会提到),下策之一:

可将B同时同步到多台服务器分担下查询压力,减少资源的竞争。因为整个数据库的资源是有限的,如插入操作,会先获得一个共享锁,然后通过聚集索引定位到某一行数据,再升级为意向锁,而sqlserver对锁的维护根据数据的大小需要申请不同的内存,造成了资源的竞争。所以应该尽可能的将读和写分开,可根据业务模型分,可根据设定的规则分;在平台性的项目中应该优先保证数据能有效的插入。

在不可避免的查询大数据肯定会耗用大量的资源,如遇到批量删除的时候,可以换成以循环分批次(如一次2000条)的方式,这样不至于这个进程导致整个库挂掉,衍生出一些无法预计的bug。经实践,有效可行,只是牺牲了存储空间。也可根据查询需求将表里数据量大的字段拆分出来到新表,当然这些也要根据每个业务场景结合需求来设定,设计出适合而并不需要华丽的方案即可。

2、解决存储问题

如果每天单表的数据都达到了几十个G,改善存储方案自然迫不及待了。现分享下自有的方案,在暴涨的数据摧残之下,仍坚守在一线!现举例对自有环境分享拙见:

现有数据表A,单表每天新增数据30G,在存储的时候采用异步将数据同步的方式,有的不能清除数据的表,在分区后还可分文件组,将文件组分配到不同的磁盘中,减少IO资源的竞争,保障现有资源的正常运行。现结合需求保留历史数据5天:

1. 这时需要通过作业job根据分区函数去生成分区方案,如根据userid或者时间字段来分区;

2. 将表分区后,查询可以通过对应的索引,快速定位到某一段分区;

3. 通过作业合并分区将不要的分区数据转移到相同结构和索引的表,然后清除这个表的数据。

如图2:

图2

通过sql查询跟踪捕捉到查询耗时长的,以及通过sql自带的存储过程sp_lock或视图dm_tran_locks、dblockinfo查看当前实例存在的锁的类型和粒度。

定位到具体的查询语句或者存储过程之后,对症下药!药到病除!

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

时间: 2024-08-02 00:24:10

Sqlserver 高并发和大数据存储方案的相关文章

基于HBase的大数据存储的应用场景分析

引言 HBase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,适用于结构化的存储,底层依赖于Hadoop的HDFS,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群.因此HBase被广泛使用在大数据存储的解决方案中. 为何使用HBase HBase的优点: 列可以动态增加,并且列为空就不存储数据,节省存储空间. Hbase自动切分数据,使得数据存储自动具有水平scalability. Hbase可以提供高并发读写操作的支持. HBase的缺点: 不能支持条件查询,

华为与英特尔构建全融合大数据存储解决方案

IDC预测,全球数据总量将在2020年达到40ZB.40ZB的数据量是什么概念呢? IDC给出了一个比喻:如果把一粒沙子当做一个字的话,40ZB的数据量相当于地球上所有海滩上沙子数量的57倍;40ZB的数据量相当于667千亿部高清影片,一个人每天24小时连续不断地看,看完这些电影需要5万6千亿年;目前我们对地球年龄的估值是45.5亿年,意味着,如果这个人从地球诞生的时候就开始看电影,现在他只看完了这些电影总数的万分之八(0.0008).而这些数据,每两年还将翻一番,呈指数级增长态势.大数据将以一

详解大数据存储:哪些问题最容易出现

"大数据" 通常指的是那些数量巨大.难于收集.处理.分析的数据集,亦指那些在传统基础设施中长期保存的数据.这里的"大"有几层含义,它可以形容组织的大小,而更重要的是,它界定了企业中IT基础设施的规模.业内对大数据应用寄予了无限的期望 商业信息积累的越多价值也越大 只不过我们需要一个方法把这些价值挖掘出来. 也许人们对大数据的印象主要从存储容量的廉价性而来,但实际上,企业每天都在创造大量的数据,而且越来越多,而人们正在努力的从浩如烟海的数据中寻觅有价值的商业情报.另一

《大数据存储:MongoDB实战指南》一1.9 适合哪些业务

1.9 适合哪些业务 大数据存储:MongoDB实战指南 当前各行各业都离不开数据的存储与检索需求,传统关系数据库发展了这么多年,在有些垄断性行业如电信.银行等仍然是首选,因为这些行业需要数据的高度一致性,只有支持事务的数据库才能满足它们的要求.但随着这几年互联网业务的发展,数据量越来越大,并发请求也越来越高,一个大系统中只用一种数据库并不能很好地满足全部业务的发展,同时以MongoDB为代表的NoSQL数据库快速发展,在某些方面展示了它们的优越性,逐渐被采用并取代了系统中的某些部件,总的来说以

云时代的大数据存储-云HBase

为什么 纵观数据库发展的几十年,从网状数据库.层次数据库到RDBMS数据库,在最近几年的NewSQL的兴起,加上开源的运动,再加上云的特性,可以说是日新月异.在20世纪80年代后,大部分的业务确定使用RDBMS数据为存储基础.新世纪开始,随着互联网的发展,数据量的增大,慢慢RDBMS数据库撑不住,就出现了读写分离策略.随着压力增加,Master撑不住,这时就要分库,把关联不大的数据分开部署,一些join查询不能用,需要借助中间层.随着数据量的进一步增加,一个表的记录越来越大,查询就变得很慢,于是

高可用的大数据计算平台如何持续发布和演进

2016年11月18-20日SDCC 2016中国软件开发者大会,阿里巴巴大数据计算平台首席架构师林伟给我们带来了"高可用的大数据计算平台如何持续发布和演进"的演讲.本文主要谈及大数据系统如何做系统迭代,以及大规模系统因为其大规模没有可能搭建对等的测试环境,需要进行在线测试方面的内容,更有在线测试需要的必要条件等等. 阿里巴巴大数据计算平台需要每天不间断的跑在上万台机器集群上,上面承担阿里核心分析计算任务,有着很高的可靠性和SLA的要求,但是我们同时需要持续不断提高系统的性能,降低成本

大数据存储:哪些问题最容易出现

大数据在IT行业是与云计算并驾齐驱的另一大热门话题."大数据" 指的是那些数量巨大.难于收集.处理.分析的数据集,这就容易出现存储问题,本文介绍的容易出现的几大问题. "大数据"通常指的是那些数量巨大.难于收集.处理.分析的数据集,亦指那些在传统基础设施中长期保存的数据.这里的"大"有几层含义,它可以形容组织的大小,而更重要的是,它界定了企业中IT基础设施的规模.业内对大数据应用寄予了无限的期望商业信息积累的越多价值也越大只不过我们需要一个方法把

大数据存储问题处理成2014主要任务

大数据在IT行业是与云计算并驾齐驱的另一大热门话题."大数据"指的是那些数量巨大.难于收集.处理.分析的数据集,这就容易出现存储问题,本文介绍的容易出现的几大问题. "大数据"通常指的是那些数量巨大.难于收集.处理.分析的数据集,亦指那些在传统基础设施中长期保存的数据.这里的"大"有几层含义,它可以形容组织的大小,而更重要的是,它界定了企业中IT基础设施的规模.业内对大数据应用寄予了无限的期望商业信息积累的越多价值也越大只不过我们需要一个方法把这

管理大数据存储的十大技巧

在1990年,每一台应用服务器都倾向拥有直连式系统(DAS).SAN的构建则是为了更大的规模和更高的效率提供共享的池存储.Hadoop已经逆转了这一趋势回归DAS.每一个Hadoop集群都拥有自身的--虽然是横向扩展型--直连式存储,这有助于Hadoop管理数据本地化,但也放弃了共享存储的规模和效率.如果你拥有多个实例或Hadoop发行版,那么你就将得到多个横向扩展的存储集群. 而我们所遇到的最大挑战是平衡数据本地化与规模效率,这是一个鱼与熊掌兼得的话题. 数据本地化是为了确保大数据集存储在计算