本文幫助你從系統到使用去優化mysql。
1.保證業務的前題下,資料庫字段設定為最小的型別。
除了varchar和char以外,字段型別定義的儲存空間。舉個例子,你使用int型別就會占用4個位元組的儲存空間,int(2)只是限制數字的最大值是兩位。2.mysql 在 windows 下不區分大小寫,但在 linux 下預設是區分大小寫。因此,資料庫名、表名、欄位名,都不允許出現任何大寫字母,避免節外生枝。
第三正規化(冗餘性):資料庫不同的表,欄位有重複。例如:訂單表裡有商品名稱和**,訂單商品表也有商品名稱和**。
用空間換時間,比如 訂單表 裡增加 訂單商品表 的商品名稱字段,就可以避免 訂單表 和 訂單商品表 聯合查詢了。
1.查詢sql語句各階段消耗的時間,session級別的配置。
開啟查詢時間記錄:set profiling = 1;
2.根據慢日誌定位慢查詢sql,持久修改需更改配置檔案,set global重啟無效。
檢視慢日誌是否開啟,show variables like 『%quer%』;
將慢日誌記錄開啟,set global slow_query_log = on;
檢視慢日誌檔案位址,show query_log_file;
設定執行時間多少秒為慢日誌,set global long_query_time = 1;(生效需重連資料庫)
慢查詢的數量:show status like 『%slow_queries%』;
3.使用explain放在執行sql前分析,例:explain select…
1.索引的列上不要用函式,否則無法進行索引查詢
2.字串字首索引,由於字串太長不可能全部建立索引,所以create index要限制數量
3.聯合索引最左字首匹配原則
4.索引掃瞄優化排序
索引的列表順序和order by子句的順序完全一致
索引中所有列的方向(公升序,降序)和order by子句完全一致
order by中的字段全部在關聯表中的第一張表中
5.索引優化鎖
6.索引的冗餘
主鍵索引建立了就不需要再建立唯一索引、單列索引,這個是冗餘的
單列建立了索引,就不需要增加到在復合索引了
可以找工具檢查多餘的索引:pt-duplicate-key-checker h=127.0.0.1
MySQL分頁效能優化指南
一道面試的問題,當mysql表中有資料量很大的時候如何做分頁。當時只知道在資料量很大的時候可以分表,但不知道不分表時可以怎麼做。唉,誰讓 商就那麼幾條資料,乙個簡單的limit,offset就完全hold住了 捂臉 很多應用往往只展示最新或最熱門的幾條記錄,但為了舊記錄仍然可訪問,所以就需要個分頁的...
MySQL資料庫效能優化指南
mysql資料庫效能優化指南 資料庫優化的討論是乙個永恆的主題,每年的資料庫技術大會 優化 專場往往都是人氣最旺的,這說明dba工作中都離不開它。資料庫優化是個系統工程涵蓋諸多方面 網路 伺服器硬體配置 作業系統配置 架構設計 應用設計 sql語句優化等等。實際上對大多說dba來說網路 硬體等往往無...
mysql高效能指南 MySQL效能優化指南
資料庫優化,是乙個存在了幾十年的問題,更是每乙個後端開發者精進路上必須掌握的技能。而效能優化的核心,就是摳門。在完成功能的前提下 對於cpu,執行越少的 那麼所需要的cpu時間就越少,因此程式就會越快 對於io,執行越少次數的i o,阻塞於i o的時間就會越少 對於網路,傳輸越少的資料,那麼所需要的...