mysql5资源共享

 找回密码
 立即注册
查看: 63|回复: 4

[MS-SQL Server] 【疑难】【求解】求一个大数据插入查询高并发的方案

[复制链接]

4

主题

41

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2019-7-15 15:46:59 | 显示全部楼层 |阅读模式
目前有这样一个需求:
有6个数据采集设备,同时往一个数据库(临时库)写入大量数据(每个采集设备每秒钟几万条),每个设备一个数据表,一次采集10分钟左右,每天会采集很多次,每次采集完成后,根据情况,如果数据觉得有用,需要通过程序将本次采集数据数据同步到正式库(先执行查询,把本次试验的数据查询出来再同步到正式库)。这样一天会产生上千万条甚至甚至上亿条数据,随之时间的推移,数据量会越来越大,查询也会越来越慢,有时候还会出现查询超时。同时还需要将采集的数据做实时显示(通过查询接口,实时查询当前数据)。相当于实时插入大量数据的同时,也要实时查询。

现在想到两个方案,但是感觉都不太好:1、做表分区,将每天的数据自动建立表分区。这样查询的时候就会从当天的分区表查询,查询速度会有提高,但是建立表分区,会需要在时间字段加聚焦索引,会影响插入性能。
2、做读写分离,主数据库做插入,从数据库做查询。然后所有查询的时候从从服务器读取。但实时性得不到保证,同时做数据库读写分离会不会影响实时大量数据插入??


大家有没有更好的方案呢???



回复

使用道具 举报

7

主题

531

帖子

1089

积分

金牌会员

Rank: 6Rank: 6

积分
1089
发表于 2019-7-15 17:33:29 | 显示全部楼层
设计建议:
1.查询时,用with(nolock)可减少高并发时的锁争.
2.新建历史数据库,把几乎不太可能查询到的数据(如3年前)归档保存到历史数据库,
前端程序也需同步修改,当查询3年前数据库时连接到历史数据库执行SQL.
回复

使用道具 举报

37

主题

1740

帖子

3557

积分

论坛元老

Rank: 8Rank: 8

积分
3557
发表于 2019-7-16 08:25:52 | 显示全部楼层
1.分出当前表和历史表。当前表只保留当天的数据,用sql代理作业凌晨0点将前一天的数据转到历史表。
2.做alwayson读写分离的延时是相当小的,一般情况也就几毫秒到几十毫秒,如果不做索引重建之类的大操作不存在实时性得不到保障的说法。

回复

使用道具 举报

0

主题

291

帖子

628

积分

高级会员

Rank: 4

积分
628
发表于 2019-7-16 08:56:39 | 显示全部楼层
同意楼上的观点,高并发针对新增还算可以
回复

使用道具 举报

4

主题

41

帖子

104

积分

注册会员

Rank: 2

积分
104
 楼主| 发表于 2019-7-19 12:00:26 | 显示全部楼层
引用2楼吉普赛的歌的回复:1.分出当前表和历史表。当前表只保留当天的数据,用sql代理作业凌晨0点将前一天的数据转到历史表。
2.做alwayson读写分离的延时是相当小的,一般情况也就几毫秒到几十毫秒,如果不做索引重建之类的大操作不存在实时性得不到保障的说法。
感谢,我目前的做法跟你的想法大致相同,我现在做了一个缓存数据表(缓存半个小时左右,主要考虑数据量太大),然后采用分发的机制同步到历史表。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-12-8 05:58 , Processed in 0.059382 second(s), 18 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表