mysql資料庫的儲存引擎詳細講解

韦小宝
發布: 2018-03-14 10:27:08
原創
2009 人瀏覽過

這篇文章講述了mysql資料庫的儲存引擎,那麼不太了解mysql資料庫儲存引擎的同學和我們引擎來看看本篇關於mysql資料庫的儲存引擎所講述的文章吧!

優化結構介紹:

類型 #意義
儲存層 儲存引擎、欄位類型選擇、範式設計
設計層 索引、快取、分割(分錶)
架構 多個mysql伺服器設置,讀寫分離(主從模式)
#sql語句層 多個sql語句都可以達到目的的情況下,要選擇效能高、速度快的sql語句
#

儲存引擎

儲存引擎:我們使用的資料是透過一定的技術儲存在資料庫當中的,資料庫的資料是以檔案形式儲存到硬碟當中的。技術不只一種,每種技術都有自己獨特的性能和功能體現。儲存資料的技術和其功能的合併就稱為「儲存引擎」。

  • 在mysql中經常使用的儲存引擎:MyisamInnodb等等。

  • mysql資料庫的儲存引擎詳細講解

    資料庫的資料儲存在不同的儲存引擎裡邊,所有的特性就與目前的儲存引擎有一定關聯。 需依照專案的需求、特性選擇不同的儲存引擎。

  • 查看mysql中支援的全部儲存引擎:
    mysql資料庫的儲存引擎詳細講解

innodb

資料庫每個資料表的資料設計三個面向資訊:表格結構、資料、索引

  • 技術特性:支援事務、行級鎖定、外鍵

mysql資料庫的儲存引擎詳細講解

#表格結構、資料、索引的實體儲存

  • #建立innodb資料表:
    mysql資料庫的儲存引擎詳細講解

  • 表格結構檔:

mysql資料庫的儲存引擎詳細講解

#該類型資料、索引的實體檔案位置:

  • 所有innodb表的資料和索引資訊都儲存在以下ibdata1檔案中

mysql資料庫的儲存引擎詳細講解

給innodb類型表的資料和索引會建立自己對應的儲存空間:

  • 預設情況下每個innodb表的資料和索引不會建立單獨的檔案儲存

mysql資料庫的儲存引擎詳細講解

  • 設定變數,讓每個innodb表有獨特的資料和索引儲存檔案:

mysql資料庫的儲存引擎詳細講解

  • 重新建立order2資料表:

mysql資料庫的儲存引擎詳細講解

  • 此時order2資料表有單獨的資料和索引儲存檔案:

mysql資料庫的儲存引擎詳細講解

  • #後期無論innodb_file_per_table的設定狀態如何變化,order2的資料和索引都有獨立的儲存位置

資料儲存順序

  • #innodb表資料的儲存是依照主鍵的順序排列每個寫入的資料。

mysql資料庫的儲存引擎詳細講解

此特點決定了該類型表的寫入操作較慢。

事務、外鍵

此類型資料表支援事務、外鍵

  • #交易:http://blog.csdn.net/change_any_time /article/details/79488020

外鍵:兩個資料表A和B,B表的主鍵是A表的普通字段,在A表看這個普通的字段就是該表的“外鍵”,外鍵的使用有”約束”。
 約束:以上兩個表,必須先寫B表的數據,再寫A表的數據,並且 A表的外鍵取值必須來之B表的主鍵id值,不能超過其範圍。

  • 真實項目裡邊很少使用“外鍵”,因為有限制。

並發性

該類型表的並發性非常高,多人同時操作該資料表,為了操作資料表的時候,資料內容不會隨便發生變化,要對資訊進行「鎖定」
 此類型鎖定等級為:行鎖。只鎖定被操作的目前記錄。

Myisam

結構、資料、索引獨立存儲,此類型的資料表 表結構、資料、索引都有獨立的儲存檔案:

  • 建立Myisam資料表
    mysql資料庫的儲存引擎詳細講解

  • 每個myisam資料表的結構、資料、索引都有獨立的儲存檔案
    mysql資料庫的儲存引擎詳細講解

# #表格結構檔*.MYD*.MYI
表檔案類型 意義
*.frm

表格資料檔

#### ##表格索引檔案###############

特點:獨立的儲存檔案可以單獨備份、還原。

資料儲存順序

  • myisam表資料的儲存是按照自然順序排列每個寫入的資料。
    mysql資料庫的儲存引擎詳細講解

    此特點決定了該類型表的寫入操作較快。

並發性

此特點決定了該類型表的寫入操作較快。

壓縮機制

如果一個資料表的資料非常多,為了節省儲存空間,需要對該表進行壓縮處理。

  • 複製目前資料表的資料:
    mysql資料庫的儲存引擎詳細講解

  • # 不斷複製使得order3資料表的資料變成200多萬條:
    mysql資料庫的儲存引擎詳細講解

  • 對應的儲存該200萬個訊息的檔案的物理大小為40多兆:
    mysql資料庫的儲存引擎詳細講解

開始壓縮order3資料表的資料

  • 壓縮工具:myisampack.exe  表名
    mysql資料庫的儲存引擎詳細講解

  • #重建索引:myisamchk.exe  -rq  表名
    mysql資料庫的儲存引擎詳細講解

  • 解壓縮工具:myisamchk.exe  –unpack  表名
    mysql資料庫的儲存引擎詳細講解


  • mysql資料庫的儲存引擎詳細講解##order3表資訊被壓縮的60%的空間:


  • mysql資料庫的儲存引擎詳細講解#order3資料表有壓縮,但是索引沒有了:


  • mysql資料庫的儲存引擎詳細講解 重建索引:


  • mysql資料庫的儲存引擎詳細講解#索引果然被重建完畢:


  • mysql資料庫的儲存引擎詳細講解刷新資料表:flush table  表名


  • mysql資料庫的儲存引擎詳細講解出現狀況:壓縮的資料表是唯讀表,不能寫資訊:



壓縮的資料表有特色:不能頻繁的寫入操作,只是內容固定的資料表可以做壓縮處理,例如(儲存全國地區資訊的資料表等)

如果必須要寫數據:就解壓縮該數據表,寫入數據,再壓縮

  • mysql資料庫的儲存引擎詳細講解解壓縮order3數據表,使得其可以寫入數據:(解壓縮同時索引自動重建)


  • mysql資料庫的儲存引擎詳細講解資料解壓縮完畢:

  • 執行flush操作,更新解壓縮後的資料:
    flush table  表名mysql資料庫的儲存引擎詳細講解;此操作會同時刪除order3.MYD.00996D46.deleted的壓縮備份檔案


  • mysql資料庫的儲存引擎詳細講解此時允許將order3繼續寫入資料:



innodb儲存引擎:適合做修改、刪除 

 Myisam儲存引擎:適合用來做查詢、寫入

Archive

#innodb儲存引擎:適合做修改、刪除  

# Myisam儲存引擎:適合做查詢、寫入

memory

###內存型儲存引擎,操作速度非常快速,比較適合儲存臨時信息,伺服器斷電,給儲存引擎的資料立即遺失。 ###

儲存引擎的選擇

Myisam和innodb

  1. #網站大多數情況下「讀取和寫入」操作非常多,適合選擇Myisam類型(例如: dedecms 、phpcms內容管理系統(新聞網站)、discuz論壇)

  2. 網站對業務邏輯有一定要求(辦公室網站、商城)適合選擇innodb (Mysql5.5預設儲存引擎都是innodb)



#

以上是mysql資料庫的儲存引擎詳細講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!