mysql效能,以及如何應對面試中的sql問題

2021-10-01 21:59:28 字數 1772 閱讀 5781

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是指每個資料庫使用者的最大連線數。

檢視值:

show variables like '%max_connections%';    100

show variables like '%max_user_connections%'; 10

max_used_connections / max_connections * 100% = 3/100 *100% ≈ 3% ,

兩者值最好比例大於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.特殊輸入 比如輸入的數是不...

軟體工程師如何應對面試

軟體工程師如何應對面試 做軟體的人都討厭面試,我也一樣。可為了找工作,提薪水又不得不面對面試這一關。做軟體時間長了,人會變得內向,不太善於表達自己,可是面試是乙個自我推銷的過程。其實正確的態度是應該把面試當作軟體人的人生常態。軟體行業的特點決定了做軟體的人經常需要變換工作。即使進了微軟這樣大企業裡,...