日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql面试常见知识点总结(一)

發布時間:2025/3/17 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql面试常见知识点总结(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Mysql事務相關
事務特點,包括原子性、一致性、隔離性、持久性。一句話表達就是邏輯上的一組操作,要么執行,要不不執行。
事務的隔離性包括讀取未提交、讀取已提交、可重復讀、串行化。這四種事務隔離性是按照從低到高的隔離級別。默認級別是可重復讀。
1、讀取未提交是指一個事務內可以讀取另一個事務內已修改但沒有commit提交的數據。
2、讀取已提交是指一個事務內可以讀取另一個事務內已提交的數據。可避免臟讀。
3、可重復讀是指一個事務內可以反復讀取另一個事務內某個字段的值,而不會有差異性。即對同一個字段進行多次讀操作,得到的結果是相同的。可避免臟讀、不可重復讀。
4、串行化就是多個事務之間完全獨立,按照順序執行。可避免事務并行帶來的不利影響。可避免臟讀、不可重復讀、幻讀。
并發事務可能造成一些錯誤數據,包括臟讀、不可重復讀、以及幻讀。可以提高事務的隔離性,來避免并發事務帶來的影響。
1、臟讀就是指一個事務內讀取另一個事務內已修改但未提交的數據,從而產生錯誤。
2、不可重復讀,一個事務內讀取到另一個事務內對某一個字段的修改值。
3、幻讀,就是一個事務內讀取某些記錄,但是另一個事務內有新增或刪除了某些記錄,這個時候第一個事務再進行查詢操作,會增加或者減少了部分記錄。

二、Mysql引擎特點
mysql5.6版本后采用InnoDb引擎,支持表級鎖和行級鎖。并且支持事務。

三、Mysql設計表
1、采用合適的數據類型。比如Int、smallInt等占用不同的字節數,根據實際使用場景采用合適的數據類型。
若不涉及到符號,則采用無符合數據類型。
日期數據不要采用字符類型,采用Date、DateTime、Time、TimeStamp等。DateTime占八個字節,時間范圍大。TimeStamp時間范圍從1980-2040,帶有時區信息。
Ip設計成Int類型,而不采用字符類型
盡量不要有null、建立好主鍵。
2、建立合適的索引
建議在where、OrderBy、GroupBy等字段上選擇列作為索引。索引一般不超過五個,索引不是越多越好,過多的索引的情況下。若數據的變更使得索引維護的開銷增加,當然Mysql選擇索引的時間也會增加。
索引列的順序盡量選取區分度高的列,再就是列長度較短的放在前面。
區分度高的字段做索引,容易命中記錄。列長度較小的字段,容易減小IO開銷。

四、Sql查詢慢
1、檢查Sql是否規范,是否沒有建立索引或者說有索引但是由于Sql語句不規范而沒有走索引。
常見的不走索引而去全表查找的問題如使用Like “%%”、!=或者<>、或者對列采用函數轉換或者左側運算、或者在Where條件中使用Is null、Is not null或者使用In子查詢,將會放棄索引,而走整表查詢,從而降低效率。
2、大Sql的話,建議拆分成多個小Sql。一個Sql語句是單線程執行。
3、若是數據量太大,則考慮讀寫分離、或者分區(垂直分區、水平分區)、分庫等。
讀寫分離是比較經典的做法,主數據庫做寫操作,多個從數據庫負責讀操作。
垂直分區就是把多個列拆開,可以按照操作頻繁的列作為一張表。
水平分區就是將一張表上的記錄分到多張表上去。
分庫則是物理上的分隔,分布式部署。

五、慢查詢排查
1、開啟慢查詢日志,分析查詢Sql耗時
2、采用Explain分析Sql執行情況,是否命中索引等

感謝歪哥總結,參考博文地址:http://blog.waizaowang.com/java/19.html

總結

以上是生活随笔為你收集整理的Mysql面试常见知识点总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。