【发布时间】:2012-07-13 18:57:12
【问题描述】:
我希望能够实时更新我的搜索索引。使用 MySQL 中的触发器最容易做到这一点。向应用程序添加代码,在数据库更新的每个地方进行更新是非常痛苦的。触发器的问题在于它们减慢了对数据库的所有更新/插入/删除。
有没有什么方法可以调用一个函数来运行索引上的更新(或者只是调用一个 php 脚本然后处理更新)但是异步执行此操作。它不应该阻止触发器完成。
我使用 MySQL 作为数据库,sphinx 作为搜索服务器
【问题讨论】:
我希望能够实时更新我的搜索索引。使用 MySQL 中的触发器最容易做到这一点。向应用程序添加代码,在数据库更新的每个地方进行更新是非常痛苦的。触发器的问题在于它们减慢了对数据库的所有更新/插入/删除。
有没有什么方法可以调用一个函数来运行索引上的更新(或者只是调用一个 php 脚本然后处理更新)但是异步执行此操作。它不应该阻止触发器完成。
我使用 MySQL 作为数据库,sphinx 作为搜索服务器
【问题讨论】:
我建议在这里使用 gearman:
http://sphinxsearch.com/forum/view.html?id=9823
使用“后台”任务,允许它是异步的,并且不应过多延迟触发。
gearman 使从触发器调用 PHP 代码变得容易。
【讨论】:
【讨论】:
我不确定我是否正确理解了你的问题,但听起来像
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
可能很有用,因为这些命令考虑了数据库上的工作负载。
【讨论】: