mysql某个值连续出现的记录_MySQL-面试必备
一、常見MySQL數據庫面試題
1.事務四大特性(ACID)原子性、一致性、隔離性、持久性?
原子性
根據定義,原子性是指一個事務是一個不可分割的工作單位,其中的操作要么都做,要么都不做。即要么轉賬成功,要么轉賬失敗,是不存在中間的狀態!
一致性
根據定義,一致性是指事務執行前后,數據處于一種合法的狀態,這種狀態是語義上的而不是語法上的。
隔離性
根據定義,隔離性是指多個事務并發執行的時候,事務內部的操作與其他事務是隔離的,并發執行的各個事務之間不能互相干擾。
持久性
根據定義,持久性是指事務一旦提交,它對數據庫的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
2.事務的并發?事務隔離級別,每個級別會引發什么問題,MySQL默認是哪個級別?
數據庫隔離級別,每個級別會引發什么問題,mysql默認是哪個級別 - 天劍含光 - 博客園?www.cnblogs.com3.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.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 text?www.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.html?www.cnblogs.com總結
以上是生活随笔為你收集整理的mysql某个值连续出现的记录_MySQL-面试必备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cors跨域_Nginx通过CORS配置
- 下一篇: mysql function_MySQL