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