【问题标题】:Add asynchronous functions to mysql给mysql添加异步函数
【发布时间】:2012-07-13 18:57:12
【问题描述】:

我希望能够实时更新我的​​搜索索引。使用 MySQL 中的触发器最容易做到这一点。向应用程序添加代码,在数据库更新的每个地方进行更新是非常痛苦的。触发器的问题在于它们减慢了对数据库的所有更新/插入/删除。

有没有什么方法可以调用一个函数来运行索引上的更新(或者只是调用一个 php 脚本然后处理更新)但是异步执行此操作。它不应该阻止触发器完成。

我使用 MySQL 作为数据库,sphinx 作为搜索服务器

【问题讨论】:

    标签: mysql sphinx


    【解决方案1】:

    我建议在这里使用 gearman:

    http://sphinxsearch.com/forum/view.html?id=9823

    使用“后台”任务,允许它是异步的,并且不应过多延迟触发。

    gearman 使从触发器调用 PHP 代码变得容易。

    【讨论】:

    【解决方案2】:

    【讨论】:

    • 事件仅在特定时间间隔运行。我想要的是一种能够从触发器调用 UDF 函数或过程然后让它(UDF 或过程)异步运行的方法,以便我的触发器完成并且数据库插入/更新/删除快速完成。然后我可以在 UDF 或过程中完成大部分工作,而不必担心这会增加数据库更改的延迟。
    【解决方案3】:

    我不确定我是否正确理解了你的问题,但听起来像

    INSERT DELAYED

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

    UPDATE LOW_PRIORITY

    http://dev.mysql.com/doc/refman/5.1/en/update.html

    可能很有用,因为这些命令考虑了数据库上的工作负载。

    【讨论】:

    • 已在 Pentium10 的答案的评论中更好地解释了问题。
    • 小心!从 MySQL 5.6.6 开始,不推荐使用 INSERT DELAYED,并将在未来的版本中删除。
    猜你喜欢
    • 2018-03-02
    • 2015-12-01
    • 1970-01-01
    • 2016-03-17
    • 2021-03-25
    • 1970-01-01
    • 2022-12-14
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多