1、原題
1.1、原題
1.2、答案
D、F
2、題目解析
2.1、題干解析
本題主要考察MySQL表空間的相關(guān)知識(shí)。
2.2、選項(xiàng)解析
- 二進(jìn)制日志單獨(dú)保存在二進(jìn)制日志文件中,所以選項(xiàng)A錯(cuò)誤。
- 通用表空間是需要單獨(dú)創(chuàng)建的,不被包含在系統(tǒng)表空間中,所以選項(xiàng)B錯(cuò)誤。
- 如果MySQL配置了file-per-table參數(shù),則系統(tǒng)表空間就不是創(chuàng)建新表的默認(rèn)位置,所以選項(xiàng)C錯(cuò)誤。
- MySQL有系統(tǒng)表空間、通用表空間和file-per-table表空間三種。通用表空間和file-per-table表空間只保存表的索引和數(shù)據(jù),undo日志仍然在系統(tǒng)表空間保存。如果表用的不是file-per-table文件也不是通用表空間,那么表的數(shù)據(jù)和索引也保存在系統(tǒng)表空間中。除了表的數(shù)據(jù)和索引,系統(tǒng)表空間還保存了InnoDB數(shù)據(jù)字典、doublewrite buffer(雙寫緩沖區(qū))、change buffer(變更緩沖區(qū))和undo logs(撤銷日志)的存儲(chǔ)區(qū)域,其中undo日志也是可以指定另外文件單獨(dú)保存,但默認(rèn)保存在系統(tǒng)表空間。所以選項(xiàng)D、F正確。
- redo log默認(rèn)保存在iblog文件里,所以選項(xiàng)E錯(cuò)誤。
3、知識(shí)點(diǎn)
3.1、知識(shí)點(diǎn)1:InnoDB System Tablespace系統(tǒng)表空間
- 系統(tǒng)表空間的存儲(chǔ)內(nèi)容:
- InnoDB數(shù)據(jù)字典、doublewrite buffer(雙寫緩沖區(qū))、change buffer(變更緩沖區(qū))和undo logs(撤銷日志)的存儲(chǔ)區(qū)域。
- 如果表用的不是file-per-table文件也不是通用表空間,那么表的數(shù)據(jù)和索引也保存在系統(tǒng)表空間中。
- 系統(tǒng)表空間數(shù)據(jù)文件的大小、數(shù)量和位置:系統(tǒng)表空間數(shù)據(jù)文件的大小、數(shù)量和尾椎由innodb_data_file_path啟動(dòng)選項(xiàng)定義。系統(tǒng)表空間可以有一個(gè)或多個(gè)數(shù)據(jù)文件。默認(rèn)情況下,在數(shù)據(jù)目錄中創(chuàng)建一個(gè)名為ibdata1的系統(tǒng)表空間數(shù)據(jù)文件。
官方參考文檔
3.2、知識(shí)點(diǎn)2:InnoDB General Tablespaces通用表空間
通用表空間是一個(gè)共享的InnoDB表空間,使用CREATE TABLESPACE語法創(chuàng)建,提供以下功能。文章來源:http://www.zghlxwxcb.cn/news/detail-400334.html
- 多表數(shù)據(jù)和索引的存儲(chǔ):與系統(tǒng)表空間類似,通用表空間是共享表空間,能夠存儲(chǔ)多個(gè)表的數(shù)據(jù)和索引。
- 節(jié)省內(nèi)存:通用表空間相比file-per-table表空間有一個(gè)潛在的內(nèi)存優(yōu)勢(shì),即相同數(shù)量的表消耗更少的內(nèi)存。
- 獨(dú)立于數(shù)據(jù)目錄的存儲(chǔ):通用表空間的數(shù)據(jù)文件可以放在相對(duì)于或獨(dú)立于MySQL數(shù)據(jù)目錄的目錄中,這樣允許你單獨(dú)管理關(guān)鍵表的性能,為特定的表設(shè)置RAID或DRBD,或者將表綁定到特定的磁盤上。
- 使用方法1:在數(shù)據(jù)目錄中創(chuàng)建一個(gè)普通表空間。
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;
- 使用方法2:在數(shù)據(jù)目錄之外的目錄中創(chuàng)建一個(gè)普通表空間。
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE '/my/tablespace/directory/ts1.ibd' Engine=InnoDB;
官方參考文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-400334.html
4、總結(jié)
- MySQL有系統(tǒng)表空間、通用表空間和file-per-table表空間三種。通用表空間和file-per-table表空間只保存表的索引和數(shù)據(jù),undo日志仍然在系統(tǒng)表空間保存。如果表用的不是file-per-table文件也不是通用表空間,那么表的數(shù)據(jù)和索引也保存在系統(tǒng)表空間中。
- 系統(tǒng)表空間的存儲(chǔ)內(nèi)容:
- InnoDB數(shù)據(jù)字典、doublewrite buffer(雙寫緩沖區(qū))、change buffer(變更緩沖區(qū))和undo logs(撤銷日志)的存儲(chǔ)區(qū)域。
- 如果表用的不是file-per-table文件也不是通用表空間,那么表的數(shù)據(jù)和索引也保存在系統(tǒng)表空間中。
- 系統(tǒng)表空間數(shù)據(jù)文件的大小、數(shù)量和位置:系統(tǒng)表空間數(shù)據(jù)文件的大小、數(shù)量和尾椎由innodb_data_file_path啟動(dòng)選項(xiàng)定義。系統(tǒng)表空間可以有一個(gè)或多個(gè)數(shù)據(jù)文件。默認(rèn)情況下,在數(shù)據(jù)目錄中創(chuàng)建一個(gè)名為ibdata1的系統(tǒng)表空間數(shù)據(jù)文件。
- 通用表空間是一個(gè)共享的InnoDB表空間,需要使用CREATE TABLESPACE語法進(jìn)行顯式的創(chuàng)建,類似于系統(tǒng)表空間,相比file-per-table的優(yōu)點(diǎn)在于可以存儲(chǔ)多張表因此節(jié)省內(nèi)存,相比系統(tǒng)表空間的優(yōu)點(diǎn)在于獨(dú)立于數(shù)據(jù)目錄的存儲(chǔ)。
- 二進(jìn)制日志、redo日志默認(rèn)都有單獨(dú)的文件保存,undo日志默認(rèn)保存在系統(tǒng)表空間,但也可以單獨(dú)存儲(chǔ)到指定文件中。
到了這里,關(guān)于MySQL OCP888題解075-表空間和日志文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!