请教两个关于MySQL的性能调校及索引问题
问题1:
MySQL版本是5.1.37-1ubuntu5,执行UPDATE很慢,SHOW PROCESSLIST看到SQL的State是“freeing items”,大部分时间都花在了这步。请教如何解决?
==============================================================
问题2:
MySQL版本是5.0.75-0ubuntu10.3,两个数据表,结构如下:
CREATE TABLE A
(
ID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
BID MEDIUMINT(8) UNSIGNED NOT NULL
)
ENGINE = InnoDB;
CREATE TABLE B
(
ID MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
AID MEDIUMINT(8) UNSIGNED NOT NULL
)
ENGINE = InnoDB;
两表数据量相同,都是100万;
执行SQL“ALTER TABLE A ADD PRIMARY KEY (ID, BID), ADD INDEX (BID)”,大约用时5分钟;
执行SQL“ALTER TABLE B ADD PRIMARY KEY (ID, AID), ADD INDEX (AID)”,大约用时8小时,过程中使用SHOW PROCESSLIST查看State为“copy to tmp table”。
请教,两表结构相同、数据也大致相同,为什么耗时相差悬殊、如何解决?
谢谢!