假如 有100萬條資料,在mysql資料庫中是如何儲存的? 如何在高併發的情況下對一條資料進行操作?1、資料庫概念
資料庫是三層架構中用於永久儲存資料的倉庫,就是儲存資料的容器
2、資料庫的三正規化
3、軟體的三層架構
4、關係型資料庫和非關係型資料庫的優缺點
5、一條sql語句的執行過程
1、資料庫引擎概念
資料庫引擎是用於儲存資料、管理和保護資料的核心服務,利用資料庫引擎可以控制訪問許可權,快速處理事務,進行聯機事務處理和聯機資料分析的資料庫物件,還用於建立資料庫表,管理和保護資料的資料庫物件(索引、檢視、儲存過程)
2、資料庫引擎的主線任務
資料庫引擎的主線任務,其實就是建立資料庫系統的主要任務
1、什麼是儲存引擎?
儲存引擎就是 儲存組織資料的一種格式,通俗的來講就是使用不同的技術對資料進行儲存,有不同的儲存方式,索引技巧,鎖定水平等,還提供了不能的功能和能力。
2、說一下你知道的儲存引擎
innodb、myisam、memory、blackhole、csv、archive(歸檔)、federated、mrg_isam
3、他們都有什麼特點?
innodb: 是事物型的儲存引擎,支援事物安全表(acid),支援行級鎖,支援外來鍵,同時也是mysql 的預設儲存引擎,innodb可以和其他儲存引擎混合使用,他是其他基於磁碟儲存引擎不能匹敵的存在,在建立資料表,預設使用主鍵作為唯一索引建立資料表,如果沒有定義主鍵,那麼innodb會給每一行資料生成乙個6位元組的 row id,並將其作為主鍵去建立表
myisam:是web應用最常用的儲存引擎之一,它具有較高的查詢和插入效率,但是它不支援行鎖和外來鍵,在修改資料的時候,要鎖定整個表,對於那些經常性修改的表,開發效率不高,
memory: 是基於記憶體儲存的儲存引擎,他將所有的資料儲存到記憶體當中,具有很高的資料操作效能,開發效率高,但是,他正是因為儲存在記憶體中,如果突然出現宕機、守護程序斷掉,那麼它所有的資料都會消失,有效率的同時也帶來了很大的弊端,如果有些資料立即要用的情況,如果出現宕機等不可避免的危害,資料丟失並不會對服務造成影響就可以使用,如那些臨時資料
blackhoel: 黑洞儲存引擎,顧名思義,就是使用這個儲存引擎,所有存入的資料都會消失,永遠保持為空
vsc: 是基於csv格式資料的儲存引擎,主要是對csv的資料進行操作,特點:建立資料表中強制性的每一行資料都not null ,並且不支援索引,不支援分割槽。因為是跟csv可以使用office直接操作,難免不了出現資料出亂的情況
讀未提交(read uncommitted): 髒讀 不可重複讀 幻讀
讀已提交(read committed) 不可重複度 幻讀
不可重複度(repeat read) 幻讀
可序列化(serializable) –
1、rc、rr級別之下怎麼處理不可重複讀的?
mvcc
2、rc、rr級別之下非阻塞讀是如何實現的?
3、rr級別之下怎麼避免幻讀?
表象上: 使用快照讀
使用next—key臨間鎖
索引的分類
索引的儲存結構
索引的優點
索引的缺點
回表:mysql預設在建立資料表時,會使用非空且唯一的鍵建立b+tree,一般是使用主鍵去建立b+tree,當資料表中給另乙個非空且唯一的字段新增索引,會新開闢乙個b+tree,這個新開闢的b+tree所有的葉子節點存放的是主鍵,當指定該欄位查詢資料時,會優先查詢這個新b+tree,先查找到葉子節點中的主鍵,再使用主鍵回到主鍵b+tree樹中查詢到資料,這種從乙個樹回到主鍵樹的查詢過程,就稱之為回表
索引覆蓋:
在使用另乙個非空且唯一的字段新增索引,建立新的b+tree,並且,在查詢過程中,指定查詢id,那麼,會直接從新的b+tree中查詢到id,不再回表查詢,這種就是索引覆蓋
索引下推:
是基於icp:是一種優化索引查詢的方式,不使用icp的情況下,伺服器傳送查詢指令給儲存引擎,儲存引擎查詢到結果給伺服器,由伺服器進行判斷資料是否符合條件,符合則返回資料,在使用icp的時,當有指定索引的列的判斷時,伺服器會將這個判斷的許可權,下發給儲存引擎,由儲存引擎判定是否符合條件,符合則返回資料,減小伺服器的壓力,提高查詢效率
聯合索引:
當乙個索引中,有兩列或者多列的索引,就是聯合索引,例如:name,age,這兩個字段經常性的修改,那麼就可以針對這兩個欄位去新增聯合索引,增加選擇性,提高查詢速度
最左查詢:
最左查詢就是依賴於聯合索引,當使用聯合索引查詢多個欄位時,會優點查詢最左則的一列資料,查詢如果存在,才會依次往後查詢,如果第一列不存在,就不會再使用這個聯合索引。
字首索引:
當我們建立索引時,難免會出現指定列的索引很大,還很長,在進行查詢時,會很慢,如:**,文章等text這些,就要使用字首索引,指定使用索引的一部分新增索引,節約索引空間,增加查詢效率,但是降低索引的選擇性,當優化器進行優化選擇查詢新增時,沒有更過的選擇,就只能掃瞄更多的資料行。但是一般來說,字首索引的一部分就已經滿足了,不會出現這種情況
聚集索引:
是innodb儲存引擎之下的儲存結構,使用b+tree的進行儲存,但是它所有的葉子節點直接存放資料和索引,預設建立檔案時,也只會建立兩個檔案,乙個表檔案,乙個資料和索引檔案,這種索引和資料存放在一起稱之為聚集索引
非聚集索引:
是myisam儲存引擎的儲存結構,使用b+tree進行儲存,他所有的葉子節點儲存的外部空間的位址引用,當進行查詢時會進行二次定址,預設建立檔案有三個,乙個表頭檔案,乙個索引檔案,乙個資料檔案。這種稱之為非聚集索引
按照鎖間隙
按照鎖的粒度劃分
按照鎖的類別劃分
按照鎖的使用方式劃分
按照加鎖的方式
面試題集 redis
1.redis常用的五種資料型別 1.string 字串 string是簡單的 key value 鍵值對,value 不僅可以是 string,也可以是數字。它是redis最基本的資料型別,乙個redis中字串value最多可以是512m。2.hash 雜湊 redis hash 是乙個鍵值對集合...
ORACLE DBA面試題集
一 sql tuning 類 1 列舉幾種表連線方式 等連線 非等連線 自連線 外連線 左 右 全 2 不借助第三方工具,怎樣檢視sql的執行計畫 i 使用explain plan,查詢plan table explain plan set statement id query1 forselect...
oracle面試題集
oracle 面試問題 技術篇 1.解釋冷備份和熱備份的不同點以及各自的優點 解答 熱備份針對歸檔模式的資料庫,在資料庫仍舊處於工作狀態時進行備份。而冷備份指在資料庫關閉後,進行備份,適用於所有模式的資料庫。熱備份的優點在於當備份時,資料庫仍舊可以被使用並且可以將資料庫恢復到任意乙個時間點。冷備份的...