mysql创建独立表空间_InnoDB独立表空间
在查看MySQL的數(shù)據(jù)庫(kù)文件的時(shí)候會(huì)發(fā)現(xiàn),MyISAM存儲(chǔ)引擎類(lèi)型的表會(huì)有三個(gè)文件,*.frm,*.MYD,*.MYI,但是InnoDB存儲(chǔ)引擎的文件只有一個(gè)*.frm,原來(lái)是因?yàn)镮nnoDB沒(méi)有開(kāi)啟獨(dú)立表空間,執(zhí)行如下命令可以看到:mysql> show variables like '%per%';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_file_per_table | OFF|+-----------------------+-------+1 row in set (0.00 sec)
導(dǎo)致InnoDB的所有表的數(shù)據(jù)都存儲(chǔ)在sys/var/lib/mysql/ibdata1文件中,我這個(gè)文件已經(jīng)有10G了,這樣在對(duì)InnoDB的單個(gè)表做冷備份的時(shí)候就會(huì)備份很多無(wú)用的數(shù)據(jù),所以需要開(kāi)啟獨(dú)立表空間。
于是我這樣做mysql> set global innodb_file_per_table='ON';ERROR 1238 (HY000): Variable 'innodb_file_per_table' is a read only variable
原因應(yīng)該是這個(gè)參數(shù)的含義是針對(duì)InnoDB存儲(chǔ)引擎的,不能在一個(gè)會(huì)話(huà)中進(jìn)行設(shè)置,于是查閱資料后
修改my.cnf,在[mysqld]模塊下添加參數(shù),這里注意值是1而不是ON,我一開(kāi)始設(shè)成了ON,結(jié)果就是沒(méi)成功innodb_file_per_table=1
重啟MySQL,再看一下這個(gè)變量的值mysql> show variables like '%per%';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| innodb_file_per_table | ON|+-----------------------+-------+1 row in set (0.00 sec)
可以看到這個(gè)變量已經(jīng)被設(shè)置成功了
在這里我開(kāi)始往表里面插入數(shù)據(jù),想看一下怎么獨(dú)立存儲(chǔ)的,可是在mysql目錄下執(zhí)行命令ll -rt
發(fā)現(xiàn)-rwxrwx--- 1 mysql mysql 102110330884月 27 16:01 ibdata1-rwxrwx--- 1 mysql mysql 52428804月 27 16:01 ib_logfile0-rwxrwx--- 1 mysql mysql 52428804月 27 16:01 ib_logfile1
這三個(gè)文件是隨著插入語(yǔ)句的執(zhí)行而實(shí)時(shí)更新時(shí)間的,但是大小卻沒(méi)變。為什么?難道說(shuō)是因?yàn)閿?shù)據(jù)在緩存里,這樣的話(huà)修改時(shí)間就不會(huì)不變,想到之前看的《MySQL技術(shù)內(nèi)幕》中說(shuō)的,應(yīng)該是重復(fù)利用之前的頁(yè)來(lái)存儲(chǔ)了,回去翻書(shū)確認(rèn)一下。MARK
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的mysql创建独立表空间_InnoDB独立表空间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JAVA实现把指定文件夹下的所有文件压缩
- 下一篇: linux c 调用python_C程序