Mysql數(shù)據(jù)庫常見問題說明及優(yōu)化方法提示

通過此文檔對Mysql數(shù)據(jù)庫及IBATIS使用過程中的常見問題和優(yōu)化方式進行簡單提示性描述,指導研發(fā)人員正確的設(shè)計和使用數(shù)據(jù)庫,提高程序運行質(zhì)量。

一、Mysql數(shù)據(jù)庫性能指標參數(shù)

1、 IO

解釋:IO有四種類型:連續(xù)讀,隨機讀,隨機寫和連續(xù)寫,連續(xù)讀寫的IO size通常比較大,主要衡量吞吐量,而隨機讀寫的IO size比較小,主要衡量IOPS和響應(yīng)時間。數(shù)據(jù)庫中的全表掃描是連續(xù)讀IO,索引訪問則是典型的隨機讀IO,日志文件是連續(xù)寫IO,而數(shù)據(jù)文件則是隨機寫IO。

目標:盡量減少查詢中的IO次數(shù)、提高IOPS、加快IO響應(yīng)時間

  盡量集中寫,提高吞吐量。

2、 CPU

解釋:數(shù)據(jù)庫在進行order by,group by,distinct等時將進行大量的cpu計算,造成cpu繁忙

目標:降低CPU計算

二、Mysql數(shù)據(jù)庫使用建議

1、 使用并正確使用索引

單列索引(where、order by、join on等字段)、復合索引(最左前綴原則,where和orderby同時出現(xiàn)時)、在索引中完成查詢、在索引中完成排序、

2、 Mysql使用Nested Loop Join,永遠用小結(jié)果集驅(qū)動大的結(jié)果集,并減少嵌套循環(huán)總次數(shù)

3、 根據(jù)實際情況確定先過濾數(shù)據(jù)再排序還是先排序再過濾數(shù)據(jù)(舉例:先分頁再JOIN)

4、 盡量避免select *而只選取自身需要的Column

5、 避免大量復雜Join,適度分拆對象

6、 使用join代替子查詢,盡量不使用mysql中的子查詢

7、 盡量少使用OR,使用union或者union all來代替or

8、 牢記在一次數(shù)據(jù)訪問中一般只能利用一個索引,where多條件請使用復合索引而不是建多個單列索引

9、 更新頻繁的字段不適合創(chuàng)建索引

10、
使用不等于(<>或者!=)的時候,Mysql無法使用索引

11、
使用Like操作的時候如果條件以通配符開始(如%abc…)Mysql無法使用索引

12、
合理正確的使用應(yīng)用層緩存

13、
InnoDB會產(chǎn)生死鎖,死鎖通常都可以在應(yīng)用設(shè)計層面解決,通過調(diào)整業(yè)務(wù)流程、數(shù)據(jù)庫對象設(shè)計、事務(wù)大小,以及訪問數(shù)據(jù)庫的SQL語句,絕大部分死鎖都可以避免,可采用不會話中順序訪問表,批量處理數(shù)據(jù)時事先對數(shù)據(jù)排序等方式解決死鎖問題。

14、
正確使用悲觀鎖(for update)和樂觀鎖(版本比對)機制解決數(shù)據(jù)沖突問題

三、數(shù)據(jù)庫設(shè)計優(yōu)化建議

1、 對不經(jīng)常變化的數(shù)據(jù)可進行適當冗余,從而盡量減少Join

2、 通過選用更“小”的數(shù)據(jù)類型減少存儲空間,使查詢相同數(shù)據(jù)需要的IO資源降低

3、 通過合適的數(shù)據(jù)類型加速數(shù)據(jù)的比較

四、 Mysql數(shù)據(jù)庫使用調(diào)優(yōu)方式
1、 Explain:使用explain命令查看SQL語句的執(zhí)行計劃
可訪問以下地址學習:
http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#explain
http://isky000.com/database/mysql-explain-detail
2、 Query Profiler:使用SHOW PROFILE ***命令查看SQL語句執(zhí)行時CPU和IO統(tǒng)計細節(jié),比較不同SQL語句的系統(tǒng)消耗情況
可訪問一下地址學習:
http://dev.mysql.com/doc/refman/5.1/en/show-profiles.html

五、 數(shù)據(jù)庫及IBATIS使用中常見問題說明(待補充)
1、索引是不是越多越好?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容