日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/9/19 数据库 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为啥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语句更快?...的全部內容,希望文章能夠幫你解決所遇到的問題。

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