1. 程式人生 > 其它 >mysql某個值連續出現的記錄_MySQL-面試必備

mysql某個值連續出現的記錄_MySQL-面試必備

技術標籤:mysql某個值連續出現的記錄

一、常見MySQL資料庫面試題

1.事務四大特性(ACID)原子性、一致性、隔離性、永續性?

原子性

根據定義,原子性是指一個事務是一個不可分割的工作單位,其中的操作要麼都做,要麼都不做。即要麼轉賬成功,要麼轉賬失敗,是不存在中間的狀態!

一致性

根據定義,一致性是指事務執行前後,資料處於一種合法的狀態,這種狀態是語義上的而不是語法上的。

隔離性

根據定義,隔離性是指多個事務併發執行的時候,事務內部的操作與其他事務是隔離的,併發執行的各個事務之間不能互相干擾。

永續性

根據定義,永續性是指事務一旦提交,它對資料庫的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

2.事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL預設是哪個級別?

資料庫隔離級別,每個級別會引發什麼問題,mysql預設是哪個級別 - 天劍含光 - 部落格園​www.cnblogs.com

3.MySQL常見的三種儲存引擎(InnoDB、MyISAM、MEMORY)的區別?

InnoDB:支援事務處理,支援外來鍵,支援崩潰修復能力和併發控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現併發控制(比如售票),那選擇InnoDB有很大的優勢。如果需要頻繁的更新、刪除操作的資料庫,也可以選擇InnoDB,因為支援事務的提交(commit)和回滾(rollback)。

MyISAM

:插入資料快,空間和記憶體使用比較低。如果表主要是用於插入新記錄和讀出記錄,那麼選擇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.net

6.什麼是臨時表,臨時表什麼時候刪除?

CSDN-專業IT技術社群-登入​blog.csdn.net

7.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 text​www.cnblogs.com

9.聚集索引和非聚集索引區別?

1、聚集索引一個表只能有一個,而非聚集索引一個表可以存在多個
2、聚集索引儲存記錄是物理上連續存在,而非聚集索引是邏輯上的連續,物理儲存並不連續。

10.有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?

有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?​www.detechn.com

11.非關係型資料庫和關係型資料庫區別,優勢比較?

CSDN-專業IT技術社群-登入​blog.csdn.net

12.資料庫三正規化,根據某個場景設計資料表?

CSDN-專業IT技術社群-登入​blog.csdn.net

13.資料庫的讀寫分離、主從複製,主從複製分析的 7 個問題?

CSDN-專業IT技術社群-登入​blog.csdn.net

14.使用explain優化sql和索引?

SQL優化(三)-- 索引、explain分析​www.cnblogs.com 0e2fd04fdc172f01ad99b9d166c6fbd0.png

15.MySQL慢查詢怎麼解決?

16.什麼是 內連線、外連線、交叉連線、笛卡爾積等?

什麼是內連線、外連線、交叉連線(笛卡爾積)? - 星然 - 部落格園​www.cnblogs.com

17.mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?

CSDN-專業IT技術社群-登入​blog.csdn.net

18.varchar和char的使用場景?

CSDN-專業IT技術社群-登入​blog.csdn.net

19.mysql 高併發環境解決方案?

CSDN-專業IT技術社群-登入​blog.csdn.net

20.資料庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?

CSDN-專業IT技術社群-登入​blog.csdn.net

二、MySQL效能調優

https://www.cnblogs.com/pengyunjing/p/6591660.html​www.cnblogs.com