跑一個推薦算法的DEMO需要導入2百萬的數(shù)據(jù)
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供湘橋網(wǎng)站建設、湘橋做網(wǎng)站、湘橋網(wǎng)站設計、湘橋網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、湘橋企業(yè)網(wǎng)站模板建站服務,十余年湘橋做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
不動腦的想象用batch insert, 批量提交的方式
嘗試發(fā)現(xiàn)其實速度并不樂觀,2000條/分鐘的寫入速度,
200 0000 / 2000 = 100分鐘,速度不能接受,嘗試其他辦法。
大批量數(shù)據(jù)的正確方式就文件導入方式進行,個人覺得10萬數(shù)據(jù)以上用batch insert就比較吃力了。
load data方法只支持mysql 5.5版本及以上
執(zhí)行步驟:
secure_file_prive=null 限制mysqld 不允許導入導出
secure_file_priv=/tmp/ 限制mysqld的導入導出只能發(fā)生在/tmp/目錄下
secure_file_priv=' ' 不對mysqld的導入導出做限制
修改secure_file_prive,直接找到my.ini中secure_file_prive修改為空重啟mysql即可
隨意執(zhí)行,如果位置不對會給出相應的提示位置,然后再將需導入的文件copy至相應位置再執(zhí)行即可 (load data infile語法需自行了解。)
我有個大的 SQL 文件要回放,需要馬上做,但又怕壓死業(yè)務,怎么辦?
先來建一個測試庫:
塞一些數(shù)據(jù)進去:
看看我們填充數(shù)據(jù)的成果:
使用 mysqldump 導出一份數(shù)據(jù):
現(xiàn)在我們假設要把這個 dump 文件,回放到一個數(shù)據(jù)庫中,并且現(xiàn)在數(shù)據(jù)庫正在承擔很重的業(yè)務,我們不希望業(yè)務受到太大影響。
先來看看如果直接回放 dump 文件,會發(fā)生什么?
我們看到 MySQL 的 cpu 會彪起來,
我們換一個方式來回放 dump:
看看 CPU 壓力:
可以看到 CPU 已經(jīng)非常冷靜,并且緩慢的處理數(shù)據(jù)。
????小貼士:pv 工具既可以用于顯示文件流的進度,也可以用于文件流的限速。在本實驗中,我們用 PV 來限制 SQL 文件發(fā)到 MySQL client 的速度,從而限制 SQL 的回放速度,達到不影響其他業(yè)務的效果。
點擊電腦‘運行’,輸入cmd,然后點擊確定。
cmd
2.找到sql的安裝路徑,打開命令行,進入Binn目錄,輸入:cmd,回車執(zhí)行。
binn大致就在這個里面D:\Program Files\Microsoft SQL Server\100\Tools\Binn
3.執(zhí)行下列語句:
sqlcmd -S localhost -U sa -P pwzyy!@#123 -i C:\Users\Administrator\Desktop\script.sql
說明:
-S:數(shù)據(jù)庫服務器地址,我這里是本機直接用localhost
-U:用戶名
-P:密碼
-d:數(shù)據(jù)庫名
-i:sql文件