深入mysql并发插入优化详解
使用storm处理日志的时候,经常会遇到并发插入mysql的效率问题,到网上查了些资料,做一下笔记
将表的引擎改为 myisam,
修改 my.cnf 的concurrent_insert=2,concurrent_insert 可以设的值有 0 1 2 ,2 是完全支持并发插入
1) concurrent _insert =0 ,无论MyISAM的表数据文件中间是否存在因为删除而留下俄空闲空间,都不允许concurrent insert。
2)concurrent_insert = 1,是当MyISAM存储引擎表数据文件中间不存在空闲空间的时候,从文件尾部进行Concurrent Insert。
3)concurrent_insert = 2, 无论 MyISAM存储引擎的表数据文件的中间部分是否存在因为删除而留下的空闲空间,都允许在数据文件尾部进行concurrent insert操作。
重启mysql: /etc/init.d/mysqld restart
在插入数据的时候 还可以 设置成 delayed 插入: insert delayed into ' tablename' ……
相关推荐
-
MySql批量插入优化Sql执行效率实例详解
MySql批量插入优化Sql执行效率实例详解 itemcontractprice数量1万左右,每条itemcontractprice 插入5条日志. updateInsertSql.AppendFormat("UPDATE itemcontractprice AS p INNER JOIN foreigncurrency AS f ON p.ForeignCurrencyId = f.ContractPriceId SET p.RemainPrice = f.RemainPrice * {0},
-
mysql中迅速插入百万条测试数据的方法
对比一下,首先是用 mysql 的存储过程弄的: 复制代码 代码如下: mysql>delimiter $ mysql>SET AUTOCOMMIT = 0$$ mysql> create procedure test() begin declare i decimal (10) default 0 ; dd:loop INSERT INTO `million` (`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`
-
mysql 数据插入优化方法
通常来说,在MyISAM里读写操作是串行的,但当对同一个表进行查询和插入操作时,为了降低锁竞争的频率,根据concurrent_insert的设置,MyISAM是可以并行处理查询和插入的: 当concurrent_insert=0时,不允许并发插入功能. 当concurrent_insert=1时,允许对没有洞洞的表使用并发插入,新数据位于数据文件结尾(缺省). 当concurrent_insert=2时,不管表有没有洞洞,都允许在数据文件结尾并发插入. 这样看来,把concurrent_ins
-
MySQL实现批量插入以优化性能的教程
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. 经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考. 1. 一条SQL语句插入多条数据. 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VAL
-
mysql如何优化插入记录速度
插入记录时,影响插入速度的主要是索引.唯一性校验.一次插入记录条数等.根据这些情况,可以分别进行优化,本节将介绍优化插入记录速度的几种方法. 一. 对于MyISAM引擎表常见的优化方法如下: 1. 禁用索引.对于非空表插入记录时,MySQL会根据表的索引对插入记录建立索引.如果插入大量数据,建立索引会降低插入记录的速度.为了解决这种情况可以在插入记录之前禁用索引,数据插入完毕后在开启索引.禁用索引的语句为: ALTER TABLE tb_name DISABLE KEYS; 重新开启索引的语句
-
MySQL 大数据量快速插入方法和语句优化分享
锁定也将降低多连接测试的整体时间,尽管因为它们等候锁定最大等待时间将上升.例如: 复制代码 代码如下: Connection 1 does 1000 inserts Connections 2, 3, and 4 do 1 insert Connection 5 does 1000 inserts 如果不使用锁定,2.3和4将在1和5前完成.如果使用锁定,2.3和4将可能不在1或5前完成,但是整体时间应该快大约40%. INSERT.UPDATE和DELETE操作在MySQL中是很快的,通过为在
-
MySql中把一个表的数据插入到另一个表中的实现代码
小编今天在写一个 将一个数据库的表数据 导入到 另一个数据库的表的时候 我是这么写的 复制代码 代码如下: <?php header("Content-type:text/html;charset=utf-8"); $conn = mysql_connect("localhost","root","");mysql_select_db('nnd',$conn);mysql_select_db('ahjk',$conn);
-
MySQL批量SQL插入性能优化详解
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. 经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考. 1. 一条SQL语句插入多条数据. 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VAL
-
MYSQL开发性能研究之批量插入数据的优化方法
一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1); 很显然,在MYSQL中,这样的方式也是可行的.但是当我们需要批量插入数据的时候,这样的语句却会出现性能问题.例如说,如果有需要插入100000条数据,那么就需要有100000条insert语句,每一句都需要提交到关系引擎那里去解析,优化,然后才能够到达存储引擎做真的插入工作. 正是由于性能的瓶颈问题,MYSQL官方文档也就提到了使用批
-
解析优化MySQL插入方法的五个妙招
工作中遇到大概20万的数据插入操作,程序编完后发现运行超时,修改PHP最大执行时间到600,还是超时,检查超时前插入的数据条数推算一下,大概要处理40~60分钟才能插入完成,看来程序写的效率太低,得优化了.测试电脑配置:CPU:AMD Sempron(tm) Processor内存:1.5G语句如下: 复制代码 代码如下: $sql = "insert into `test` (`test`) values ('$content')";for ($i=1;$i<1000;$i++
随机推荐
- AngularJS动态菜单操作指令
- 为SyntaxHighlighter添加新语言的方法
- 完全解剖安全帐号管理器(SAM)结构
- 清除电脑开机口令的方法
- Java案例之随机验证码功能实现实例
- 写给初学asp.net的新人们 新手学习经验
- PHP判断上传文件类型的解决办法
- dedecms模板标签代码官方参考
- PHP错误处理函数
- 浅谈jquery回调函数callback的使用
- JS简单实现文件上传实例代码(无需插件)
- bootstrap modal弹出框的垂直居中
- Nodejs进程管理模块forever详解
- 基于jQuery实现瀑布流页面
- jQuery实现单击按钮遮罩弹出对话框效果(1)
- javascript中interval与setTimeOut的区别示例介绍
- 设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
- 修改Windows注册表系统文件为宽带加速
- 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField
- PHP获取MSN好友列表类的实现代码