草庐IT

TRIGGERS

全部标签

MySQL 触发前性能问题

我需要使用LOAD数据将数据加载到MYSQL表中。加载时,我需要根据特定条件将数据标志列设置为适当的值。数据插入可以从不同的脚本发生,我想使用BEFOREINSERT触发器来集中处理。现在的问题是INSERT过程需要很多时间。作为示例,当我在命令行中使用SOURCE命令和一个包含500000条记录的文件来放置测试数据时,一个block从空白表开始插入550条记录大约需要19秒。当我使用包含大约2300条记录的LOAD数据时(这是可以定期发生的理想插入,除非之前的插入失败并且要插入的数据累积),大约需要90秒才能完成。我想知道:我是否可以按原样提高此触发器的性能,或者触发器通常很慢?如果

MySQL 触发器 + SELECT FOR UPDATE 未锁定

我有一张包含开始时间和结束时间的预订表,任何两个预订都不能重叠。我需要检查新预订不会与任何现有预订重叠。然而,我们的负载非常高,因此存在竞争条件:可以成功插入两个重叠的预订,因为第一个预订是在第二个预订检查重叠之后插入的。我试图通过使用BEFOREINSERT数据库触发器锁定相关资源来解决这个问题。DELIMITER//CREATETRIGGERbooking_resource_double_booking_guardBEFOREINSERTONbooking_resourceFOREACHROWBEGINDECLAREoverlapping_booking_resource_idIN

php - 使用 MySQLi 禁用 PHP 脚本的触发器

我正在使用MySQL中的中型数据库,并且正在更新模型。这个Db有严格关联的各种表,并使用外键和触发器来更新相关数据。现在我正在研究一个PHP脚本,将数据从旧数据库模型传递到新数据库模型,我对触发器有一点问题。对于数据库的所有生命周期,触发器将保留并运行良好,但在此之前,我需要在关闭触发器的情况下加载数据。对我来说最干净的解决方案是在加载数据之前禁用所有触发器,然后在程序结束时将其重新打开......我该怎么做? 最佳答案 目前无法禁用触发器(请参阅Triggers:enableordisable)。您可以做的是修改触发器以检查ses

javascript - 从 Node.js(或其他)将事件附加到 MySQL

我正在设计一个将在浏览器中运行并向其推送警报的应用程序。我已经决定用Node.js和Socket.io来处理大量连接和所有所谓的反向AJAX部分。这看起来很棒,可以避免持续轮询并为我提供一个实时应用程序,除了一件事,我如何实时从mysql数据库中获取信息?我正在设想一个类似于事件处理程序的东西,我可以在其中说一些东西,比如在插入的行上给我数据。我知道这可以通过触发器来完成,但不知道如何去做。有什么好的方法吗?附言如果我必须使用Node.js以外的东西,那没问题。谢谢,加雷思 最佳答案 如果您尝试使用sys_exec()、UDF函数怎

mysql - 从触发器调用的存储过程中的动态语句的解决方法

MysqlPREPARE和EXECUTE语句不能在触发器调用的存储过程中使用。结果将是错误代码:1336。存储函数或触发器中不允许使用动态SQL。有人知道解决这个问题的可行方法吗? 最佳答案 您不能从TRIGGER中运行PREPARE/EXECUTE,但您可以从EVENT中运行(如果您运行的是MySQL5.5或更高版本)。这是从EVENT运行PREPARE/EXECUTE的示例:DROPTABLEIFEXISTStbl1;DROPTABLEIFEXISTStbl2;DROPTABLEIFEXISTScmds;DROPPROCEDUR

mysql - 我们可以从 mysql 触发器调用 servlet 或 java 方法吗?

是否可以通过在MySQL中编写触发器来调用servlet。每当表中插入一条新记录时,我想通过调用jsp、servlet或java来调用另一个应用程序。 最佳答案 没有别的办法,我们能做到这一点。我已在Google中搜索过此内容,但找不到任何解决方案。 关于mysql-我们可以从mysql触发器调用servlet或java方法吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/21

php - 外部启动 PHP 脚本的 MYSQL 触发器

我目前正在尝试使用mysql触发器来启动php脚本。启动时,脚本会从特定网站检索数据,并将其放入另一个表中。我已经测试了该脚本,并且当我使用php5运行它时它目前可以正常工作。我还正确安装了lib_mysqludf_sys,并将正确的文件夹移动到mysql的插件文件夹中。当我创建触发器时,我没有收到任何错误。它只是不会运行我的php脚本。我哪里出错了,我该如何解决?DELIMITER$$CREATETRIGGERgetFriends->AFTERINSERTONtbluser->FOREACHROW->BEGIN->DECLARERESULTINT;->SETRESULT=sys_ex

php - Mysql 触发器/事件与 Cronjob

我有一个拍卖网站,可以让我的用户进行无限量的自动出价。要监控这些自动出价,必须每秒检查一次数据库。我的问题是使用mysql触发事件还是每分钟使用一个cronjob执行60秒循环php脚本更好。如果我使用mysql触发事件,将有数百个事件堆叠在一起,并在不同时间触发。这甚至可能吗?并且服务器负载不会很大。我在某处听说有计划事件时数据库将被锁定。顺便说一句,我正在使用innoDB表。我希望有人能阐明这个主题。问候! 最佳答案 您最好运行一个单独的脚本,该脚本永远运行并监视您的数据库。这样你就不需要cron了。也没有大量的触发器。但您可能

python - 通过 MySQL 触发 Python(从 PHP)

背景我正在考虑各种架构选项。虽然多年来我一直使用SQL作为查询语言,但我在触发器和存储过程方面的经验有限。问题:通过MySQL集成PHP和Python在拳击台的红色角落,我有一些现成的PHP,它处理一些通过HTTP推送到服务器的XML,并将其记录到MySQL数据库中。在圆环的蓝色角落,我有一个用Python编写的守护进程,它热衷于及时了解已推送的数据,以便实时处理它。拳击台本身是Ubuntu(可能还有Apache,但尚未确认)。可能的解决方案我正在考虑三种不同的进程间通信方式。将PHP完全重写为Python。可能需要太长时间才能实现。修补PHP,让它也将XML写入套接字。让Python

mysql - 加速或自动创建历史表触发器

是否有任何有用的工具或技巧可以自动(或快速)为MySQL中的给定表创建历史表和触发器?I'vecomeacrossthistoolsofar,但是好久没更新了。如果相关,我会使用MySQLWorkbench的“模型”工具来构建我的数据库模型,然后将它们与我的本地数据库同步。我想要的是能够提供表的创建脚本,并让工具神奇地吐出历史表的创建脚本和触发器,以便在插入/更新/删除时插入到这些历史表中。例如,如果我的表foo具有复合PKa、b、外键c、d和属性e、f,它将为历史表foo_history生成具有复合PKa的创建脚本、b、revisionNum和c、d、e,f,从c和d中删除关系-可能