BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears)show engines;
有这么一项,这么个存储引擎有什么意义呢?

解决方案 »

  1.   

    这是linux下的一个黑洞引擎吧,就是他不存储任何数据。你可以创建个表以那个引擎,看看都能做什么操作。我只是猜得....
      

  2.   

    参考:
    http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#blackhole-storage-engineBLACKHOLE存储引擎就像“黑洞”一样,它接收数据但丢弃它而不是存储它。取回总是返回空集: 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)当你创建一个BLACKHOLE表的时候,服务器在数据库目录创建一个表定义文件。文件用表的名字开头,并且有一个.frm扩展名。没有其它文件关联到这个表格。 BLACKHOLE存储引擎支持所有种类的索引。 要允许这个存储引擎,在你建立MySQL之时使用--with-blackhole-storage-engine选项来configure。BLACKHOLE存储引擎在MySQ供应的服务器二进制版里可以找到;通过查看SHOW ENGINES或SHOW VARIABLES LIKE 'have%'的输出,你可以确定你的版本是否支持这个引擎。 到BLACKHOLE表的插入不存储任何数据,但如果二进制日志被允许,SQL语句被写入日志(并被复制到从服务器)。这可以有用帮助地作为重复器或过滤器机制。例如,假设你的应用需要从服务器侧的过滤规则,但传输所有二进制日志数据到从服务器首先导致过多交通的结果。在这种情况下,在主服务器主机上建立一个伪从服务器进程,它的存储引擎是BLACKHOLE,描述如下: 主服务器写它的二进制日志。伪mysqld进程作为从服务器,应用期望的replicate-do和replicate-ignore规则的合并,并且写一个新的,被过滤的属于它自己的二进制日志 。(请参阅6.8节,“复制启动选项”)。这个已过滤日志被提供给从服务器。 既然伪进程不确实地存储任何数据,只有很小的由在复制主服务器主机上额外的mysqld进程招致的处理开支。这个类型的建立可以用额外复制从服务器来重复。 其它可能对BLACKHOLE存储引擎的使用包括: ·         转储文件语法的验证。 ·         来自二进制日志记录的开销测量,通过比较允许二进制日志功能的BLACKHOLE的性能与禁止二进制日志功能的BLACKHOLE的性能。 ·         因为BLACKHOLE本质上是一个“no-op” 存储引擎,它可能被用来查找与存储引擎自身不相关的性能瓶颈。