frm表結(jié)構(gòu)文件,myd表數(shù)據(jù)文件,myi表索引文件。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、筠連網(wǎng)站維護(hù)、網(wǎng)站推廣。
INNODB engine對應(yīng)的表物理存儲文件
innodb的數(shù)據(jù)庫的物理文件結(jié)構(gòu)為:
.frm文件
.ibd文件和.ibdata文件:
這兩種文件都是存放innodb數(shù)據(jù)的文件,之所以用兩種文件來存放innodb的數(shù)據(jù),是因為innodb的數(shù)據(jù)存儲方式能夠通過配置來決定是使用共享表空間存放存儲數(shù)據(jù),還是用獨(dú)享表空間存放存儲數(shù)據(jù)。
獨(dú)享表空間存儲方式使用.ibd文件,并且每個表一個ibd文件
共享表空間存儲方式使用.ibdata文件,所有表共同使用一個ibdata文件
工具/材料
Navicat
01
我們可以利用Navicat這個客戶端工具來創(chuàng)建表。
打開Navicat,連接上要操作的數(shù)據(jù)庫,點擊打開這個庫。
02
打開后,在右邊的視圖上就可以看到這個庫里所有的表了。
03
在這里右鍵點擊空白的地方,點擊菜單里的‘New Table’
04
點擊后,就會創(chuàng)建一個新的表了,我們在這里設(shè)置表的字段,比如設(shè)置了二個字段,id,和name,
05
按下快捷鍵ctrl+s就會保存這個新建的表,先輸入表的名字,點擊ok按鈕就行了。
06
在表視圖里就可以看到剛才建好的表了。
在mysql中,也出現(xiàn)了類似oracle中的表空間概念。
不過二者好像不同?具體不太清楚oracle是怎么回事。
mysql表空間是什么概念呢?
開啟了Innodb的innodb_file_per_table這個參數(shù)之后【innodb_file_per_table = 1】,也就是啟用InnoDB的獨(dú)立表空間模式,便于管理。此時,在新建的innodb表的數(shù)據(jù)庫目錄下會多出來一個.ibd這個文件。這個就是此時的數(shù)據(jù)文件了。mysql會把這個innodb表的數(shù)據(jù)存放在這個文件中。并且每個innodb表此時都會對應(yīng)這么一個ibd文件。
看官方文檔:
If innodb_file_per_table is disabled (the default), InnoDB creates tables in the system tablespace. Ifinnodb_file_per_table is enabled, InnoDB creates each new table using its own .ibd file for storing data and indexes, rather than in the system tablespace.
那么這樣做有什么好處呢?
可以實現(xiàn)單表在不同的數(shù)據(jù)庫之間移動。具體怎么移動呢?假設(shè)有兩個數(shù)據(jù)庫,一個test,一個tt。
InnoDB 默認(rèn)會將所有的數(shù)據(jù)庫InnoDB引擎的表數(shù)據(jù)存儲在一個共享空間中:ibdata1,這樣就感覺不爽,增刪數(shù)據(jù)庫的時候,ibdata1文件不會自動收縮,單個數(shù)據(jù)庫的備份也將成為問題。通常只能將數(shù)據(jù)使用mysqldump 導(dǎo)出,然后再導(dǎo)入解決這個問題。共享表空間在Insert操作上少有優(yōu)勢。其它都沒獨(dú)立表空間表現(xiàn)好。當(dāng)啟用獨(dú)立表空間時,請合理調(diào)整一 下innodb_open_files 的值。
-------------------------------------------------------------------------------
需要說明的是:
1、設(shè)置了獨(dú)立表空間之后,如果改成了共享表空間,那么,此時如果執(zhí)行表的插入操作,數(shù)據(jù)會存放在哪里呢?
對于之前已經(jīng)存在了的表,還是存放在獨(dú)立表空間。對于新建的表,就會存放在共享表空間了。
2、如果一開始用了獨(dú)立表空間,后來改了innodb_file_per_table變量的值,改成獨(dú)立表空間了,那么數(shù)據(jù)如何存儲?
對于已經(jīng)存在了的innodb引擎的表來說,數(shù)據(jù)還是存放在共享表空間的,而此時如果創(chuàng)建了新的表,那么就會在數(shù)據(jù)庫的目錄中多出一個.ibd的文件用于存儲這個新表的數(shù)據(jù)。
總結(jié)上面的1、2,就是:原來的還是按照原來的方式存儲。新的表按照新的規(guī)則來存儲。
表空間大?。?dms數(shù)據(jù)庫管理表空間的大小為 pagesize * 所有容器大小總和; sms系統(tǒng)管理表空間的最大空間可以理解成 “容器路徑” 所在文件系統(tǒng)的大小
緩沖池大?。?就是 創(chuàng)建語句中的 size*pagesize~