日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

为啥mysql的load这么快_mysql – 为什么’LOAD DATA INFILE’比普通的INSERT语句更快?...

發布時間:2024/9/19 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为啥mysql的load这么快_mysql – 为什么’LOAD DATA INFILE’比普通的INSERT语句更快?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LOAD DATA INFILE和擴展INSERT各有其獨特的優勢.

LOAD DATA INFILE設計用于在單個操作中大量加載表格數據以及鈴聲和口哨聲,以執行以下操作:

>跳過初始線

>跳過特定列

>轉換特定列

>加載特定列

>處理重復的關鍵問題

解析需要更少的開銷

另一方面,如果您只導入100行而不是1,000,000行,則擴展INSERT是明智的.

請注意,mysqldump是圍繞擴展INSERT設計的,以便隨著每個INSERT執行數百或數千行的注入而攜帶表設計和數據. LOAD DATA INFILE總是在模式和數據之間創建物理dichomoty.

從應用程序的角度來看,LOAD DATA INFILE對模式更改也比擴展INSERT更不敏感.

人們可以在使用LOAD DATA INFILE的好,壞和丑陋中來回走動.無論您使用哪種技術,都必須始終設置bulk_insert_buffer_size.為什么?

根據bulk_insert_buffer_size上的MySQL文檔:

MyISAM uses a special tree-like cache to make bulk inserts faster for

INSERT … SELECT, INSERT … VALUES (…), (…), …, and LOAD DATA

INFILE when adding data to nonempty tables. This variable limits the

size of the cache tree in bytes per thread. Setting it to 0 disables

this optimization. The default value is 8MB.

多年來,我看到客戶端沒有設置這個并留下8MB的客戶端.然后,當他們決定使用LOAD DATA INFILE或導入mysqldump時,他們可以感覺到錯誤.我通常建議將其設置為適中的256M.在某些情況下,512M.

一旦你有一個足夠大的批量INSERT緩沖區,使用任何一種技術都是學術性的,歸結為個人選擇.對于按需批量插入100行的應用程序,請堅持使用擴展INSERT.

平心而論,說LOAD DATA INFILE比正常INSERT語句是一種加載語句更快,主要是因為沒有考慮配置.即使您使用正確的bulk_insert_buffer_size在LOAD DATA INFILE和擴展INSERT之間設置基準,解析每行時節省的納秒也只能產生名義上的結果,最好是有利于LOAD DATA INFILE.

繼續把它添加到my.cnf

[mysqld]

bulk_inset_buffer_size=256M

您也可以在啟動擴展INSERT之前為會話設置它

SET bulk_insert_buffer_size= 1024 * 1024 * 256;

更新2012-07-19 14:58美國東部時間

為了保持透視,批量插入緩沖區僅用于加載MyISAM表,而不是InnoDB.我寫了一篇關于批量加載InnoDB的最新文章:Mysql load from infile stuck waiting on hard drive

總結

以上是生活随笔為你收集整理的为啥mysql的load这么快_mysql – 为什么’LOAD DATA INFILE’比普通的INSERT语句更快?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。