免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10950 | 回复: 17
打印 上一主题 下一主题

innodb的速度比myisam的速度要慢很多啊???? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-13 16:26 |只看该作者 |倒序浏览
测试很简单,用的是insert into tb1 select * from tb2
tb2有90多w条记录.
tb1是myisam时,插入时间只需要5s不到的时间.测试插入超过5000W条记录.也未超过5s
tb1是innodb时,插入时间则需要40多s的时间.autocommit模式打开和关闭都测试过.都需要40s以上的时间.

为什么innodb比myisam的要慢这么多.不知道我的配置有哪里不对.请各位DBA高手帮忙看看.谢谢!!!

tb1和tb2表结构如下,两个引擎都没加索引.

mysql> desc tb1;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id         | int(11)     | NO   |     | 0       |       |
| uid        | int(11)     | YES  | MUL | NULL    |       |
| mobile     | varchar(16) | YES  | MUL | NULL    |       |
| province   | int(11)     | YES  |     | NULL    |       |
| city       | int(11)     | YES  |     | NULL    |       |
| regtype    | varchar(16) | YES  |     | NULL    |       |
| comefrom   | varchar(32) | YES  |     | NULL    |       |
| uaid       | int(11)     | YES  |     | NULL    |       |
| ip         | varchar(64) | YES  |     | NULL    |       |
| optype     | int(4)      | YES  |     | NULL    |       |
| registtime | datetime    | YES  |     | NULL    |       |
| usertype   | int(4)      | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+


硬件环境:dell1950(cpu:e5410,硬盘:146G*2,raid1,内存:4G)
innodb的一些参数:
innodb_file_per_table
innodb_buffer_pool_size = 2500M
innodb_additional_mem_pool_size = 256M
innodb_data_home_dir = /data/txdata/total
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir=/data/txdata/total
innodb_log_files_in_group = 2
innodb_log_file_size = 256M
innodb_log_buffer_size = 256M
innodb_max_dirty_pages_pct = 90
innodb_file_io_threads = 4
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 0
innodb_open_files=1000
innodb_lock_wait_timeout = 120
innodb_status_file

论坛徽章:
0
2 [报告]
发表于 2008-05-13 16:56 |只看该作者
MyISAM:这个是默认类型,它基于传统的ISAM类型,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.select速度快.它们不是事务安全的,而且也不支持外键。

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。

理论上innodb表类型是比较适合你.因为你是insert操作.

现在表现不出innodb表类型的优点.你可使用默认的my.cnf配置文件进行配置.不要人为改变看一下情况. 这样可以排除你的配置文件本身的问题.

如果使用默认配置文件,还是速度比较慢.建议你不要使用insert into tb1 select * from tb2这样的语句插入.因为你要select查询.这不是innodb表的优势,而是myisam表的优势.对于查询90W条记录的来说.myisam的速度会比innodb快.你查询出90W条纪录再插入5K记录.我感觉你根本没有发挥innodb表优势.而是发挥myisam表的优势.所以myisam速度比innodb表速度要快很多的原因.

直接insert 插入,不要使用嵌套select

[ 本帖最后由 todayhero 于 2008-5-13 16:58 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-05-13 17:16 |只看该作者
set @autocommit=0;
然后插入。

论坛徽章:
0
4 [报告]
发表于 2008-05-13 17:25 |只看该作者
因为INNODB要写日志,MYISAM不需要。
要快的话,先用MYISAM。然后转化成INNODB.

论坛徽章:
0
5 [报告]
发表于 2008-05-13 17:26 |只看该作者
谢谢楼上各位兄弟的热情回复.我有个应用需要对类似这样的表结构进行操作,事务用不到.里面的记录在2kw条以上.之前一直用的是myisam,整个应用跑完用5个小时就可以了,现在改成innodb跑了十几个小时了,还没结束.郁闷.
在考虑是不是要改回myisam,但是更改引擎的过程要花近5个小时.
对innodb有点失望啊......

论坛徽章:
0
6 [报告]
发表于 2008-05-13 17:28 |只看该作者
原帖由 yueliangdao0608 于 2008-5-13 17:25 发表
因为INNODB要写日志,MYISAM不需要。
要快的话,先用MYISAM。然后转化成INNODB.




那我把日志文件改小点,或者再加日志缓冲大小.会不会有效果???

论坛徽章:
0
7 [报告]
发表于 2008-05-14 09:10 |只看该作者
原帖由 jason0127 于 2008-5-13 17:28 发表




那我把日志文件改小点,或者再加日志缓冲大小.会不会有效果???



试试不就知道了

论坛徽章:
0
8 [报告]
发表于 2008-05-14 11:22 |只看该作者
如果应用不多,且着重速度的话,还是用MYISAM

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-12 06:20:00
9 [报告]
发表于 2008-05-14 14:39 |只看该作者
原帖由 yueliangdao0608 于 2008-5-13 17:25 发表
因为INNODB要写日志,MYISAM不需要。
要快的话,先用MYISAM。然后转化成INNODB.


MyISAM就不写日志了?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-12 06:20:00
10 [报告]
发表于 2008-05-14 14:44 |只看该作者
就这个比较来说InnoDB是速度比MyISAM慢的
1.InnoDB是事务安全的,能保证这次操作
MyISAM不能保证,如果5s的时间内你在第3S的时候退出了,或者服务器Crash了,你考虑过这个问题吗?
2.还有我不知道你具体的怎么测得,配置的参数是怎么样的?这个很可能影响结果
3.你的操作没有并发的,你考虑过并发的情况没有?并发情况MyISAM就锁住了,这个在生产环境都是应该考虑进去的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP