1、存盤引擎
早期存盤引擎都是把資料庫相關資料固化到磁盤的,在并發上每張表都是表鎖,
后期的存盤引擎(例如innodb,in-memory等)大多都是元資料在磁盤上,索引資料在記憶體中,在并發上每張表都是行鎖
2、磁盤型資料庫索引
資料庫如一本詞典,存盤很多資料,但要快速找到你需要查的詞,就需要目錄,在資料庫中這個目錄就叫索引,索引存的啥呢,
索引存的是被建索引欄位的有序集合,并且每個欄位都跟著一個資料的磁盤物理地址,有了索引表,如何查呢,在我們學習資料
結構與演算法的時候,就接觸到二叉樹查找,那個時候就了解到樹結構在查詢上的優良性能,所以為了提高索引表的查詢性能,索引
表資料是被存在樹結構上的,SQL是b+樹,MongoDB是b樹,簡單區別就是b+樹資料存放在葉子節點,葉子節點上有橫向指標,
這也就確定了SQL在范圍查詢上的優良性能,b樹資料存放在各個節點,這就確定MongoDB在精準資料查詢上的優良性能,
既然大致了解了索引結構,那索引是如何提升查詢性能呢,索引樹存在記憶體上,當你查詢被索引資料時,資料庫會遍歷索引樹,
匹配資料,找到資料磁盤物理地址,取出資料,這個程序因索引樹參與資料匹配,會大大降低掃描的資料量,由此大大提升查詢
性能,從這里我們能看出索引兩大特點,有序集合和樹結構,既然索引這么好,是不是應該給所有欄位建立索引呢,其實非也,
索引會大大提升查詢性能,但也會增加資料插入負擔,因為每插入一條資料,所有相關索引要更新的,所以索引要查詢量大的欄位
上面,查詢量不大想優化性能的要權衡增加的插入負擔,常用的索引型別有三種,有序索引,hash索引,text索引,最常用的是
有序索引,就是上邊講的內容,復合索引是多欄位索引,欄位索參考途常為查詢和排序,如果復合欄位都為查詢功能,則按照主次
建立索引即可,如果復合欄位有查詢也有排序,排序欄位要放在查詢欄位前面建立索引,
索引性能除錯有倆重要引數,毫秒數跟掃描量,具體參考以毫秒數為主,毫秒數和掃描量正相關,但毫秒數跟索引好壞不一定正相關,
這中間還牽涉到一個引數是資料量,
3、查詢語法
關系型資料庫大多遵循SQL語法規范,非關系型資料庫語法各異,
4、存取性能
資料庫按照存盤位置分記憶體型資料庫,磁盤型資料庫,記憶體型資料庫資料存在記憶體中,查詢性能秒殺磁盤資料庫,
5、資料庫管理工具
這個因人而異,我個人比較喜歡Navicat,因為Navicat能連接各種資料庫,并且互動比較友好,界面為中文,
6、資料庫集群
每種資料庫都有組態檔,一個組態檔啟動一個資料庫實體,集群就是配置多個資料庫檔案,可以分布在不同服務器上,
啟動多個實體,建立主仆關系,主少從多, 集群一般為主寫從讀,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/308600.html
標籤:其它
