winfrom 如何利用多线程查询几十万条数据

peipeiya 2020-06-16 04:58:59
数据太多,造成卡死,如何利用多线程实现查询大量数据,求大佬,如果可以附带代码讲解,非常感谢
...全文
1122 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirrorspace 2020-06-30
  • 打赏
  • 举报
回复
几十万条数据,这多吗...就是关系DB,也不多啊,上千万条才开始吃力. 你要是想一下吧几十万数据都查出来,绝大多数情况没有必要,都是需要多少查多少,一般一屏幕可以看到的范围,也就20条吧.
华芸智森 2020-06-28
  • 打赏
  • 举报
回复
基本可以肯定,多线程在这里没有任何意义.应该做的是:优化SQL语句,优化索引,主键....
qq_39080073 2020-06-22
  • 打赏
  • 举报
回复
两方面优化:1查询的数据库表都有做索引,2界面显示是要用绑定方式加载 不能自己循环读取太慢。 监控 https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22879184324.20.2d2d58fb7Ew9Cy&id=620683911377
圣殿骑士18 2020-06-20
  • 打赏
  • 举报
回复
我收回我的观点。 确实只有几十万的数据还卡,那问题要么在数据库,要么在你访问数据库的代码问题,要么在数据库的设计问题。要解决那些问题。 而用多线程,只是贴了个狗皮膏药,不一定能解决问题。而且如果你要访问的数据,都在一个表里,那你都没法分多线程。
浪霁 2020-06-19
  • 打赏
  • 举报
回复
还是得往SQL上面下手
吉普赛的歌 2020-06-18
  • 打赏
  • 举报
回复
作为一名 DBA, 想告诉你:实在是想太多了, 不要把一切都往程序那边靠。 如果数据表只有几十万, 那你要做的是 增加分页,优化查询,增加索引,避免阻塞,避免不合理的业务需求。 这点数据量, 实在是不值一提, 多线程帮不上什么忙, 很可能还在添乱。
  • 打赏
  • 举报
回复
这与多线程无关,也与代码无关,几十万数据都是小数据量了, 关键有三点:1是你查询的sql。可能是写的不合理造成全数据筛选。2是没有适当的建立索引,3是分页查询。你可以看看你要查询的字段可以加上索引试试哈
mingcsharp 2020-06-17
  • 打赏
  • 举报
回复
几十万的数据,随便处理都不是事,为什么你的就是事,我想知道
zhxingway 2020-06-17
  • 打赏
  • 举报
回复
用线程池啊
关键不是多不多线程,你要设计良好的架构,如分布式存储等
  • 打赏
  • 举报
回复
关系数据要解决的问题天生就是“面向底层存储、面向结构化索引、对事务严格进行加锁保护”的,它是非常底层的东西。如果满脑子只有这些,那么不会有腾讯、不会有唉、阿里、不会有百度,等等任何一家公司。任何实用的大系统都只要脱离了初学者的“增删改查”思维方式之上而设计的面向内存中不落地的高性能大并发的数据结构的解决方案。
  • 打赏
  • 举报
回复
设计一个高并发高性能系统,需要整体思维和足够的实践经验。当你满脑子只有“关系数据库增删改查”的时候,提出的问题也是只有这个层面的,这就无法解决问题,因为无法真正提出问题。
ying1234 2020-06-17
  • 打赏
  • 举报
回复
多线程读的时候问题更大,容易引起锁表(读取的记录多更是这样),让另外使用此表的业务速度很慢,你应该在业务上尽量避免这样做。
正怒月神 2020-06-17
  • 打赏
  • 举报
回复
我先问问 1 为什么要查几十万条? 2 作用是什么?显示?传输?
ying1234 2020-06-17
  • 打赏
  • 举报
回复
十几万数据,用什么多线程,用分页吧,索引加好,多线程读取以前试过,因为可能一次需要读取的量比较大(业务比较特殊),所以分块读取,结果没有想的那么好,象6#说的那样,数据库瓶颈在IO速度,用多线程读写一定要限制最大线程数在一定数量,否则等着io.timeout的错误吧,多线程写也一样。
datafansbj 2020-06-17
  • 打赏
  • 举报
回复
多线程查询不一定能解决卡死问题,主要应分析卡死的原因是什么,是哪个环节耗时较高。数据库的瓶颈一般在磁盘,而磁盘是不适合多线程并发读写的(固态磁盘例外)。一般多线程查询的方法是:将查询据条件分成多个段(例如按时间段查询的,将时间段细分成多个),然后开启多个线程分别查询,最后将结果汇总。如果这些数据分布在不同的数据库服务器上,多线程确实可以提高效率,否则没什么作用。
  • 打赏
  • 举报
回复
其实类似 Orlans 这类的东西就好像一个人初学 vb 来编写一个“窗体用户控件”一样简单,编写好了只要拖入不同的窗体就能组合为千变万化的应用。同样的意思,编写好了数据服务然后 Orleans 自动就能在集群上分布管理(通常要求电信级的高性能、高稳定性)。学些这种东西通常只要1、2天,微软的东西传统上就是特别简单特别周到!

所不同的就是,这需要先把概念开窍,知道面向集群而不是面向单机,永远去站在潮流的必经之道上。这可能是最难开窍的。
  • 打赏
  • 举报
回复
对于几十万数据(而不是几千万、几十亿数据)的所谓“数据太多,造成卡死”“利用多线程实现查询大量数据”这类问题,我们是针对高并发、大数据运算而考虑其“痛点”的。如果没经历过就不知道痛点。例如几乎任何一个商用功能,如果要发布到服务器,我都愿意它从一开始就是基于 Orleans 的自动的分布式并行服务。
圣殿骑士18 2020-06-16
  • 打赏
  • 举报
回复
如果你还不会写多线程,那应该找一些帖子先入个门。这种帖子很多,不用浪费大家重写一遍。 等你了解完了,有更具体的问题,适合在这里提问。
Bridge_go 2020-06-16
  • 打赏
  • 举报
回复
数据库么,数据库几十万还是轻轻松松吧
jhdxhj 2020-06-16
  • 打赏
  • 举报
回复
sql语句你应该会写吧,优化查询的SQL语句,建立索引,在查询 时候采用分页 可以提高查询效率
加载更多回复(2)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧