我们在项目中使用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秒钟。
1条答案
按热度按时间oogrdqng1#
当在HeidiSQL中运行多个查询时,在一个(或几个)较大的批处理中执行它们会产生很大的差异。逐个执行它们会增加很大的开销。在蓝色“执行”按钮旁边的下拉菜单中尝试一下: