存档

文章标签 ‘insert’

7种提高Mysql 数据插入的方式

2009年4月1日 没有评论


1) 使用 LOAD DATA INFILE ,

这种读入文本文件的方式会比普通的insert 语句快很多(10 倍以上)

 

2) 使用批量插入

insert into xxx_table (xxx_column) values(x1,x2,x3),(y1,y2,y3),(z1,z2,z3);

 

3) 对myisam tables 开启 concurrent inserts

concurrent_insert global 变量用来控制并行插入的,默认是1,如果设成0表示不用并行插入, 如果设成2表示即使表有删除的数据,也可以并行插入到表的末尾. 使用set global concurrent_insert = 1.

 

4) use insert delayed

这个文档上写的很清楚了. 当你不用等待插入完成的时候,尤其是记录logging 并且你同时要使用会运行很长时间的select 或update 语句的时候.当你使用insert delayed 服务器会马上返回, row 会被排进队列,直到table 没有被其他人使用. insert delayed into xxx_table(xxx_column) values (x1,x2,x3)

 

5) 对非事务性表使用lock table

当你lock table 之后插入,你的index buffer 只有在全部insert 完成之后flush 一次,比普通的不lock table 会flush 很多次的性能要好. 对事务性的插入操作,还是要显示start transaction 并且commit , 而不是lock table. 这个对不要求7×24 高可用的数据库很有用, 数据仓库导数据的时候也很适合.

 

6) set unique_checks 和 set foreign_key_checks

当执行大量插入操作的时候,set unique_checks=0 和set foreign_key_checks=0 会关闭掉主键唯一性检查和外键检查,当你插入完的时候再设置成1.

 

7) 使用64 位的mysqlinsert 命令

阅读全文…

分类: mysql 标签: ,