IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:trigger

共 5 篇相关文章

IT 累计浏览 5,850

利用MySQL触发器高性能造数据

这篇讲的是一个关于MySQL触发器的有趣发现:它通常只用来做简单的表间更新,但有人用它在批量生成测试数据方面取得了意想不到的高性能效果。 文章作者首先用存储过程作为基准方案,在单线程下为一张包含1000万行记录的表造数据,耗时8分20秒,相当于每秒插入约2万条记录。这个速度本身已经不错。 但作者想测试触发器是否能做得更好。这里有个小限制:MySQL触发器不支持对同一张表进行自我插入,所以他额外创建了一张中转表tb3。核心方案是,为tb3创建一个`AFTER INSERT`触发器,当向tb3插入一条记录时,触发器会立即在目标表tb2中循环插入1000万条随机数据。 最终结果很亮眼:整个过程耗时5分14秒,相当于每秒插入超过3万条记录,比纯存储过程方案的速度提升了约60%。作者用“很HAPPY”来形容这个结果,因为通过一个简单的触发器设计,就显著优化了数据生成的吞吐量,为需要快速填充测试环境的场景提供了一个高效思路。

IT 累计浏览 3,337

异构数据库复制解决方案-HVR

这篇文章讲的是一位曾深耕于Oracle Goldengate技术的作者,对另一款异构数据库复制工具HVR的评测与看法。 作者从自身经验出发,先梳理了当前异构复制的常见路径,如基于JDBC的程序同步或利用触发器、Oracle Stream等。随后重点聚焦于市场主流的Oracle Goldengate,肯定了其强大的日志解析与跨平台能力。但文章的核心笔墨,落在了另一款名为HVR的产品上。 作者指出,HVR在原理上与Goldengate类似,同样支持主流数据库的日志挖掘与实时同步。其最大的竞争优势在于:**更低的成本、更直观的操作界面,以及对DDL复制和双向复制提供了更便捷的支持**,无需像Goldengate那样进行复杂的脚本配置。文章也客观提到了HVR在国内案例较少(仅列举了广东公安的案例),可能与其市场布局有关。 最终,作者基于近期的亲自测试,给出了“还是不错的”这一结论,为有异构复制需求,特别是看重易用性和成本的团队,提供了一个值得关注的备选方案参考。

IT 累计浏览 3,468

MySQL 的触发器添加出现Not allowed to return a result set from a trigger

这篇讲的是作者在构建基于 Gearman 的分布式系统时,尝试利用 MySQL 触发器自动将数据更新提交到集群队列,却意外卡在了一个语法错误上。 具体来说,当编写触发器执行插入操作后,MySQL 总是报错 “Not allowed to return a result set from a trigger”。作者发现,问题根源在于触发器中使用了 SELECT 语句来设置自定义变量——这种写法会生成一个结果集,而 MySQL 触发器从设计上就不允许这样操作。正确的做法是改用 SELECT INTO 语句,将查询结果直接赋值给变量,从而避免返回结果集。文章给出了出错的代码示例和修正后的写法,清晰地展示了这一细微但关键的差别。 对于需要在触发器中处理变量的开发者,这个踩坑经历提醒我们:触发器的语法有严格限制,理解其内部机制才能避免这类隐蔽错误,确保代码顺畅运行。

IT 累计浏览 3,086

Oracle中审计删除(DELETE)操作的触发器

这篇讲的是如何用Oracle触发器实现对DELETE操作的轻量级审计。作者从实际的运维需求出发,帮朋友编写了一个简单但实用的解决方案。 核心实现思路很清晰:先创建一张审计表来存储删除记录的元数据,再编写一个行级触发器在DELETE操作发生时自动插入审计数据。触发器被设计为在每次删除操作触发一次(FOR EACH ROW),从而能逐条记录。记录的内容不仅包括了被删除数据的关键业务字段,还贴心地捕获了执行删除操作的数据库用户(USER)和精确到秒的系统时间(SYSDATE),为事后追溯提供了完整的信息链。 这个方案的巧妙之处在于其“四两拨千斤”的直接性——没有复杂的配置或依赖,仅用数据库原生的对象组合就实现了核心审计功能。它特别适合那些需要快速部署、对审计粒度要求明确(仅追踪删除操作),且追求维护简便性的场景。对于许多中小型项目或特定模块的数据保护来说,这种实现方式往往比启用全面审计或部署第三方工具来得更加轻便、高效。

IT 累计浏览 2,579

一种并行加载的方法

这篇讲的是数据库同步系统中一个常被忽视的环节:如何高效地完成数据加载。 通常,一个完整的同步链路包括抓取、传输和加载三部分。抓取和传输已有成熟方案,但最后的加载环节——即在目标数据库上应用成批的变更SQL——往往会成为性能瓶颈。文章从实际场景出发,聚焦于如何打破这一瓶颈。 作者提出的并行加载思路,核心在于将原本串行执行的变更应用任务,拆分并交由多个处理单元同时进行。这好比把一个长队列拆分成多个并行窗口,能显著提升整体处理吞吐量,减少数据同步的延迟。文中探讨了实现并行的关键设计,比如任务分片、依赖关系处理和并发控制,这些细节决定了方案能否真正落地并保证数据的一致性。 对于需要处理高频率、大批量数据变更的同步场景,这种并行化思路提供了明确的优化方向。它不仅仅是一种技术调整,更是从架构层面提升数据流动效率的一次思考。