当前位置: 首页 > 工具软件 > Blackhole > 使用案例 >

MySQL 的blackhole存储引擎

贺恩
2023-12-01

认识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




 类似资料: