<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      mysql數據庫的存儲引擎詳細講解

      [摘要]本篇文章講述了mysql數據庫的存儲引擎,那么不太了解mysql數據庫存儲引擎的同學和我們引擎來看看本篇關于mysql數據庫的存儲引擎講述的文章吧!優化結構介紹:類型含義存儲層存儲引擎、字段類型選擇...
      本篇文章講述了mysql數據庫的存儲引擎,那么不太了解mysql數據庫存儲引擎的同學和我們引擎來看看本篇關于mysql數據庫的存儲引擎講述的文章吧!

      優化結構介紹:

      類型含義
      存儲層存儲引擎、字段類型選擇、范式設計
      設計層索引、緩存、分區(分表)
      架構多個mysql服務器設置,讀寫分離(主從模式)
      sql語句層多個sql語句都可以達到目的的情況下,要選擇性能高、速度快的sql語句

      存儲引擎

      存儲引擎:我們使用的數據是通過一定的技術存儲在數據庫當中的,數據庫的數據是以文件形式存儲到硬盤當中的。技術不只一種,并且每種技術有自己獨特的性能和功能體現。存儲數據的技術和其功能的合并就稱為“存儲引擎”。

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

      • 這里寫圖片描述

        數據庫的數據存儲在不同的存儲引擎里邊,所有的特性就與當前的存儲引擎有一定關聯。 需要按照項目的需求、特點選擇不同的存儲引擎。

      • 查看mysql中支持的全部存儲引擎:
        這里寫圖片描述

      innodb

      數據庫每個數據表的數據設計三方面信息:表結構、數據、索引

      • 技術特點:支持事務、行級鎖定、外鍵

      這里寫圖片描述

      表結構、數據、索引的物理存儲

      • 創建一個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數據表
        這里寫圖片描述

      • 每個myisam數據表的 結構、數據、索引 都有獨立的存儲文件
        這里寫圖片描述

      表文件類型含義
      *.frm表結構文件
      *.MYD表數據文件
      *.MYI

      表索引文件

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

      數據存儲順序

      • 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存儲引擎:適合做修改、刪除
      Myisam存儲引擎:適合做查詢、寫入

      Archive

      innodb存儲引擎:適合做修改、刪除
      Myisam存儲引擎:適合做查詢、寫入

      memory

      內存型存儲引擎,操作速度非常快速,比較適合存儲臨時信息,服務器斷電,給存儲引擎的數據立即丟失。

      存儲引擎的選擇

      Myisam和innodb

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

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

      以上就是mysql數據庫的存儲引擎詳細講解的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清