mysql某個值連續出現的記錄_MySQL-面試必備
技術標籤:mysql某個值連續出現的記錄
一、常見MySQL資料庫面試題
1.事務四大特性(ACID)原子性、一致性、隔離性、永續性?
原子性
根據定義,原子性是指一個事務是一個不可分割的工作單位,其中的操作要麼都做,要麼都不做。即要麼轉賬成功,要麼轉賬失敗,是不存在中間的狀態!
一致性
根據定義,一致性是指事務執行前後,資料處於一種合法的狀態,這種狀態是語義上的而不是語法上的。
隔離性
根據定義,隔離性是指多個事務併發執行的時候,事務內部的操作與其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
永續性
根據定義,永續性是指事務一旦提交,它對資料庫的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
2.事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL預設是哪個級別?
資料庫隔離級別,每個級別會引發什麼問題,mysql預設是哪個級別 - 天劍含光 - 部落格園www.cnblogs.com3.MySQL常見的三種儲存引擎(InnoDB、MyISAM、MEMORY)的區別?
InnoDB:支援事務處理,支援外來鍵,支援崩潰修復能力和併發控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現併發控制(比如售票),那選擇InnoDB有很大的優勢。如果需要頻繁的更新、刪除操作的資料庫,也可以選擇InnoDB,因為支援事務的提交(commit)和回滾(rollback)。
MyISAM
MEMORY:所有的資料都在記憶體中,資料的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對資料的安全性要求較低,可以選擇MEMOEY。它對錶的大小有要求,不能建立太大的表。所以,這類資料庫只使用在相對較小的資料庫表。
4.MySQL的MyISAM與InnoDB兩種儲存引擎在,事務、鎖級別,各自的適用場景?
MyISAM特點
- 不支援行鎖(MyISAM只有表鎖),讀取時對需要讀到的所有表加鎖,寫入時則對錶加排他鎖;
- 不支援事務
- 不支援外來鍵
- 不支援崩潰後的安全恢復
- 在表有讀取查詢的同時,支援往表中插入新紀錄
- 支援BLOB和TEXT的前500個字元索引,支援全文索引
- 支援延遲更新索引,極大地提升了寫入效能
- 對於不會進行修改的表,支援 壓縮表 ,極大地減少了磁碟空間的佔用
InnoDB特點
- 支援行鎖,採用MVCC來支援高併發,有可能死鎖
- 支援事務
- 支援外來鍵
- 支援崩潰後的安全恢復
- 不支援全文索引
MyISAM和InnoDB兩者的應用場景:
1) MyISAM管理非事務表。它提供高速儲存和檢索,以及全文搜尋能力。如果應用中需要執行大量的SELECT查詢,那麼MyISAM是更好的選擇。
2) InnoDB用於事務處理應用程式,具有眾多特性,包括ACID事務支援。如果應用中需要執行大量的INSERT或UPDATE操作,則應該使用InnoDB,這樣可以提高多使用者併發操作的效能。
但是實際場景中,針對具體問題需要具體分析,一般而言可以遵循以下幾個問題:
- 資料庫是否有外來鍵?
- 是否需要事務支援?
- 是否需要全文索引?
- 資料庫經常使用什麼樣的查詢模式?在寫多讀少的應用中還是Innodb插入效能更穩定,在併發情況下也能基本,如果是對讀取速度要求比較快的應用還是選MyISAM。
- 資料庫的資料有多大? 大尺寸傾向於innodb,因為事務日誌,故障恢復。
5.查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序?
CSDN-專業IT技術社群-登入blog.csdn.net6.什麼是臨時表,臨時表什麼時候刪除?
CSDN-專業IT技術社群-登入blog.csdn.net7.MySQL B+Tree索引和Hash索引的區別?
由於 hash 索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像B-Tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的IO訪問,所以 Hash 索引的查詢效率要遠高於 B-Tree 索引。
可能很多人又有疑問了,既然 Hash 索引的效率要比 B-Tree 高很多,為什麼大家不都用 Hash 索引而還要使用 B-Tree 索引呢?
任何事物都是有兩面性的,Hash 索引也一樣,雖然 Hash 索引效率高,但是 Hash 索引本身由於其特殊性也帶來了很多限制和弊端,主要有以下這些。
(1)Hash 索引僅僅能滿足"=","IN"和"<=>"查詢,不能使用範圍查詢。
由於 Hash 索引比較的是進行 Hash 運算之後的 Hash 值,所以它只能用於等值的過濾,不能用於基於範圍的過濾,因為經過相應的 Hash 演算法處理之後的 Hash 值的大小關係,並不能保證和Hash運算前完全一樣。
(2)Hash 索引無法被用來避免資料的排序操作。
由於 Hash 索引中存放的是經過 Hash 計算之後的 Hash 值,而且Hash值的大小關係並不一定和 Hash 運算前的鍵值完全一樣,所以資料庫無法利用索引的資料來避免任何排序運算;
(3)Hash 索引不能利用部分索引鍵查詢。
對於組合索引,Hash 索引在計算 Hash 值的時候是組合索引鍵合併後再一起計算 Hash 值,而不是單獨計算 Hash 值,所以通過組合索引的前面一個或幾個索引鍵進行查詢的時候,Hash 索引也無法被利用。
(4)Hash 索引在任何時候都不能避免表掃描。
前面已經知道,Hash 索引是將索引鍵通過 Hash 運算之後,將 Hash運算結果的 Hash 值和所對應的行指標資訊存放於一個 Hash 表中,由於不同索引鍵存在相同 Hash 值,所以即使取滿足某個 Hash 鍵值的資料的記錄條數,也無法從 Hash 索引中直接完成查詢,還是要通過訪問表中的實際資料進行相應的比較,並得到相應的結果。
(5)Hash 索引遇到大量Hash值相等的情況後效能並不一定就會比B-Tree索引高。
對於選擇性比較低的索引鍵,如果建立 Hash 索引,那麼將會存在大量記錄指標資訊存於同一個 Hash 值相關聯。這樣要定位某一條記錄時就會非常麻煩,會浪費多次表資料的訪問,而造成整體效能低下。
8.sql查詢語句確定建立哪種型別的索引?如何優化查詢?
mysql索引型別 normal, unique, full textwww.cnblogs.com9.聚集索引和非聚集索引區別?
1、聚集索引一個表只能有一個,而非聚集索引一個表可以存在多個
2、聚集索引儲存記錄是物理上連續存在,而非聚集索引是邏輯上的連續,物理儲存並不連續。
10.有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?
有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?www.detechn.com11.非關係型資料庫和關係型資料庫區別,優勢比較?
CSDN-專業IT技術社群-登入blog.csdn.net12.資料庫三正規化,根據某個場景設計資料表?
CSDN-專業IT技術社群-登入blog.csdn.net13.資料庫的讀寫分離、主從複製,主從複製分析的 7 個問題?
CSDN-專業IT技術社群-登入blog.csdn.net14.使用explain優化sql和索引?
SQL優化(三)-- 索引、explain分析www.cnblogs.com15.MySQL慢查詢怎麼解決?
16.什麼是 內連線、外連線、交叉連線、笛卡爾積等?
什麼是內連線、外連線、交叉連線(笛卡爾積)? - 星然 - 部落格園www.cnblogs.com17.mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?
CSDN-專業IT技術社群-登入blog.csdn.net18.varchar和char的使用場景?
CSDN-專業IT技術社群-登入blog.csdn.net19.mysql 高併發環境解決方案?
CSDN-專業IT技術社群-登入blog.csdn.net20.資料庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?
CSDN-專業IT技術社群-登入blog.csdn.net二、MySQL效能調優
https://www.cnblogs.com/pengyunjing/p/6591660.htmlwww.cnblogs.com