【发布时间】:2013-01-24 00:48:17
【问题描述】:
我们刚刚从 MySQL 5.1 升级到 5.5。过去需要约 3 分钟才能将约 200k 行插入到具有 3 个索引的 MyISAM 表中的插入脚本现在需要约 8 分钟!删除索引可以解决问题!?
读取(选择)很好(在 5.5 中比在 5.1 中更快)
索引行为是否有所不同,或者可能需要调整一些奇怪的配置参数?
提前感谢您的任何指点!
系统信息:
Fedora 17,Mysql 5.5.29-log,16GB RAM
MyISAM 密钥缓冲区 = 4GB
MyISAM 索引大小 = ~800 MB
MyISAM 表大小 = 4.4 GB
INNODB 缓冲池 = 8GB
INNODB 表+索引大小 = ~12GB
- 这是每个请求的表定义:
创建表MY_TABLE
( MY_TABLE_ID int(10) unsigned NOT NULL AUTO_INCREMENT,FIELD_1 char(1) NOT NULL,FIELD_2 int(11) NOT NULL,FIELD_3 varchar( 64) 非空,FIELD_4 varchar(64) 默认空,FIELD_5 varchar(64) 默认空,FIELD_6 varchar(8) 默认空,FIELD_7 varchar(64) 默认空值,FIELD_8 varchar(64) 默认空值,FIELD_9 varchar(64) 默认空值,FIELD_10 varchar(16) 默认空值,
@ 987654333@ varchar(124) 默认空值,FIELD_12 varchar(124) 默认空值,FIELD_13 varchar(124) 默认空值,FIELD_14 varchar(32) 默认空值,FIELD_15 varchar(32) 默认空值,FIELD_16 varchar(64) 默认空值,FIELD_17 varchar(64) 默认空值,FIELD_18 varchar(64) 默认空值, FIELD_19 varchar(64) 默认空值,FIELD_20 char(1) 默认空值,FIELD_21 文本,FIELD_22 文本,FIELD_23 文本, FIELD_24 varchar(32) 默认为空,FIELD_25 varchar(64) 默认为空L,FIELD_26 varchar(16) 默认空值,FIELD_27varchar(64) 默认空值,FIELD_28 varchar(64) 默认空值,FIELD_29文本,FIELD_30 int(11) 非空,FIELD_31 varchar(16) 默认空,FIELD_32 varchar(16) 默认空,CREATION_DATE int(11) 非空,MODIFICATION_DATEtimestamp NULL DEFAULT NULL,
主键 (MY_TABLE_ID),
键I_FIELD_4 (FIELD_4),
键I_FIELD_2 (FIELD_2),
键I_FIELD_3 (FIELD_3)
) ENGINE=MyISAM 默认字符集=latin1
【问题讨论】:
-
你现在使用的是默认的 InnoDB 引擎吗?
-
不确定我是否在关注您的问题。该表是 MyISAM(如原始帖子中所述)。
-
上一篇文章描述了原始设置。考虑提供一个“SHOW CREATE table”。
-
刚刚为每个请求添加了表定义
-
大声思考,在深入研究之前,我看到 MySQL 现在有一个 5.6 的候选版本(MariaDB 也有一个 5.6 的等价版本)。在你去调整设置之前,我只是想知道是否可以将其中一个贴在另一个盒子上的某个地方,看看你的问题是否奇迹般地消失了?