首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Insert语句队列

MySQL Insert语句队列
EN

Stack Overflow用户
提问于 2010-04-02 01:14:54
回答 3查看 3.4K关注 0票数 5

我们正在构建一个ajax应用程序,在这个应用程序中,用户的输入被提交给一个php脚本进行处理。我们目前正在将每个请求写入日志文件以进行跟踪。我想将此跟踪移动到数据库表中,但我不想在请求后运行insert语句。我想要做的是设置一个需要在MySQL数据库上处理的事务(插入和更新)的“队列”。然后,我将设置一个cron作业或进程来检查和处理队列中的事务。有没有什么是我们可以在此基础上构建的,或者我们必须只写到纯文本日志文件中并对其进行处理?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-02 01:19:56

您需要Gearman -它会将请求排队,并在数据库准备就绪时插入它们,这样您就不会使DB服务器过载。

Gearman提供了一个通用的应用程序框架,将工作外包给更适合做这项工作的其他机器或进程。它允许你并行工作,负载平衡处理,以及在不同语言之间调用函数。它可用于各种应用程序,从高可用性网站到数据库复制事件的传输。换句话说,它是分布式处理如何通信的神经系统。关于Gearman的几个优点:

最近有一篇关于使用数据库记录here的文章(质量很高),它(摘要)说:

  • 将MyISAM与并发插入一起使用
  • 每天轮转表,并使用UNION查询
  • 将延迟插入与MySQL或Gearman之类的作业处理代理一起使用(尽管MySQL对延迟插入的数量有限制,但它会在静默删除它们之前对其进行排队!)

HighScalability write up on Gearman.

如果您确实想要避免这种情况,您可以将原始SQL语句写入一个文件,并使用以下cronjob处理它们:

代码语言:javascript
复制
mysql loggingDB logTable < fullLog.sql && > fullLog.sql
票数 2
EN

Stack Overflow用户

发布于 2010-04-02 01:23:28

MySQL可以为您做一些工作:

插入延迟

http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html

“INSERT语句的DELAYED选项是标准MySQL的扩展,如果您的客户端无法或不需要等待INSERT完成,则此选项非常有用。当您使用MySQL进行日志记录时,这是一种常见的情况...”

不幸的是,“延迟”变体仅在插入时可用,在更新时不可用。

票数 0
EN

Stack Overflow用户

发布于 2010-04-02 01:24:54

我猜Zend_Queue类是你在这里迷失的,这里也是an example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2562233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档