MySQL學習筆記(七)優(yōu)化

數(shù)據(jù)庫優(yōu)化的目的

避免出現(xiàn)頁面訪問錯誤
。由于數(shù)據(jù)庫聯(lián)接timeout產生頁面5**錯誤
。由于慢查詢造成頁面無法加載
。由于阻塞造成數(shù)據(jù)無法提交
增加數(shù)據(jù)庫的穩(wěn)定性
。很多數(shù)據(jù)庫問題都是由于低效的查詢引起的
優(yōu)化用戶體驗
。流暢頁面的訪問速度
。良好的網(wǎng)站功能體驗

1 SQL及索引(提升性能最大,效率最高)
2 數(shù)據(jù)庫表結構(根據(jù)范式設計表結構)
3 系統(tǒng)配置(linux對mysql打開文件數(shù)的限制等)
4 硬件(提高文件io的速度,但是成本最高)
io的優(yōu)化 并不能減少阻塞 ,但sql索引沒有優(yōu)化好,則會產生大量的慢查詢或阻塞,這是由于mysql的內部鎖機制造成,所以硬件再好效果也不大
mysql對內核是有限制的

Paste_Image.png

演示數(shù)據(jù)庫說明:
使用MySQL提供的sakila數(shù)據(jù)庫,可以通過以下URL獲取這個演示數(shù)據(jù)庫
http://dev.mysql.com/doc/index-other.html
sakila數(shù)據(jù)庫的表結構信息可以通過以下網(wǎng)站查看
http://dev.mysql.com/doc/sakila/en/sakila-installation.html
數(shù)據(jù)庫基于MySQL5.5版本,不同MySQL版本的優(yōu)化器有一定的差別。

mysql 數(shù)據(jù)庫優(yōu)化

項目中,優(yōu)化mysql之前,首先要開啟慢查詢日志,在分析慢查詢日志.
開啟慢查詢日志:
show variables like 'slow%'; //查看慢查詢狀態(tài)
set global slow_query_log_file='/home/mysql/sql_log/mysql-slow.log'; //設置慢查詢記錄文件的路徑
set global log_queries_not_using_indexes=on; //記錄未使用索引的查詢
set global long_query_time=1; //設置慢查詢的時間
set global slow_query_log = on; //開啟慢查詢日志記錄

mysqldumpslow 慢日志的分析工具

Paste_Image.png
個人終結優(yōu)化思路

![Upload Paste_Image.png failed. Please try again.]

1.SQL及索引
SQL優(yōu)化:Count()和Max()的優(yōu)化,子查詢的優(yōu)化,group by的優(yōu)化,Limit查詢的優(yōu)化
索引優(yōu)化:選擇合適的列建立索引

2.數(shù)據(jù)庫表結構:選擇合適的數(shù)據(jù)類型,數(shù)據(jù)表的范式化優(yōu)化,數(shù)據(jù)表的垂直拆分 水平拆分。

3.系統(tǒng)配置:

4.硬件:云服務

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容