您的位置:首页 > 数据库 > MySQL

MySQL 的blackhole存储引擎

2017-05-18 10:06 141 查看
认识MySQL的blackhole引擎是在学习MySQL的复制拓扑中遇到的。出现场景是:为了避免在分发主库上做具体实际的查询,可以将它的表修改为blackhole存储引擎。

1、什么是blackhole引擎

创建一个blackhole的表时,服务器server在数据库目录创建一个表定义文件。文件用表的名字开头,以.frm作为扩展名。没有其他文件关联到这个表。blackhole表不存储任何数据。但是如果MySQL 开启了二进制日至,则SQL语句会被记录到二进制日志中(并被复制到从服务器)。这样使用blackhole存储引擎的MySQL可以作为主从复制中的中断重复器或者在其上面添加过滤器。

2、如果设定一个的表的存储引擎为blackhole引擎

和其他引擎设置一样,在建表时设置即可。如下

create table test (
rows1 int ,
rows2 char(3)
)engine=blackhole;

3、blackhole引擎的优缺点
优点:分发主库上使用blackhole表,可以支持更多的备库。虽然会在分发主库执行查询,但是其代价非常小,因为blackhole表中没有任何数据。

缺点:该表存在Bug, 例如在某些情况下会忘记将自增ID写入到二进制日志里面。所以要小心使用blackhole表。

4、实例分析:blackhole并未存储数据

建表:

create table test (
rows1 int ,
rows2 char(3)
)engine=blackhole;

插入数据:
insert into test values(4,'aaa'),(5,'bbb'),(6,'ccc')插入结果:
affected rows : 3


查询数据:
select * from test;查询结果:
No record
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: