BLACKHOLE存儲引擎就像“黑洞”一樣,它接收數(shù)據(jù)但丟棄它而不是存儲它。取回總是返回空集: mysql> CREATE TABLE test(i INT, c CHAR(10)) ENGINE = BLACKHOLE; Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO test VALUES(1,'record one'),(2,'record two'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM test; Empty set (0.00 sec) 當你創(chuàng)建一個BLACKHOLE表的時候,服務(wù)器在數(shù)據(jù)庫目錄創(chuàng)建一個表定義文件。文件用表的名字開頭,并且有一個.frm擴展名。沒有其它文件關(guān)聯(lián)到這個表格。 BLACKHOLE存儲引擎支持所有種類的索引。 要允許這個存儲引擎,在你建立MySQL之時使用--with-blackhole-storage-engine選項來configure。BLACKHOLE存儲引擎在MySQ供應(yīng)的服務(wù)器二進制版里可以找到;通過查看SHOW ENGINES或SHOW VARIABLES LIKE 'have%'的輸出,你可以確定你的版本是否支持這個引擎。 到BLACKHOLE表的插入不存儲任何數(shù)據(jù),但如果二進制日志被允許,SQL語句被寫入日志(并被復(fù)制到從服務(wù)器)。這可以有用幫助地作為重復(fù)器或過濾器機制。例如,假設(shè)你的應(yīng)用需要從服務(wù)器側(cè)的過濾規(guī)則,但傳輸所有二進制日志數(shù)據(jù)到從服務(wù)器首先導(dǎo)致過多交通的結(jié)果。在這種情況下,在主服務(wù)器主機上建立一個偽從服務(wù)器進程,它的存儲引擎是BLACKHOLE,描述如下: 主服務(wù)器寫它的二進制日志。偽mysqld進程作為從服務(wù)器,應(yīng)用期望的replicate-do和replicate-ignore規(guī)則的合并,并且寫一個新的,被過濾的屬于它自己的二進制日志 。(請參閱6.8節(jié),“復(fù)制啟動選項”)。這個已過濾日志被提供給從服務(wù)器。 既然偽進程不確實地存儲任何數(shù)據(jù),只有很小的由在復(fù)制主服務(wù)器主機上額外的mysqld進程招致的處理開支。這個類型的建立可以用額外復(fù)制從服務(wù)器來重復(fù)。 其它可能對BLACKHOLE存儲引擎的使用包括: · 轉(zhuǎn)儲文件語法的驗證。 · 來自二進制日志記錄的開銷測量,通過比較允許二進制日志功能的BLACKHOLE的性能與禁止二進制日志功能的BLACKHOLE的性能。 · 因為BLACKHOLE本質(zhì)上是一個“no-op” 存儲引擎,它可能被用來查找與存儲引擎自身不相關(guān)的性能瓶頸。
|