【发布时间】:2012-05-12 10:04:14
【问题描述】:
我有一个简单的查询:
INSERT IGNORE INTO beststat (bestid,period,rawView) VALUES ( 4510724 , 201205 , 1 )
在桌子上:
CREATE TABLE `beststat` (
`bestid` int(11) unsigned NOT NULL,
`period` mediumint(8) unsigned NOT NULL,
`view` mediumint(8) unsigned NOT NULL DEFAULT '0',
`rawView` mediumint(8) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`bestid`,`period`),
) ENGINE=InnoDB AUTO_INCREMENT=2020577 DEFAULT CHARSET=utf8
完成需要 1 秒。
旁注:实际上并不总是需要 1 秒。有时甚至可以在 0.05 秒内完成。但通常需要 1 秒
此表 (beststat) 目前有 ~500'000 条记录,其大小为:40MB。我有 4GB RAM 和 innodb buffer pool size = 104,857,600,带有:Mysql: 5.1.49-3
这是我数据库中唯一的 InnoDB 表(其他是 MyISAM)
ANALYZE TABLE beststat 显示:好的
也许 InnoDB 设置有问题?
【问题讨论】:
-
请尝试
REPLACE INTO beststat (bestid,period,rawView) VALUES (x,y,z)获取 x,y 的碰撞值,INSERT INTO beststat (bestid,period,rawView) VALUES (x,y,z)获取 x,y 的非碰撞值-显然确保您不会破坏任何有价值的东西-并发布结果以进行比较 -
你是如何测量插入速度的?
-
您确定没有其他进程/线程占用大量 CPU 时间吗?
-
@SoboLAN:我运行了更多查询,并且仅在此表上进行这样的查询 innodb 需要这么多
标签: mysql sql performance innodb