討論區快速選單
知識庫快速選單
討論區最近新進100則主題 程式設計俱樂部Facebook粉絲團 軟實力課程1+1,第二科享5折優惠
[ 回上頁 ] [ 討論區發言規則 ]
MySQL select 很快,更新資料卻很慢的問題
更改我的閱讀文章字型大小
作者 : louischen1990(louischen)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/12/2 下午 02:03:35

請問各位高手:

我在asus筆電(Intel Core i5 4G ram) 與 acer Intel Core i7 個人電腦上
都安裝了MySQL 5.6,與相同的資料表 (table1 資料筆數50萬)

執行大量查詢時,acer i7 速度比筆電快了3倍

但是以loop方式執行大量更新時(50萬筆)
update table1 set field1 = XXX where field2 = .... ( field2 有建 index )

筆電大約不到20分鐘, acer i7 卻要將近 300 分鐘?

在另一台個人電腦安裝後,也是select速度快,但是update很慢,
(比對過筆電&個人電腦的my.ini,參數值都是一樣的)

請問有高手知道是什麼原因嗎? 感激不盡 !
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4464 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人louischen1990註記此篇回應為很有道理 2014/12/2 下午 02:18:10
http://blogs.technet.com/b/sql_server_isv/archive/2011/04/15/fundamentals-improving-insert-and-update-performance-by-dropping-unused-indexes.aspx

refer to this post
作者 : louischen1990(louischen)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/12/15 下午 01:43:45
謝謝 ozzy

後來調整 my.ini
innodb_flush_log_at_trx_commit=0
速度變快50倍

# If set to 1, InnoDB will flush (fsync) the transaction logs to the
# disk at each commit, which offers full ACID behavior. If you are
# willing to compromise this safety, and you are running small
# transactions, you may set this to 0 or 2 to reduce disk I/O to the
# logs. Value 0 means that the log is only written to the log file and
# the log file flushed to disk approximately once per second. Value 2
# means the log is written to the log file at each commit, but the log
# file is only flushed to disk approximately once per second.
#louis
innodb_flush_log_at_trx_commit=0
作者 : turing(Alan)
[ 貼文 67 | 人氣 0 | 評價 300 | 評價/貼文 4.48 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人louischen1990註記此篇回應為最佳解答 2014/12/15 下午 05:36:48
從配置上看,筆電的硬碟轉速標準是5400rpm,桌面的硬碟轉速標準是7200rpm,存取大量數據時應可看到差異。

從測試結果看,估計瓶頸應在硬碟速度上。

批量工作中,innodb_flush_log_at_trx_commit不等於1是可以接受的,出意外時,最多是恢復數據,再從頭從來一次。但實時交易中,innodb_flush_log_at_trx_commit不等於1是有相當危險的。

若table是InnoDB,建議以START TRANSACTION及COMMIT來減少寫硬碟。若有意外,數據庫會自動ROLLBACK,恢復數據。損失可以控制。

真實工作環境中,innodb_flush_log_at_trx_commit=0是相當危險,要隨時準備好要從備份恢復數據。小心!
作者 : louischen1990(louischen)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/12/17 下午 09:09:27
謝謝Alan熱心的回答與寶貴建議,因為loop 50萬筆資料計算的結果是作為統計參考用
所以比較著重在可以快速得到結果,有問題時這個資料庫很容易可以快速重建
謝謝 !
 板主 : 麗達
 > mySQL - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - mySQL - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
mySQL
1 麗達 1240 
2 jabawork 400 
3 小朱 220 
4 Phoenix 200 
5 ench 140 
6 Aery 100 
7 ozzy 90 
8 jonathan321 90 
9 Aries 70 
10 Jasper 60 
mySQL
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875