深入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' ……

(0)

相关推荐

  • 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++

随机推荐