innodb:
大量写数据(每天要写上T数据)的时候,采用文件批量导入,效果不理想,只有4M/S的样子(不带索引);
使用mysql connector/C++的话,使用绑定变量( insert into tab values(?,?,?) ),不知道怎么进行批量操作,慢;
使用insert into tab values(1,2),(3,4),(5,6)...这种可以一批写几千条数据,但是这个sql语句太长了,导致写了多少数据,就有多大的数据写到日志里面了(mysql-bin00001这些文件),也慢(4到5M/S),而且日志文件超大。怎么在innodb下禁止写日志,或者如何有效的进行批量插入(除了文件导和insert into tab values(1,2),(3,4),(5,6)...)?

解决方案 »

  1.   

    ps,不要说是使用myisam,这个排除了。myisam的效率的确很高,可达50M/S
      

  2.   

    log_bin 在参数文件中设置为 OFF,然后重启MYSQL,不过好象并不适合你的应用。建议你在写入前,先删除索引,插入完后再重建索引,速度会快一些。
      

  3.   

    另外你可以试一下。set sql_log_bin =off; 仅对SESSION有效。
      

  4.   

    哦,现在就是在没有索引的情况下测试入库性能,感觉很低啊,oracle的入库带索引都能达到十几M,但是oracle比较贵,现在公司要使用免费的高效数据库,先拿mysql研究。
      

  5.   

    还有,你的ibdata1 的设置大小是多少? 一次性把它设大一些,这样避免MYSQL多次申请磁盘空间造成额外的开销和磁盘碎片。ibdatax类似于oracle 中的tablespace. 一次申请足。
      

  6.   

    ibdata设置了2个2G的文件和1个1G的自增文件,足够装我的1G测试数据
      

  7.   

    那就试试 set sql_log_bin =off;  吧
      

  8.   

    innodb_buffer_pool_size设的是2G,服务器有8G内存。
      

  9.   

    mysql我们测试,笼统地说,单线程插入速度不到1500条/秒,记录非常简单,2个字段
    欢迎访问德州编程网:www.webgameexpress.com
      

  10.   

    另外,你如果想做主从设置,log-bin是必须的,这个日志也是错误恢复的基础
      

  11.   


    没调好吧,2个字段都是varchar(1000)?
    我测的至少有4*1024*1024/200=20971,即记录大小200字节的2W/S,myisam 20W/S