<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
文章部分來源於黑馬Mysql視訊教學當中!
如下圖,Mysql總共分為了四層:
引擎就是發動機,引擎就是一個機器的核心部分,不同的引擎有著不同的應用場景,例如飛機有飛機的引擎,火箭有火箭的引擎,他們之間是沒有好壞之分的,我們只需要在合適的場景使用合適的引擎就可以了。
Mysql 儲存引擎就是儲存資料、建立索引、更新/查詢資料等技術的實現方式。儲存引擎是基於表的,而不是基於庫的,所以儲存引擎也可被稱為表型別。
(1)建立表的時候可以 通過ENGINE來指定儲存引擎:
(2)檢視當前資料庫支援的儲存引擎:
建立表的時候假如不指定引擎,預設就是InnoDB,在mysql早期的時候預設儲存引擎是MyISAM。其中comment列就是官方對當前儲存引擎的特性描述!
(3)檢視某張表使用的儲存引擎
如下sql可以檢視當前表結構:
show create table 表名;
ENGINE
:代表的是當前表的儲存引擎AUTO_INCREMENT
:代表的是自增id目前已經增到多少了CHARESET
:代表的是字元集COLLATE
:代表的是排序規則這裡重點解釋三個儲存引擎,同時也是面試當中經常會問的!
InnoDB是一種兼顧高可靠性和高效能的通用儲存引擎,在MySQL5.5之後,InnoDB是預設的MySQL儲存引擎。
(1)特點:
(2)不管是哪個引擎,資料肯定都是儲存在硬碟的,我們可以通過以下命令檢視儲存位置:
SHOW VARIABLES LIKE 'datadir';
根據查詢的位置開啟,然後會發現每個資料庫就是一個資料夾
然後任意開啟一個庫進去會發現都是frm檔案!
frm檔案是用來儲存每個資料表的後設資料資訊,包括表結構的定義等。根本沒有找到對應的資料檔案,這是為什麼呢,繼續往下看!
(3)儲存檔案:
正常innodb引擎儲存表的時候會有兩個檔案,一個是frm檔案,一個是ibd檔案。
Xxx.ibd: xxx代表的是表名, innoDB引擎的每張表都會對應這樣一個表空間檔案,儲存該表的資料和索引。
可是我們在上面並沒有看到ibd檔案,這是因為mysql將儲存方式分為了兩種:
共用表空間:所謂共用表空間,就是所有資料庫的表資料都存在了一個地方獨立表空間:每個表都對應了一個ibd檔案,儲存資料
可以通過innodb_file_per_table引數來開啟獨立表空間,mysql8.0預設是開啟了獨立表空間,其餘貌似預設都是關閉的。
innodb_file_per_table 的簡要說明:
在很久很久以前也就是說還沒有innodb_file_per_table 的那個年代,所有的innodb表的資料都是儲存在共用表空間,在有了innodb_file_per_table引數後innodb可以把每個表的資料單獨儲存。單獨儲存有兩方面的優勢一個是方便管理,二個是提長效能。
show global variables like 'innodb_file_per_table'; -- 檢視 set @@global.innodb_file_per_table=off; -- 關閉 set @@global.innodb_file_per_table=on; -- 開啟innodb_file_per_table
innodb_file_per_table引數,mysql8.0預設是開啟的,如果開啟就代表的是每一張表對應了一個表空間。我的mysql是5.5版本的,所以根本沒有開啟,沒有開啟著意味著所有資料共用了一個表空間(也可以稱為資料檔案)。
(4)共用表空間檔案上哪找?
預設設定下有一個初識大小為10M,名為ibdata1的檔案,預設的表空間檔案(tablespace file)。通過引數innodb_data_file_path可以設定檔案
show global variables like 'innodb_data_file_path'; #檢視表空間檔案設定
解釋ibdata1:10M:autpextend
:代表的是表空間檔名為ibdata1,然後初始大小為10M,檔案可以自動增長(autoextend)。
(5)通過以上命令我們知道表空間檔名稱為ibdata1,那麼他儲存在什麼地方?
他儲存在我們安裝mysql的時候指定的安裝目錄下,如果忘記安裝目錄了,可以通過全域性搜檔名稱,來尋找檔案!
整個mysql所有庫的資料都存放在下面檔案當中!
(6)可以修改共用表空間設定:
表示將/db/ibdata1和/dr2/db/ibdata2兩個檔案來組成表空間,其中ibadata1的大小為2000M,檔案ibdata2的大小為2000MB,如果用完了這2000MB,該檔案可以自動增長(autoextend)。
innodb_data_file_path=/db/ibdata1:2000M;/dr2/db/ibdata2:2000M:autoextend
(7)將innodb_file_per_table開啟
set @@global.innodb_file_per_table=on; -- 開啟
開啟後他不會將歷史的表已經共用的給單獨獨立起來,而是指的以後在新建表的時候,那麼新建的表就是單獨的表空間。
開啟後新建了一個test表:
通過MySQL的 ibd2sdi
工具可以解析ibd檔案,可以解析成json資料。
(8)innodb儲存結構:
說是innodb儲存結構,不如說是ibd檔案的儲存結構!
page頁是innodb儲存結構當中最小的單元
具體瞭解儲存結構的話內容有很多,後續寫一篇專門分析儲存結構的文章!
MyISAM是MySQL早期的預設儲存引擎。這也就是經常面試問Innodb和MyISAM區別的原因!
(1)特點:
(2)儲存檔案:
一個表對應了三個檔案,而innodb對應了兩個檔案!
MEMORY引擎的表資料是儲存在記憶體中的,由於受到硬體問題、或斷電問題的影響,只能將這些表作為臨時表或快取使用。
(1)特點:
(2)儲存檔案:
xxx.sdi:儲存表結構資訊
在選擇儲存引擎時,應該根據應用系統的特點選擇合適的儲存引擎。對於複雜的應用系統,還可以根據實際情況選擇多種儲存引擎進行組合。
在問你InnoDB和MyISAM的區別的時候,只需要圍繞這三點來回答:事務、外來鍵、行級鎖
到此這篇關於對儲存引擎瞭解多少的文章就介紹到這了,更多相關Mysql儲存引擎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45