开发者社区> 问答> 正文

mysql怎么处理并发写入? 报错

mysql怎么处理并发写入? 400 报错 如题 ,新手对处理数据不熟悉。比如:通信机制是客户端给我发送zip数据包,假如有10w同时给我发送请求,该怎么处理好 ,而且一天这张表每天都在变大,怎么处理

展开
收起
优选2 2020-06-04 18:05:25 844 0
1 条回答
写回答
取消 提交回答
  • 如果你说的"处理",只是把接收到的数据写入某个表,那就没什么好讨论的,解决方法如下:

    1. 设计线程A专门用于接收客户端的zip包,并对其解压到服务器本地目录。
    2. 设计线程B专门读取解压后的数据文件,每读取一批(比如10000条),就调用线程C以异步的方式批量写入数据库。 即,一边读文件,一边写数据库。
    3. 对于你说”这张表天天在变大”,那就按时间建分区表,比如按月建分区。

    ######回复 @breeder : 是个新手,不是很懂处理并发######回复 @林中漫步 : 主要是php没有 实际的多线程 而且php需要被动触发######回复 @breeder : 防重复写入,那你要先在业务层面定规则了, 即怎么才算重复?然道客户端会发重复的?######回复 @breeder : 采用nio或mina框架,一边发一边接。 php我不会,java还行。######回复 @breeder : zip包,你这个解压之后的东西怎么处理,我现在是客户端发一个我接一个解压读完之后就删除,就是不知道这个可不可处理并发######

    php没有处理并发但是服务器一般都是支持高并发的,服务器会多线程操作,php脚本可以同时有多个线程再跑,数据多少重点是看服务器能不能支持,有时候我们其实还是应该思考高并发造成的数据不完整,没有正确的完成数据库的操作。也就是说你数据再多,服务器可以支持就没有问题,数据觉得太多处理不及时,或者服务器使用率不均匀,可以考虑使用队列。

    其他问题参照楼上

    ######谢谢!我去学习下###### @breeder 方法还是比较多的,比如你把任务写成脚本或者存在数据库,再通过脚本定时检测是否有任务,有就执行,没有就还是定时检测,建议任务脚本用php的,定时器用linux脚本,至于php脚本就是正常的代码,请求啥的,定时器不好意思我也写不了,我知道mysql也有定时器,建议自己百度学习######回复 @breeder : 先谢谢你回答######可以说具体点么,服务器用的apach2,怎么实现消息队列
    2020-06-05 13:11:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像