Wednesday, September 8, 2010

MySQL性能优化17 - INSERT操作的优化

执行[cci lang='mysql' ] INSERT[/cci] 操作的时候,可以考虑使用以下的方式优化 SQL 的执行效率:

  • 如果你同时从同一客户插入很多行,使用多个值表的 INSERT 语句。这比使用分开 INSERT 语句快。
    [cc lang='mysql' ]Insert into test values(1,2),(1,3),(1,4) …[/cc]



  • 如果你从不同客户插入很多行,能通过使用 [cci lang='mysql' ]INSERT DELAYED[/cci] 语句得到更高的速度。[cci lang='mysql' ] Delayed [/cci]的含义是让 INSERT 语句马上执行,其实数据都被放在内存的队列中,并没有真正写入磁盘;这比每条语句分别插入要快的多; [cci lang='mysql' ]LOW_PRIORITY[/cci] 刚好相反,在所有其他用户对表的读写完后才进行插入;

  • 将索引文件和数据文件分在不同的磁盘上存放;

  • 如果进行批量插入,可以增加 bulk_insert_buffer_size 变量值的方法来提高速度,但是,这只能对 MyISAM 表使用;

  • 当从一个文本文件装载一个表时,使用[cci lang='mysql' ] LOAD DATA INFILE [/cci]。这通常比使用很多 INSERT 语句快 20 倍;

  • 根据应用情况使用 [cci lang='mysql' ]REPLACE[/cci] 语句代替[cci lang='mysql' ] INSERT[/cci] ;

  • 根据应用情况使用 [cci lang='mysql' ]IGNORE[/cci] 关键字忽略重复记录。

No comments:

Post a Comment