hello,word

关于php+mysql性能在实际工作中的应用实例

背景:在某个财务数据单中,增加一列银行备注。

方案一:通过 收款单号(例如:20220419ABA00100000099072773758)  查询到交易单号(例如:2022041940000001317768330300405),再查询到充值单号(例如:1003703828D6399362770464900575),再查询到 备注 信息,付款集群,db_loan_xx.charge_xx_x ,字段 bank_comment。由于该表是以付款中心的充值单号进行切割,无法进行关联查询,因此需要先查询当天全部充值记录,然后在进行交易单号的匹

缺点:涉及到不同集群,只能通过关键索引关联,查询数据集合for循环,在查另外集群,运行后存在一定的脚本时长。测试统计大概用时1小时。如果关联字段不存在索引将耗时8小时左右。

 

方案二:通过大表db_loan.big_charge,该表在F_create_time字段上建有索引,查询时加上创建时间。每一天的数据大概在10w-20w之间。查询该表一天的交易数据,然后for循环该表,将收款单号作为key,备注2作为value,以数组的形式存在内存中。在写入时,直接使用收款单号的数组下标。

缺点:对内存要求较大。需要提前判断内存量,否则容易内存溢出

 

方案三:一二方案折中,收款单号每500次进行查询一次,然后使用where in 查询银行备注字段,存入内存,循环写入。

posted @ 2022-05-18 12:16  tying  阅读(58)  评论(0编辑  收藏  举报