mysql資料庫優化設計的知識點很廣,這裡我主要將其劃分為schema、sql、index,硬體四方面談談自己的理解。
字段設計:吝嗇的原則,not null,三個預留備用字段。
表的設計合理化,首先不得不提到三正規化
字段不可分
所有非主鍵字段依賴主鍵字段
所有非主鍵欄位不依賴其他非主鍵字段
三正規化的目的時減少資料的冗餘,但實際開發過程中為了提高查詢效率等,適當保留冗餘資料。
主從分離,垂直分割槽和水平分割槽。
這裡提乙個生產遇到的問題,多表關聯查詢,包含多個join和子查詢,這裡我們可以將語句化繁為簡,資料拼接等操作可以叫用程式語言本身來操作。
避免select *
limit offset,rows
充分利用表鎖和行鎖
慢查詢日誌,針對性優化
explain
type
含義all
全表掃瞄
index
索引全掃瞄
range
索引範圍掃瞄
ref非唯一索引掃瞄
eq_ref
唯一索引掃瞄
const,system
單錶最多有乙個匹配行
null
不用掃瞄
一般來說,得保證查詢至少達到range級別,最好能達到ref
組合索引和字首索引
加機器配置,固態等
mysql效能優化 mysql效能優化
優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...
mysql的效能優化 mysql效能優化
檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...
mysql 效能優化 命令 mysql效能優化
發現問題 當發現程式執行比較慢的時候,首先排除物力資源問題之後,就將注意力轉向mysq資料庫 1 首先確定執行慢的sql語句 mysql show full processlist 2 確認低效的查詢 多次執行第一步發現time耗費大的sql語句。檢視耗費的時間。3 分析效能 為sql生成乙個執行計...