每天有一段时间 进行Insert into 的操作,语句如下
insert into table(column1,column2) select column1,column2 from 临时表如上形式,观察发现,每天前一段时间insert 速度很快,大约插入几百条以后就明显觉得速度慢,差不多要1秒一条的速度引擎是MyIsam

解决方案 »

  1.   

    insert delayed into table(column1,column2) select column1,column2 from
      

  2.   

    打开事务没有?
    OR
    将临时表中的记录保存到TXT中,用LOAD DATA INIFILE导入
      

  3.   

    这个是写在存储过程里的,对临时表的操作不是固定的,所以不能写在TEXT里面,事务不是只有Innodb引擎才有???
      

  4.   

    能说明一下   delayed 起到的作用吗,我现在插入30几条最快也要用三秒的时间,总觉得不对呀
      

  5.   

    我这个引擎是MyIsam,应该不是事务的问题
      

  6.   

    delayed是insert的语句马上执行,其实执行的语句先放在内存队列中。
    并没有真正写入硬盘,这比每条语句分别插入要快的多。
      

  7.   

    如果批量插入的话,可以增加bulk_insert_buffer_size变量值的方法来提高速度,但
    这种方法指对MYasam表有用。
      

  8.   

    MyISAM不是事务引擎,使用的是表锁,对表进行插入的时候,是否还有对该表的其他操作?如果超过一秒的话,你可以打开慢查,看看是不是lock的时间太长。也可以试试profile的方法把SQL执行的所有步骤的执行时间打印出来。
    如果你的主键是自增的,那么insert理论上会快很多,不是自增的,由于要不断的分页,插入,相对会慢一些。
    另外,你可以尝试设置concurrent_insert=2来提高插入速度
    http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_concurrent_insert