首页 > 解决方案 > 在 MYSQL 中使用触发器以更好地扩展的最佳替代方法是什么?

问题描述

我们有多个爬虫同时访问我们的 MYSQL 数据库,不断更新大量行。每个表都有触发器来评估爬虫发送的 UPDATE,随着我们进入项目,我们有越来越多的条件来验证触发器内的每个更新,因此我们担心这不是扩展的好方法. 主表有触发器,将数据发送到另一个也有触发器的表,该表发送到另一个有触发器的表。

我们正在考虑几个选项来避免开销、表锁定或此类麻烦。

到目前为止,我们认为我们需要放弃 MYSQL 或将另一个数据库引擎作为队列放在中间,并使用 Python 或 Node 处理信息,而不是评估那里的数据并仅在必要时直接插入/更新。

此外,由于我们主要是写入,我们在扩展和避免拥有一个巨大的单体时遇到了问题,但到目前为止我们还没有一个好的计划。

我在谷歌上搜索了很多关于一个好的架构的想法,大多数建议似乎都远离了 RDBMS。

TLDR:核心问题是,什么是避免由多个表中的触发器引起的开销的最佳方法是在多个条件下进行评估?是否使用其他方法更好地处理数据?

标签: mysqldatabase-designtriggersdatabase-administrationdatabase-trigger

解决方案


如果您正在创建或更新特定实体中的记录,请在您的框架上使用侦听器。监听特定实体,在对应的表上插入一条新记录。这将避免触发器上的错误


推荐阅读