MariaDB多个更新查询在某些计算机上花费太多时间,而在所有其他计算机上花费的时间较少

vwoqyblh  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(152)

我们在项目中使用MariaDB数据库。我观察到程序在我的机器上运行缓慢。我用Heidisql做了一些测试。在我的机器上更新2000行需要9秒。但是当我在我的计算机中打开虚拟机并运行相同的查询时,需要0.7秒。我们办公室的其他计算机也显示了相同的结果。它们都在0.7秒左右执行查询。
表创建代码如下所示。

CREATE TABLE `t_tag` (
    `Id` INT(10) NOT NULL AUTO_INCREMENT,
    `TagName` VARCHAR(100) NOT NULL DEFAULT ' ' COLLATE 'utf8mb3_general_ci',
    `DataType` INT(10) NOT NULL DEFAULT '0',
    `DataBlock` INT(10) NOT NULL DEFAULT '0',
    `VarType` INT(10) NOT NULL DEFAULT '0',
    `ByteAddress` INT(10) NOT NULL DEFAULT '0',
    `BitAddress` INT(10) NOT NULL DEFAULT '0',
    `PlcId` INT(10) NOT NULL DEFAULT '0',
    `TagLogTimerId` INT(10) NOT NULL DEFAULT '0',
    `ValueOffset` DOUBLE NOT NULL DEFAULT '1',
    `Digit` INT(10) NOT NULL DEFAULT '0',
    `ModbusType` INT(10) NOT NULL DEFAULT '0',
    `TagValue` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8mb3_general_ci',
    `TagMaxValue` DOUBLE NULL DEFAULT NULL,
    `TagMinValue` DOUBLE NULL DEFAULT NULL,
    `LastReadTime` DATETIME NOT NULL DEFAULT current_timestamp(),
    PRIMARY KEY (`Id`) USING BTREE,
    INDEX `FK_t_tag_t_plc_address` (`PlcId`) USING BTREE,
    CONSTRAINT `FK_t_tag_t_plc_address` FOREIGN KEY (`PlcId`) REFERENCES `t_plc_address` (`Id`) ON UPDATE RESTRICT ON DELETE RESTRICT
)
COLLATE='utf8mb3_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4006
;

更新查询是这样的。

UPDATE t_tag SET TagValue = '91' WHERE Id = 1;
UPDATE t_tag SET TagValue = '90' WHERE Id = 2;
UPDATE t_tag SET TagValue = '89' WHERE Id = 3;
UPDATE t_tag SET TagValue = '88' WHERE Id = 4;

总计2000行
所有的机器都有相同的配置文件和相同的MariaDB版本。我删除和干净安装了MariaDB几次,但结果没有变化。
如果任何人遇到这样的问题或知道如何解决这个问题,这将是很大的帮助,否则最后的手段是安装windows再次,但它是太多的工作,安装所有的开发安装再次。
我尝试过安装和卸载MariaDB。我尝试过不同版本的MariaDB。我在不同的机器上尝试过相同的查询。我在我的计算机上尝试过相同的查询,但在虚拟机上。
我期望查询在所有计算机上花费类似的时间,但是。它在我的计算机上只需要9秒钟,在其他计算机上只需要0. 7秒钟。

oogrdqng

oogrdqng1#

当在HeidiSQL中运行多个查询时,在一个(或几个)较大的批处理中执行它们会产生很大的差异。逐个执行它们会增加很大的开销。在蓝色“执行”按钮旁边的下拉菜单中尝试一下:

相关问题