程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql實戰問題的處理

mysql實戰問題的處理

編輯:MySQL綜合教程


mysql實戰問題的處理   記錄工作中使用mysql的疑難雜症及解決。    www.2cto.com   1 pipe broken or connection broken         使用pol的mysql client端的連接莫名斷開,一般都是由server端主動斷開連接引發,需要查一下連接池中的maxIdle與mysql的wait_timeout,前者一定要小,否則connection會被server主動斷開。   2 域名下的slave機的負載均衡 目前免費的連接池如c3p0、dbcp的線程池使用方式都是lifo,如果你恰好用域名來管理多個ip下的mysql slave實例,你可能會發現各個slave的連接、負載很不均衡。   解決:1)小心調整idleTime、min/max poolsize;2)增加一層proxy,來代理對這些線程池的connection管理。不過這樣需要知道每個connection的ip,driver沒有,有一個辦法通過sql來獲取:select @@hostname 查到server的host,這樣配合lookup server,ip也拿到手了;另外也可以直接根據host來管理,不用ip,就是不太直觀;3)自己寫一個driver,不過需要時間和驗證的過程~~~   3 對於唯一鍵刪除+insert的復合操作(unbind + bind) 常見於:業務綁定時,如果已經bind了另外一個唯一鍵,需要先unbind,然後再bind。這是replace into的一展身手的地方。   有幾點要注意:1)如果有多個唯一鍵(包括primary key),如果新插入的row中與多個唯一鍵相同,mysql會先刪除多條,然後插入這一條;2)replace into不能獲取之前那行的原始值,比如replace into xxx on duplicate key update set a=a+1 相當於: set a=default(a)+1;3)table中必須要有unique key,否則相當於insert; mysql的處理算法:1)try insert;2)if false,del with uniqu/primary key;3)try insert again  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved