-1

我正在从我的网站向我的用户发送批量邀请。为此,我将包含电子邮件的逗号分隔字符串传递给我在 mysql 中的存储过程。在这个存储过程中,一个 while 循环解析每封电子邮件(使用 substring() 以逗号分隔)并检查现有数据库,然后如果它不存在则插入到表中,或者如果该电子邮件已经存在,则生成带有 guid 的电子邮件链接。该过程适用于小批量(例如,低于 200-250 封电子邮件),但如果批量较大(250 多封电子邮件),则整个流程卡住并且下一个请求会出现死锁错误(原始错误是:“尝试获得锁定;尝试重新启动事务”)。所以,我计划在我的 javascript 或 c# 文件(编程语言文件)上做一个 while 循环,并将每封电子邮件发送到存储过程。

所以,我想问,用mysql做这种工作的最好方法是什么?

4

1 回答 1

0

我认为一次给一个程序发送电子邮件是一个正确的解决方案,但您不需要为每个项目建立新的连接甚至新的请求。大多数语言都支持准备好的语句执行(这里是关于如何在 C# 中使用它们的答案)。

反过来,死锁可能是由您自己的代码引起的,但如果没有它的片段,就很难说。也许您的过程不是可重入的,或者可以从其他位置访问数据。

于 2013-09-30T08:16:31.023 回答