1.最大資料量
拋開資料量和併發數,效能即是毋庸之談。
mysql沒有限制單錶的最大記錄數,它取決於作業系統對檔案大小的限制。
檔案系統
單檔案大小限制
fat32
最大4g
ntfs
最大64g
ntfs5.0
最大2tb
ext2
塊大小為1024位元組,檔案最大容量16gb;塊大小為4.96位元組,檔案最大容量2tb
ext3
塊大小為4kb位元組,檔案最大容量4tb
ext4
理論大於16tb
當單錶行數超過500萬或者單錶容量超2gb,推薦試用分表分庫處理。
效能的影響因素是多方面的,依次為硬體配置、mysql配置、資料庫設計、索引優化。
2.最大併發數
併發數是指同一時刻資料庫能處理多少的請求,由max_connections和max_user_connections決定。
max_connections是指mysql例項的最大鏈結數,上限值為16384.
max_user_connections是指每個資料庫使用者的最大連線數。
檢視值:
max_used_connections / max_connections * 100% = 3/100 *100% ≈ 3% ,show variables like '%max_connections%'; 100
show variables like '%max_user_connections%'; 10
兩者值最好比例大於10%。
響應時間=客戶端ui渲染耗時+網路請求耗時+應用程式處理耗時+查詢資料庫耗時 3s為使用者的體驗時間,所以0.5秒是留給資料庫的查詢時間。
3.資料庫設計
資料型別
資料庫設計遵循三正規化,字段型別選擇:更簡單或者占用空間小的原則
• 如果長度能夠滿足,整型盡量使用tinyint、smallint、medium_int而非int。
• 如果字串長度確定,採用char型別。
• 如果varchar能夠滿足,不採用text型別。
• 精度要求較高的使用decimal型別,也可以使用bigint,比如精確兩位小數就乘以100後儲存。
• 盡量採用timestamp而非datetime。
避免空值
mysql中字段為null時依然占用空間,會使索引、索引統計更加複雜。從null值更新到非null無法做到原地更新,容易發生索引**影響效能。盡可能將null值用有意義的值代替,也能避免sql語句裡面包含is not null的判斷。
text型別優化
由於text欄位儲存大量資料,表容量會很早漲上去,影響其他欄位的查詢效能。建議抽取出來放在子表裡,用業務主鍵關聯。
4.優化索引
索引分類:
• 普通索引:最基本的索引。
• 組合索引:多個欄位上建立的索引,能夠加速復合查詢條件的檢索。
• 唯一索引:與普通索引類似,但索引列的值必須唯一,允許有空值。
• 組合唯一索引:列值的組合必須唯一。
• 主鍵索引:特殊的唯一索引,用於唯一標識資料表中的某一條記錄,不允許有空值,一般用primary key約束。
• 全文索引:用於海量文字的查詢,mysql5.6之後的innodb和myisam均支援全文索引。由於查詢精度以及擴充套件性不佳,更多的企業選擇elasticsearch。
如何應對面試
如何應對面試 面試前的準備 1.收集招聘單位的資料 乙個人對於自己要面試的單位一無所知是很嚴重的問題。當面試官問到你相關問題時,你一臉茫然,一問三不知,不單單是表現出你對於這場面試的不重視,也是表現出了你對這個職位,這個公司的不重視,更嚴重的是,讓人覺得你不是個腳踏實地,做事有準備的人。所以,無論是...
如何應對面試中的手寫演算法
最近一段時間一直在準備實習生招聘,自己總結乙個手寫演算法題的步驟。1 理清演算法的思路,盡量通過聯想以前的演算法,畫圖法,舉例子法等。2 input 寫出演算法的輸入 3 output 演算法輸出什麼內容 4 case test 演算法的測試用例 可以通過三個方面來寫 1.特殊輸入 比如輸入的數是不...
軟體工程師如何應對面試
軟體工程師如何應對面試 做軟體的人都討厭面試,我也一樣。可為了找工作,提薪水又不得不面對面試這一關。做軟體時間長了,人會變得內向,不太善於表達自己,可是面試是乙個自我推銷的過程。其實正確的態度是應該把面試當作軟體人的人生常態。軟體行業的特點決定了做軟體的人經常需要變換工作。即使進了微軟這樣大企業裡,...