Chinaunix首页 | 论坛 | 博客
  • 博客访问: 442690
  • 博文数量: 161
  • 博客积分: 5005
  • 博客等级: 上校
  • 技术积分: 1090
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-20 16:38
文章分类

全部博文(161)

文章存档

2011年(21)

2010年(33)

2009年(89)

2008年(18)

我的朋友

分类: Mysql/postgreSQL

2011-03-27 15:03:14

BLACKHOLE存储引擎就像“黑洞”一样,它接收数据但丢弃它而不是存储它。取回总是返回空集:

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,描述如下:

Replication using BLACKHOLE
        for filtering

主服务器写它的二进制日志。伪mysqld进程作为从服务器,应用期望的replicate-do和replicate-ignore规则的合并,并且写一个新的,被过滤的属于它自己的二进制日志 。(请参阅6.8节,“复制启动选项”)。这个已过滤日志被提供给从服务器。

既然伪进程不确实地存储任何数据,只有很小的由在复制主服务器主机上额外的mysqld进程招致的处理开支。这个类型的建立可以用额外复制从服务器来重复。

其它可能对BLACKHOLE存储引擎的使用包括:

·         转储文件语法的验证。

·         来自二进制日志记录的开销测量,通过比较允许二进制日志功能的BLACKHOLE的性能与禁止二进制日志功能的BLACKHOLE的性能。

·         因为BLACKHOLE本质上是一个“no-op” 存储引擎,它可能被用来查找与存储引擎自身不相关的性能瓶颈。

阅读(1162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~