[原创]高并发insert ignore是选择innodb还是myisam?_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3040 | 回复: 0   主题: [原创]高并发insert ignore是选择innodb还是myisam?        下一篇 
    本主题由 hui.chen 于 2014-11-5 16:20:12 移动
Robin
注册用户
等级:少校
经验:856
发帖:63
精华:4
注册:2014-3-22
状态:离线
发送短消息息给Robin 加好友    发送短消息息给Robin 发消息
发表于: IP:您无权察看 2014-5-11 19:11:06 | [全部帖] [楼主帖] 楼主   主页

问题

高并发写的时候是选择innodb还是myisam呢?或者说如何提高insert效率?

每秒大概有5w - 7w的量(更正下,大概2w - 3w的量),简单的3个int型字段,3个字段是唯一索引,如何提高insert ignore的速度?

简单描述下应用场景,每天的uv和ip分表,uv 4m ip 33m 的数据量,可以忽略查询,只有insert ignore, 3个字段 t d s唯一索引

选择InnoDB还是MyISAM

如果不是对事务要求非常的强,高并发写推荐选择MyISAM。理由如下:

MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少,能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小;

InnoDB存储引擎在插入数据时会花更多的开销在维护完整性、维持事务上,所以效率比MyISAM低;

根据题主的描述,主要是插入数据,并且只有一张表,后期对该表的操作也主要是查询吧,就查询速度而言,MyISAM比InnoDB更优越,并且还有MyISAM索引,可以很好的优化查询速度。

如何提高INSERT效率

根据题主的描述,每秒有5w - 7w的量,诚然这个数据量是相当惊人的。并且数据是实时产生的,那mysqlimport或者load data就无法派上用场。提供几个提高INSERT效率的办法吧。

批量插入VALUES,而不是每一次插入都是一条数据;

删除MySQL的索引,有索引存在插入速度会受很大的影响;

题主的表有3个int字段,并且都是唯一索引,可以指定一个主键。

是否选择insert ignore

我们知道有三种插入方法,insert into、replace into及insert ignore。既然题主提供表的3个字段都是唯一的,那不会出现重复的数据,为什么还用insert ignore呢?insert into此时跟insert ignore不是一样。

该贴由hui.chen转至本版2014-11-5 16:20:12

该贴由hui.chen转至本版2014-11-11 15:08:57




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论