mysql常用數據庫

關於mysql,暫時做一個總綱,日後讀第二遍的時候再做詳細記錄
數據庫主要由 一,最上層的服務層。基於網絡的客戶端/服務端的工具,做連接處理,授權認證和安全等。 二,第二層是mysql的核心服務功能,查詢引擎,包括了查詢解析,分析,優化,緩存以及內置函數,存儲引擎,觸發器,視圖等。 三,第三層是存儲引擎,負責mysql中數據的存儲和提取,和GUN/Linux下的各種文件系統一樣,有很多種存儲引擎。這三部分組成
1.2.1 讀寫鎖,爲解決併發控制,可以通過實現一個由兩種類型的鎖組成的所繫統來解決問題,這兩種類型的鎖通常被稱爲共享鎖,和排他鎖,也叫讀鎖和寫鎖。
鎖也可以是粗粒度和細粒度,可以是表鎖也可以是行鎖。
數據庫的種類和選型。常用和需要掌握的就是以下這些數據庫
1 innoDB存儲引擎(正常情況下使用此種即可),支持事務,採用mvcc支持高併發,實現四個標準的隔離級別,通過間隙鎖策略防止幻讀,innoDB表是基於聚簇索引建立的。
2 MyISAM 存儲引擎,是mysql5.1以前的默認的存儲引擎,有全文索引,壓縮,空間函數等特性,但是不支持事務和行級鎖,崩潰後無法安全回覆,對於只讀的數據,或者表比較小,可以忍受修復操作的情境下適用。數據信息會存儲在兩個文件中,數據文件和索引文件,分別以.MYD和.MYI爲擴展名。只是表鎖,讀取時會需要讀到的所有表加共享鎖,寫入時則對錶加排他鎖,但是在讀取查詢的同事也可以往表中插入新記錄。
創建MyISAM表的時候,如果指定了DELAY_KEY_WRITE選項,在每次修改執行完成時,不會立刻將修改的索引數據寫入磁盤,而是會寫到內存中的鍵緩衝區,只有在清理見緩衝區或者關閉表的時候纔會將對應的索引塊寫入到磁盤,這種方式可以極大地提升寫入性能。但是在數據庫或者主機崩潰時會造成索引損壞,需要執行修復,此存儲引擎還可以記錄地理位置。
3 Archive引擎,只支持insert和select操作,mysql5.1之前不支持索引,會緩存所有的寫並利用zlib對插入的行進行壓縮,但select需要全表掃描,所以archive表事和日誌和數據採集類應用。在需要更快速的insert操作的場合下使用,支持行級鎖和專用的緩衝區,可以實現高併發的插入,模仿了事務和MVCC特性,但不是一個事務型的引擎,而是一個針對告訴插入和壓縮做了優化的簡單引擎。
4 Blackhole引擎,沒有實現任何存儲機制,會丟棄所有插入的數據不做任何保存,但是服務器會記錄Blackhloe表的日誌,可以用於複製數據到備庫或者只是簡單的記錄到日誌,這種特殊的存儲引擎可以在一些特殊的複製架構和日誌審覈時發揮作用,但是不推薦。
5 CSV引擎,可以將普通的CSV文件作爲Mysql的表來處理,但是不支持索引,可以在數據庫運行時拷入或考出文件,可以將excel等電子表格軟件中的數據存儲爲csv文件,然後複製到mysql數據目錄下,就能在Mysql中打開使用。
6 Memory引擎,如果需要快速地訪問數據,並且這些數據不會被修改,重啓以後丟失也沒有關係,就可以用這個,memory表至少比MyISAM表要快一個數量級,因爲所有的數據都保存在內存中,不需要進行磁盤I/O,Memory表的結構在重啓以後還會保留,但數據會丟失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章