MySQL的多行插入

來源:互聯網
上載者:User

MySQL的多行插入

由於mysql的autocommit預設為開啟的,而且很多生產環境都是設定為在事務提交時需要寫磁碟,所以提交產生的io開銷非常大。在繁忙的oltp系統中,可能這是主要的效能瓶勁.因此減少提交的次數非常重要,儘可能採用批量提交的方式而不是使用單次提交的。

Fedora 20下安裝搭建LAMP環境Apache+MySQL+PHP 

《MySQL權威指南(原書第2版)》清晰中文掃描版 PDF

源碼包編譯安裝MySQL 5.6指令碼

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資料庫不支援。

本文永久更新連結地址:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.