mysql怎么处理并发写入

breeder 发布于 2015/10/31 12:07
阅读 1K+
收藏 0
如题 ,新手对处理数据不熟悉。比如:通信机制是客户端给我发送zip数据包,假如有10w同时给我发送请求,该怎么处理好 ,而且一天这张表每天都在变大,怎么处理
加载中
0
林中漫步
林中漫步

如果你说的"处理",只是把接收到的数据写入某个表,那就没什么好讨论的,解决方法如下:

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

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

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

其他问题参照楼上

breeder
breeder
谢谢!我去学习下
xper
xper
@breeder 方法还是比较多的,比如你把任务写成脚本或者存在数据库,再通过脚本定时检测是否有任务,有就执行,没有就还是定时检测,建议任务脚本用php的,定时器用linux脚本,至于php脚本就是正常的代码,请求啥的,定时器不好意思我也写不了,我知道mysql也有定时器,建议自己百度学习
breeder
breeder
回复 @breeder : 先谢谢你回答
breeder
breeder
可以说具体点么,服务器用的apach2,怎么实现消息队列
返回顶部
顶部