Tencent / Biny

Biny is a tiny, high-performance PHP framework for web applications
BSD 3-Clause "New" or "Revised" License
1.69k stars 259 forks source link

请问“addList”这个方法的运行效率怎样 #105

Open 3DMXM opened 4 years ago

3DMXM commented 4 years ago

准备写一个用户订阅作者的功能,在用户订阅作者后,在作者更新或发布内容的时候会收到消息提醒; 消息提醒我是单独放在一个表里面,在创建消息的时候就相当于创建一行数据; 实现这个功能并不困难,主要就是效率问题; 如果一个作者有1万个粉丝,那么在他更新内容的时候就要创建1万条消息; 看到wiki上有个方法 addList(或insertList)方法为批量添加数据,第二个参数为批量执行的个数,默认一次执行100行 返回成功(true)或者失败(false) 想请问一下,这个方法执行效率怎样,执行1千次、1万次、10万次、100万次的话,会影响服务器的运行吗

billge1205 commented 4 years ago

就效率来说一条语句全部执行效率肯定最高 分成几条执行主要针对 sql语句太长可能失败的问题 另外如果一次插入中有主键冲突时会导致整个一句sql全部失败,可以切分多次执行或者传第三个参数false来ignore错误

billge1205 commented 4 years ago

如果每次插入数量少,插入次数太多的话 接口耗时肯定会很长,可能会超过nginx配置的接口超时时间(默认30s貌似) 量特别大的话,可以改成shell模式执行,shell模式不受执行时间限制

3DMXM commented 4 years ago

主要就是怕数量太多的话,把数据库卡死。。。。

3DMXM commented 4 years ago

我之前把数据库玩崩过,哈哈哈

billge1205 commented 4 years ago

看量级可以适当分区分表哈