php匯入大量資料到mysql效能最佳化技巧,mysql效能最佳化_PHP教程

來源:互聯網
上載者:User

php匯入大量資料到mysql效能最佳化技巧,mysql效能最佳化


本文執行個體講述了php匯入大量資料到mysql效能最佳化技巧。分享給大家供大家參考。具體分析如下:

在mysql中我們結合php把一些檔案匯入到mysql中,這裡就來分享一下我對15000條記錄進行匯入時分析與最佳化,需要的朋友可以參考一下.

之前有幾篇文章,說了最近tiandi在幫朋友做一個小項目,用於統計電話號碼的,每次按需求從資料庫裡隨機產生打包的電話號碼,然後不停地讓人打這些電話號碼推銷產品(小小鄙視一下這樣的行為)。但是朋友要求幫忙,咱也不能不幫啊,是吧。程式兩個星期前已經做好,測試完畢交工。前幾天朋友來電說,每天匯入電話號碼的時間越來越長,有時候一萬條記錄就要半個小時以上,看看能不能想辦法提高一下這個速度。

我理了一下思路,資料庫結構很簡單,可以認為就兩個欄位,一個欄位存電話號碼,另一欄位存類別,類別分別為c,d,e等等,分別代表已經撥通過此電話,未撥通過此電話,未撥打過此電話等等狀態,而整個程式邏輯是這樣的.

■拿到一個txt檔案,裡面存的是電話號碼

■通過程式將txt檔案匯入到mysql裡

■匯入的時候,檢測txt裡的電話號碼是否和mysql裡的重複,如果不重複,直接插入新記錄,如果重複,就需要按照判斷電話號碼所屬類別來進行更新。

由於每個txt裡的電話號碼匯入時,都需要做一次比較,所以程式肯定會耗時一些,這裡我們先撇開這個原因,因為本文章的標題是最佳化寫入速度,那麼程式什麼時候會寫入記錄呢?通過上面的邏輯得知,在匹配資料庫時,沒有發現存在記錄時會發生寫入資料庫操作(當然update也算,只是這裡只討論insert),那麼將上述邏輯轉化為代碼,差不多如下:
複製代碼 代碼如下://$array為txt檔案explode出來的數組,每一個為一個電話號碼, $str為類型
for($i=0; $i{
$tmpstr = "'". $array[$i] ."','". $str ."'";
$sql="INSERT INTO ".$usertable." (tel,type) VALUES (".$tmpstr.")";
mysql_query($sql);
}
以上代碼完全正確,但是效率低下,當txt檔案裡包含了上萬個電話號碼時,即會有上萬次的插入資料庫操作,雖然每次的資料庫寫入操作都是很快的,但是上萬條累計下來,這個執行時間不容忽視,tiandi簡單的測試了一下插入15000萬條記錄,耗時差不多5分鐘,如果再加上之前的邏輯判斷等等過程,那麼半個小時還真得不算少了,這樣可不行,必須減少資料庫庫寫入次數才對,於是上面代碼變更為以下:
複製代碼 代碼如下:$sql2="INSERT INTO ".$usertable." (tel,type,updatetime) VALUES";
for($i=0; $i{
$tmpstr = "'". $array[$i] ."','". $str ."'";
$sql2 .= "(".$tmpstr."),";
}
$sql2 = substr($sql2,0,-1); //去除最後的逗號
mysql_query($sql2);
這樣,整個寫入操作只有1次,大大地縮短了執行時間,差不多10秒就搞定了15000條記錄,好了,本文到此結束,如果你也遇上寫入大量資料到mysql耗時間長度的問題時,不如試試本文的最佳化方式.

希望本文所述對大家的php程式設計有所協助。

http://www.bkjia.com/PHPjc/934937.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/934937.htmlTechArticlephp匯入大量資料到mysql效能最佳化技巧,mysql效能最佳化 本文執行個體講述了php匯入大量資料到mysql效能最佳化技巧。分享給大家供大家參考。具體分析...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.