在mysql中,可以利用show語句配合datadir來查看表數據存放在哪里,datadir是數據目錄對應的一個系統變量,語法為“show variables like ‘datadir’;”;通過該命令可以查看數據目錄存儲的具體位置。
本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
mysql的表怎么看存在哪里了
我們都知道,MySQL需要支持持久化,它把數據存儲在磁盤中,在操作系統中會把管理磁盤的設備叫做文件系統,對于我們研發而言,我們大多數只會關心MySQL的索引、SQL性能優化,而對于數據是怎么存儲、存在哪里這類問題就像是一個黑盒。
1 數據存儲在文件系統
我們常用的存儲引擎InnoDB都是把表存儲在文件系統上的(即磁盤),當需要讀取數據時,InnoDB會從文件系統中把數據讀取出來返回給我們;當需要寫入數據時,InnoDB又會把數據寫回到文件系統中,那么InnoDB存儲引擎的數據是如何在文件系統中存儲的呢?
2 MySQL數據目錄
MySQL服務器在啟動時,會從文件系統的某個目錄中加載文件,在運行時產生的數據也會寫入存儲到文件系統的這個目錄中,這個目錄就是數據目錄
2.1 MySQL數據目錄在哪
MySQL數據目錄對應一個系統變量 datadir , 可以通過該命令查看數據目錄存儲的具體位置:
show?variables?like?'datadir';
也就是說我本機的MySQL的數據目錄就在/usr/local/mysql/data/
3 數據目錄的結構
我們知道,MySQL在運行過程中會產生的數據包括:我們創建的數據庫、表、視圖、服務器等,此外還有MySQL為了程序更好運行而創建的額外數據,接下來,我們具體來看下數據目錄下的內容~
3.1 數據庫在文件系統中的表示
當我們執行create database mydb 語句來創建一個數據庫時,MySQL會做兩個工作:
在數據目錄下創建一個和數據庫名稱同名的文件夾mydb
在mydb下創建一個名為db.opt的文件,這個文件中包含了該數據庫的各種屬性,比如數據庫的字符集、比較規則之類的
當前,通過執行show databases命令,可以查看到
我本機創建了的數據庫有:
然后我進入目錄/usr/local/mysql/data/ 下查看是不是會有上面的這些文件夾:
的確,高亮的文件夾就一一對應了MySQL中的數據庫。不過如果仔細看的話,information_schema其實是不存在的,由于它比較特殊,所以MySQL的設計者對它的實現進行了特殊對待,因此沒有對應的數據庫目錄。
推薦學習:mysql視頻教程