摘要:查詢速度很快,如果數(shù)據(jù)庫和的操作比較少的話比較適用。如果表的讀操作遠遠多于寫操作且不需要數(shù)據(jù)庫事務的支持,那么也是很好的選擇。
前言
數(shù)據(jù)庫在計算機領域的應用十分廣泛,大家在學習數(shù)據(jù)庫的時候,一般是按照網上的基礎教程可以一步步入門,但是這僅僅只是會簡單地使用數(shù)據(jù)庫而已,而要真正會使用數(shù)據(jù)庫,就需要弄清楚數(shù)據(jù)庫的基本原理和組成結構.而這樣的文章在網上并不多, 因此經過我的查閱和總結,最終寫成了這篇文章,以供大家參考,文章末尾會給出參考地址,有興趣的朋友可以自行查看.
數(shù)據(jù)庫結構一覽 層結構連接層主要負責安全驗證和信息傳輸
sql層主要處理和優(yōu)化sql
存儲層存儲真正的表數(shù)據(jù)
對數(shù)據(jù)庫而言最重要的則是查找效率,那么我們來理一理數(shù)據(jù)庫的查詢操作.
數(shù)據(jù)庫中存儲與查找 數(shù)據(jù)庫的存儲 數(shù)據(jù)庫引擎InnoDB , 2. MyIsam , 3. Memory, 4. Blackhole, 5. CSV, 6. Performance_Schema, 7. Archive, 8. Federated , 9 Mrg_Myisam
在平時使用中最多的還是InnoDB和MyIsam,以下做一些簡單介紹
InnoDBInnoDB是一個事務型的存儲引擎,有行級鎖定和外鍵約束。
經常更新的表,適合處理多重并發(fā)的更新請求。
支持事務。
可以從災難中恢復(通過bin-log日志等)。
外鍵約束。只有他支持外鍵。
支持自動增加列屬性auto_increment。
Innodb的索引文件本身就是數(shù)據(jù)文件,即B+Tree的數(shù)據(jù)域存儲的就是實際的數(shù)據(jù),這種索引就是聚集索引。這個索引的key就是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。InnoDB的輔助索引數(shù)據(jù)域存儲的也是相應記錄主鍵的值而不是地址,所以當以輔助索引查找時,會先根據(jù)輔助索引找到主鍵,再根據(jù)主鍵索引找到實際的數(shù)據(jù)。所以Innodb不建議使用過長的主鍵,否則會使輔助索引變得過大。建議使用自增的字段作為主鍵,這樣B+Tree的每一個結點都會被順序的填滿,而不會頻繁的分裂調整,會有效的提升插入數(shù)據(jù)的效率。
MyIsamMyIASM是MySQL默認的引擎,但是它沒有提供對數(shù)據(jù)庫事務的支持,也不支持行級鎖和外鍵,因此當INSERT(插入)或UPDATE(更新)數(shù)據(jù)時即寫操作需要鎖定整個表,效率便會低一些。
不支持事務的設計,但是并不代表著有事務操作的項目不能用MyIsam存儲引擎,可以在service層進行根據(jù)自己的業(yè)務需求進行相應的控制。
不支持外鍵的表設計。
查詢速度很快,如果數(shù)據(jù)庫insert和update的操作比較少的話比較適用。
對整表進行加鎖。
MyISAM極度強調快速讀取操作。
MyIASM中存儲了表的行數(shù),于是SELECT COUNT(*) FROM TABLE時只需要直接讀取已經保存好的值而不需要進行全表掃描。如果表的讀操作遠遠多于寫操作且不需要數(shù)據(jù)庫事務的支持,那么MyIASM也是很好的選擇。
MyISAM索引結構: MyISAM索引用的B+ tree來儲存數(shù)據(jù),MyISAM索引的指針指向的是鍵值的地址,地址存儲的是數(shù)據(jù)。B+Tree的數(shù)據(jù)域存儲的內容為實際數(shù)據(jù)的地址,也就是說它的索引和實際的數(shù)據(jù)是分開的,只不過是用索引指向了實際的數(shù)據(jù),這種索引就是所謂的非聚集索引。
如今我們還會學習<數(shù)據(jù)結構><算法>等課程,會被其中的時間復雜度,效率搞得暈頭轉向,有時候很懷疑為了這一點效率有必要如此大費周章嗎.當然,如今計算機運算速度能達到每秒萬億次,微機也可達每秒億次以上,但是當數(shù)據(jù)量一旦變大之后呢?若是對幾個G的數(shù)據(jù)查詢該怎么辦呢?因此算法的優(yōu)化在數(shù)據(jù)庫中還是非常重要的.
索引簡介 索引優(yōu)點查詢數(shù)據(jù)塊
數(shù)據(jù)唯一性
加速表之間的連接
索引缺點索引會占用存儲空間,可能比本身的表數(shù)據(jù)還大
只對查有利,增加了增刪改的負擔
使用索引的注意事項字段值差別大的數(shù)據(jù)使用索引(性別列就不要用索引了)
字符字段可以只選取字段的前幾位字符建立索引,能簡少存儲數(shù)據(jù).
InnoDB 特點支持事務
處理數(shù)據(jù)量巨大
表數(shù)據(jù)和索引分開存儲
支持行級鎖定
缺省 6B長度主鍵
主鍵本身就是索引,其索引映射的不是地址,而是主鍵,從而找到行記錄
InnoDB索引只支持B-Tree
MyISAM 特點不支持事務
插入和查找極快
不支持事務
單純增查數(shù)據(jù)的首選
MyISAM索引只支持B-Tree
memory索引支持 B-Tree和hash
參考文檔:
[計算機·呂鳳萍](http://www.cpweb.gov.cn/kepu/jishu/jisuanjijishu/21141_2.html)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/73092.html
閱讀 3250·2021-11-23 09:51
閱讀 1639·2021-11-22 09:34
閱讀 2925·2021-10-27 14:15
閱讀 2405·2021-10-12 10:17
閱讀 2016·2021-10-12 10:12
閱讀 1036·2021-09-27 14:00
閱讀 2078·2021-09-22 15:19
閱讀 1106·2019-08-30 10:51