數(shù)據(jù)庫文件自己能否變化的問題,我的答案是既可以,又不可以。
有人會(huì)說了這不是自相矛盾么?
且聽我慢慢道來
- 數(shù)據(jù)庫作為一個(gè)存儲(chǔ)介質(zhì)或者容器,如果說沒有人為的介入,它自己是不會(huì)變化的。因?yàn)樗幌裎覀兇笞匀坏膭?dòng)植物,它沒有一個(gè)個(gè)細(xì)胞組成,不屬于生物,不存在主觀上自我改變的行為條件。所以在這個(gè)角度來說,答案是不可以。
- 相反,如果人為的介入,它肯定是可以發(fā)生變化的。
就拿我們最常用的mysql數(shù)據(jù)庫舉例說明吧
先普及一下小知識(shí):Mysql是由瑞典的一個(gè)MySQLab公司研發(fā)的關(guān)系型數(shù)據(jù)庫。后被sun公司收購。而sun公司又被Oracle收購。所以現(xiàn)在Oracle和MySQL數(shù)據(jù)庫都屬于oracle公司所有。
在mysql的配置文件/etc/my.cnf中有一個(gè)配置屬性是datadir,它就是存放和mysql數(shù)據(jù)庫同名的目錄。
mysql數(shù)據(jù)庫文件包含它創(chuàng)建的數(shù)據(jù)庫的文件和用到的數(shù)據(jù)庫引擎創(chuàng)建的數(shù)據(jù)文件。
這些文件有.frm格式的文件。它儲(chǔ)存的是數(shù)據(jù)庫表的框架結(jié)構(gòu)。每個(gè)表對(duì)一個(gè)同名的該后綴文件。
而對(duì)于MySQL而言,有9種數(shù)據(jù)庫引擎。我們常用的就兩種:innodb和myisam
兩者的區(qū)別在這里我暫且不過多描述了,感興趣的可以自行搜索哈。
以下是拓展知識(shí)
Innodb:有.ibd,ibdata1、ibdata2,ib_logfile1、ib_logfile2
其中第一個(gè)是單表表空間文件,每個(gè)表使用一個(gè)表空間文件存放用戶數(shù)據(jù)庫表數(shù)據(jù)和索引。
第二三是innodb數(shù)據(jù)庫系統(tǒng)表空間文件,存儲(chǔ)InnoDB系統(tǒng)信息和用戶數(shù)據(jù)庫表數(shù)據(jù)和索引,所有表是共用的。其中的1和2只是舉例說明,實(shí)際可能還存在34。
最后倆是日志文件。
MyISAM:
.MYD是MyData的意思,代表表數(shù)據(jù)文件
.MYI是MyIndex的意思,代表是索引文件
.log就是日志文件了
針對(duì)MySQL選用的數(shù)據(jù)庫引擎不一樣,它產(chǎn)生的數(shù)據(jù)庫文件也是不一樣的。
總結(jié)一下
在操作MySQL數(shù)據(jù)庫的數(shù)據(jù)或者改變表結(jié)構(gòu),操作索引等勢必會(huì)導(dǎo)致數(shù)據(jù)庫文件變化。
希望回答能幫到你,碼字不易,!
晚安