這篇文章講述了mysql資料庫的儲存引擎,那麼不太了解mysql資料庫儲存引擎的同學和我們引擎來看看本篇關於mysql資料庫的儲存引擎所講述的文章吧!
類型 | #意義 |
---|---|
儲存層 | 儲存引擎、欄位類型選擇、範式設計 |
設計層 | 索引、快取、分割(分錶) |
架構層 | 多個mysql伺服器設置,讀寫分離(主從模式) |
#sql語句層 | 多個sql語句都可以達到目的的情況下,要選擇效能高、速度快的sql語句 |
儲存引擎:我們使用的資料是透過一定的技術儲存在資料庫當中的,資料庫的資料是以檔案形式儲存到硬碟當中的。技術不只一種,每種技術都有自己獨特的性能和功能體現。儲存資料的技術和其功能的合併就稱為「儲存引擎」。
在mysql中經常使用的儲存引擎:Myisam
或Innodb
等等。
資料庫的資料儲存在不同的儲存引擎裡邊,所有的特性就與目前的儲存引擎有一定關聯。 需依照專案的需求、特性選擇不同的儲存引擎。
查看mysql中支援的全部儲存引擎:
資料庫每個資料表的資料設計三個面向資訊:表格結構、資料、索引
技術特性:支援事務、行級鎖定、外鍵
#表格結構、資料、索引的實體儲存
#建立innodb資料表:
表格結構檔:
#該類型資料、索引的實體檔案位置:
所有innodb表的資料和索引資訊都儲存在以下ibdata1檔案中
給innodb類型表的資料和索引會建立自己對應的儲存空間:
預設情況下每個innodb表的資料和索引不會建立單獨的檔案儲存
設定變數,讓每個innodb表有獨特的資料和索引儲存檔案:
重新建立order2資料表:
此時order2資料表有單獨的資料和索引儲存檔案:
#後期無論innodb_file_per_table的設定狀態如何變化,order2的資料和索引都有獨立的儲存位置
資料儲存順序
#innodb表資料的儲存是依照主鍵的順序排列每個寫入的資料。
此特點決定了該類型表的寫入操作較慢。
此類型資料表支援事務、外鍵
#交易:http://blog.csdn.net/change_any_time /article/details/79488020
外鍵:兩個資料表A和B,B表的主鍵是A表的普通字段,在A表看這個普通的字段就是該表的“外鍵”,外鍵的使用有”約束”。
約束:以上兩個表,必須先寫B表的數據,再寫A表的數據,並且 A表的外鍵取值必須來之B表的主鍵id值,不能超過其範圍。
真實項目裡邊很少使用“外鍵”,因為有限制。
該類型表的並發性非常高,多人同時操作該資料表,為了操作資料表的時候,資料內容不會隨便發生變化,要對資訊進行「鎖定」
此類型鎖定等級為:行鎖。只鎖定被操作的目前記錄。
結構、資料、索引獨立存儲,此類型的資料表 表結構、資料、索引都有獨立的儲存檔案:
建立Myisam資料表
每個myisam資料表的結構、資料、索引都有獨立的儲存檔案
表檔案類型 | 意義 |
---|---|
*.frm | |
# #表格結構檔 | |
*.MYD | 表格資料檔 |
myisam表資料的儲存是按照自然順序排列每個寫入的資料。
此特點決定了該類型表的寫入操作較快。
此特點決定了該類型表的寫入操作較快。
如果一個資料表的資料非常多,為了節省儲存空間,需要對該表進行壓縮處理。
複製目前資料表的資料:
# 不斷複製使得order3資料表的資料變成200多萬條:
對應的儲存該200萬個訊息的檔案的物理大小為40多兆:
開始壓縮order3資料表的資料
壓縮工具:myisampack.exe 表名
#重建索引:myisamchk.exe -rq 表名
解壓縮工具:myisamchk.exe –unpack 表名
##order3表資訊被壓縮的60%的空間:
#order3資料表有壓縮,但是索引沒有了:
重建索引:
#索引果然被重建完畢:
刷新資料表:flush table 表名
出現狀況:壓縮的資料表是唯讀表,不能寫資訊:
壓縮的資料表有特色:不能頻繁的寫入操作,只是內容固定的資料表可以做壓縮處理,例如(儲存全國地區資訊的資料表等)
解壓縮order3數據表,使得其可以寫入數據:(解壓縮同時索引自動重建)
資料解壓縮完畢:
執行flush操作,更新解壓縮後的資料:
flush table 表名;此操作會同時刪除order3.MYD.00996D46.deleted的壓縮備份檔案
此時允許將order3繼續寫入資料:
innodb儲存引擎:適合做修改、刪除
Archive
memory
###內存型儲存引擎,操作速度非常快速,比較適合儲存臨時信息,伺服器斷電,給儲存引擎的資料立即遺失。 ####網站大多數情況下「讀取和寫入」操作非常多,適合選擇Myisam類型(例如: dedecms 、phpcms內容管理系統(新聞網站)、discuz論壇)
網站對業務邏輯有一定要求(辦公室網站、商城)適合選擇innodb (Mysql5.5預設儲存引擎都是innodb)
以上是mysql資料庫的儲存引擎詳細講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!