我正从我的网站向我的用户发送批量邀请。为此,我传递逗号分隔的字符串,其中包含电子邮件到我的存储过程在mysql中。在此存储过程中,while循环解析每个电子邮件(使用以逗号分隔的substring())并检查现有数据库,然后如果不存在则插入到表中,或者如果该电子邮件已存在则生成带有guid的电子邮件链接。该过程适用于小批量(例如,低于200-250封电子邮件),但如果批量较大(250多封电子邮件),则整个过程卡住并且下一个请求会出现死锁错误(原始错误是:“尝试时发现死锁获取锁定;尝试重新启动事务“)。所以,我计划在我的javascript或c#文件(编程语言文件)上执行while循环,并将每封电子邮件发送到存储过程。 在上面的场景中,mysql连接的数量会增加,并且可能会出现最大连接错误。
所以,我想问一下,用mysql做这种工作的最佳方法是什么?
答案 0 :(得分:0)
我认为一次向一个程序发送电子邮件是正确的解决方案,但您不需要为每个项目建立新连接甚至新请求。大多数语言都支持预处理语句执行(and here's the answer on how to use them in C#)。
反过来的死锁可能是由你自己的代码引起的,但是没有它的剪切很难说。也许您的程序不是可重入的,或者可以从其他位置访问数据。