Net+SqlServer 怎么解决 大数据量 高并发问题

Net+SqlServer 怎么解决 大数据量 高并发问题,第1张

凡是大型的系统,必然要分库,也就是根据逻辑进行数据拆分。比如用户的数据,你可以根据用户所在的省份划分,一个省份一个数据库,只有这样才能真正的保证大数量的并发。

另外要有效的利用读写分离,读写分离用sql server 2012的话可以直接用always on,一个用来写,若干用来读。数据库自身会保证数据的一致性的,这样就不会出现查备份库数据还没同步过来的问题了。

1、最简单的,也是最暴力,也是消耗性能的,就是建一张并发表 用唯一约束报错来阻止 触发业务逻辑并发导致的数据问题

2、解决高并发 可不是一门语言就能解决的,准确来说,它更需要很多硬件来消耗。

比如: 缓存、消息队列、负载均衡、在程序上尽可能的过滤脏请求以及脏数据,高并发的系统,涉及的到的技术太多,各层面都需要优化。硬件配合软件才可以

1、程序和数据库部署在同一台服务器上 2多学习一些相关的书籍比如:构建高性能Web站点,大规模Web服务开发技术 构建可扩展的Web站点 , Web容量规划的技术,分布式数据库系统及其应用。 掌握其原理和结构 。

1总的老说,优化方案中只有两种,一种是给查询的字段加组合索引。另一种是给在用户和数据库中增加缓存

2添加索引方案:面对1~2千的并发是没有压力的,在往上则限制的瓶颈就是数据库最大连接数了,在上面中我用show global status like 'Max_used_connections’查看数据库可以知道数据库最大响应连接数是5700多,超过这个数tomcat直接报错连接被拒绝或者连接已经失效

3缓存方案:在上面的测试可以知道,要是我们事先把数据库的千万条数据同步到redis缓存中,瓶颈就是我们的设备硬件性能了,假如我们的主机有几百个核心CPU,就算是千万级的并发下也可以完全无压力,带个用户很好的。

4索引+缓存方案:缓存事先没有要查询的数据,在一万的并发下测试数据库毫无压力,程序先通过查缓存再查数据库大大减轻了数据库的压力,即使缓存不命中在一万的并发下也能正常访问,在10万并发下数据库依然没压力,但是redis服务器设置最大连接数300去处理10万的线程,4核CPU处理不过来,很多redis连接不了。我用show global status like 'Max_used_connections'查看数据库发现最大响应连接数是388,这么低所以数据库是不会挂掉的。雷达下载更专业。

5使用场景:a几百或者2000以下并发直接加上组合索引就可以了。b不想加索引又高并发的情况下可以先事先把数据放到缓存中,硬件设备支持下可解决百万级并发。c加索引且缓存事先没有数据,在硬件设备支持下可解决百万级并发问题。d不加索引且缓存事先没有数据,不可取,要80多秒才能得到结果,用户体验极差。

6原理:其实使用了redis的话为什么数据库不会崩溃是因为redis最大连接数为300,这样数据库最大同时连接数也是300多,所以不会挂掉,至于redis为什么设置为300是因为设置的太高就会报错(连接被拒绝)或者等待超时(就算设置等待超时的时间很长也会报这个错)。

3000 并发 其实很小 主要的瓶颈是你的带宽

如果每个请求返回每秒100K的 你的上行带宽 至少需要 3000100KB = 30M左右的带宽 这就非常的贵了

内存方面主要是看逻辑 如果3000个都是搜索这样高消耗的逻辑,内存会吃不消

IO也是一个很大的问题 如果做好缓存才能解决IO的开销

3000 并发的最大成本就是带宽 带宽够了 内存够了 CPU单路 就够了

这样高并发系统采用分布式 你开发的系统尽量分成多独立运行的小系统 通过系统直接的webservice接口进行传输 这样可以很好的扩展和减少压力

以上就是关于Net+SqlServer 怎么解决 大数据量 高并发问题全部的内容,包括:Net+SqlServer 怎么解决 大数据量 高并发问题、asp.net 数据库系统并发问题,如何解决、web应用高并发导致系统数据库崩溃一般怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9324436.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存