您好,欢迎访问一九零五行业门户网

MySQL的多行插入_MySQL

mysql的多行插入
由于mysql的autocommit默认为打开的,而且很多生产环境都是设置为在事务提交时需要写磁盘,所以提交产生的io开销非常大。在繁忙的oltp系统中,可能这是主要的性能瓶劲.因此减少提交的次数非常重要,尽可能采用批量提交的方式而不是使用单次提交的。
mysql的insert语句本可以支持一次多行insert.这种方式在其他的数据库中没有
比如oracle.
测试开始前
mysql> show status like '%commit%' ;
 +----------------+-------+
 | variable_name  | value |
 +----------------+-------+
 | com_commit    | 0    |
| com_xa_commit  | 0    |
| handler_commit | 0    |
+----------------+-------+
 3 rows in set (0.00 sec)
使用多行insert。
 mysql>  insert into t1(a)       
    ->            values (1),   
    ->                  (2);
 query ok, 2 rows affected (0.00 sec)
 records: 2  duplicates: 0  warnings: 0
数据库只有提交一次.
 mysql> show status like '%commit%' ;
 +----------------+-------+
 | variable_name  | value |
 +----------------+-------+
 | com_commit    | 0    |
| com_xa_commit  | 0    |
| handler_commit | 1    |
+----------------+-------+
 3 rows in set (0.00 sec)
可以看到通过这种方式可以对批量insert进行优化.
sql>  insert into t1(a)
  2            values (1),
  3                    (2);
insert into t1(a)
            values (1),
                  (2)
ora-00933: sql command not properly ended
对于这种直接insert多行的方式,oracle数据库不支持。
其它类似信息

推荐信息