我在我的服务器中运行了一个非常简单的查询“ select * from ap_statistic ”。服务器具有相同的硬件和软件配置(CPU 8 核,内存:32G,操作系统:redhat 5.5,mysql 版本:5.1)并运行相同的应用程序。在服务器A中,表ap_statistic的行号约为22512379,在服务器B中,表的行号为41438751。当然在服务器A上运行的查询比服务器B更快,但奇怪的是查询服务器 B 非常慢,需要 3 个多小时,而在服务器 A 中只需要 10 分钟。
我使用一些工具监控系统状态,发现在服务器A运行查询时,系统IO读取速度约为20~30M/s,而在服务器B为2~3M/s。我尝试清理 linux 缓存并重新启动 mysql 服务器,结果都是一样的。而且我尝试将DB从服务器B恢复到服务器A,所以服务器A中的查询非常非常慢,io读取速度非常慢。我想知道为什么会这样? 服务器A的ap_statistic表数据是正常运行生成的,服务器B的表数据是存储过程生成的。表方案是:CREATE TABLE `ap_statistic` (
`ap_statisticId` BIGINT(20) UNSIGNED NOT NULL,
`deviceId` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`macaddress` VARCHAR(100) DEFAULT NULL,
`check_time` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`ap_count` INT(10) UNSIGNED NOT NULL DEFAULT '0',
`wlan` VARCHAR(64) DEFAULT NULL,
`radio` VARCHAR(50) DEFAULT NULL,
`bssid` VARCHAR(32) DEFAULT NULL,
`zd_ap_name` VARCHAR(64) DEFAULT NULL,
`channel` INT(2) DEFAULT NULL,
`uplinkRSSI` INT(3) …Run Code Online (Sandbox Code Playgroud)