开发者社区> 问答> 正文

多线程操作表进行数据的读取和写入:报错

最近去面试的时候,碰到了一个问题:

A表 结构

ID Int 自增加,order_time Timestamp ,order_status Int。

现在希望用多线程读取A表 中的 order_time在2013/02/20 日和 order_status=50的数据,将数据复制到表结构相同的B表,问问有什么最优的思路吗?

展开
收起
kun坤 2020-06-06 15:36:34 690 0
1 条回答
写回答
取消 提交回答
  • 分片,每个线程读取一个时间段内的。######对啊,当时懵了,时间分片是会趋向均匀的。。。######我也是分片的思路,但是总不能保证数据分片后的分布均匀性######每个线程分别读取ID为n*i(n为线程编号)的记录,这样对不?######回复 @creazyzh : 假设两个线程,线程1读取ID1,3,5。。线程2读取ID2,4,6。。不知道行不行######能具体讲一下思路吗######不知道考官什么意思。并发读太高返回影响性能,并发写就更影响性能了;同时,大批量读容易内存溢出,大批量写大大降低数据库性能。######

    楼主,我请教你个问题。哈。假设你有128条纪录,理想状态, 外部存储区,比如存储服务器相对计算服务器,硬盘相对内存,内存相对片内cache,他们都呈现一个特征,

    如果你读一次连续的8条记录,那么用一个时间单位,如果你间隔8,读两条记录,他们需要用两个时间单位,原本你就一个进程,8个时间单位你能处理64条记录。结果你分成了8个进程,每1个时间单位,让一个进程运行,你觉得,多进程快了吗?

    理论上他们的处理速度是一样的,实际上多进程更慢(这里说的和多进程多线程,没什么关系,只是linux下我真想不出有什么非要用多线程的地方,所以一直喜欢用多进程这个词而已)。哈。

    说这个例子,无非是让你知道多线程下涉及性能优化,除了时序逻辑以外,还包括转储的成本,数据空间分布,以及数据调度的底层策略等方面的东西。

    说这个如果你对底层,特别是os的一些机理不懂的话,并非说是唬你让你去了解,而是说,如果你的数据库工具中有对应功能,直接用就行了。注意他们的使用说明即可,他们可以帮你处理完毕。也即你的优化策略,和工具的特性有很大的关系。不要空谈策略。哈。

    ######每次你一张嘴,就开始暴露你的无知。你越是长篇大论,就暴露得越彻底。######多线程,多进程在这里真的没优势.  
    2020-06-06 15:36:38
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
HBase2.0重新定义小对象实时存取 立即下载
低代码开发师(初级)实战教程 立即下载