MySQL:BlackHole

顾名思义BlackHole就是黑洞,只有写入没有输出.现在就来实验一下吧

首先查看一下MySQL支持的存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

创建一个BlackHole类型的表
mysql> create table test(id int, name char(10)) engine=blackhole ;  
Query OK, 0 rows affected (0.02 sec)

mysql> desc test
    -> ;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | YES  |     | NULL    |       |
| name  | char(10) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> alter table test add primary key (id);
Query OK, 0 rows affected (0.50 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc test;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | NO   | PRI | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> show create table test\G
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` char(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=BLACKHOLE DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> insert into test values(1,'ni') ;
Query OK, 1 row affected (0.03 sec)

mysql> insert into test values(2,'wo') ;  
Query OK, 1 row affected (0.01 sec)

mysql> insert into test values(3,'ta') ;  
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;
Empty set (0.00 sec)

mysql> system ls /mysql/data/test
db.opt  test.frm  test.ibd
mysql> exit

从上面的例子中可以看出使用BLACKHOLE存储引擎的表不存储任何数据,如果mysql启用了二进制日志,SQL语句被写入日志(并被复制到从服务器)。这样使用BLACKHOLE存储引擎的mysqld可以作为主从复制中的中转站或在其上面添加过滤器机制。例如,假设你的应用需要从服务器侧的过滤规则,但传输所有二进制日志数据到从服务器会导致较大的网络流量。在这种情况下,在主服务器主机上建立一个伪从服务器进程。

主服务器的操作写入二进制日志,伪mysqld进程作为从服务器,在伪mysqld进程上配置replicate-do和replicate-ignore规则,并且写一个新的,被过滤的二进制日志 。这个已过滤日志被提供给其他真正的从服务器。因为伪进程不存储任何数据,只消耗很小的额外的mysqld进程资源。这个类型的建立可以用额外复制从服务器来重复。
 当然如果配置一主多从的话,多个从服务器会在主服务器上分别开启自己相对应的线程,执行binlog dump命令而且多个此类进程并不是共享的。为了避免因多个从服务器同时请求同样的事件而导致主机资源耗尽,可以单独建立一个伪的从服务器或者叫分发服务器:

其它可能对BLACKHOLE存储引擎的使用包括:
1 转储文件语法的验证。
2 来自二进制日志记录的开销测量,通过比较允许二进制日志功能的BLACKHOLE的性能与禁止二进制日志功能的BLACKHOLE的性能。
3  因为BLACKHOLE本质上是一个“no-op” 存储引擎,它可能被用来查找与存储引擎自身不相关的性能瓶颈。


Inserts into a BLACKHOLE table do not store any data, but if statement based binary logging is enabled, the SQL statements are logged and replicated to slave servers. This can be useful as a repeater or filter mechanism.

Note

  When using the row based format for the binary log, updates and deletes are skipped, and neither logged nor applied. For this reason, you   should use STATEMENT for the binary logging format, and not ROW or MIXED.

参考:

http://control.blog.chinaunix.net/uid-10661836-id-4033704.html

http://dev.mysql.com/doc/refman/5.5/en/blackhole-storage-engine.html

转载于:https://www.cnblogs.com/xiaotengyi/p/3641916.html

MySQL:BlackHole相关推荐

  1. mysql blackhole缺点_MySQL:BlackHole

    MySQL:BlackHole 顾名思义BlackHole就是黑洞,只有写入没有输出.现在就来实验一下吧 首先查看一下MySQL支持的存储引擎 mysql> show engines; +--- ...

  2. MySQL BlackHole 存储引擎使用

    BlackHole "黑洞",高大上的样子,但它 No transaction,no xa,no savepoint,这些都没有阻挡他的应用:show engines 中会显示 b ...

  3. mysql blackhole引擎_MySQL BlackHole引擎

    概念 像MyISAM.InnoDB,BlackHole是另一种MySQL引擎,从字面意思来看, 其表现就像一个黑洞,只进不出,进来就消失.换句话说, 任何往其中写的数据都将丢失,有点像Linux的/d ...

  4. mysql blackhole引擎_【原创】MySQL blackhole 存储引擎简记

    The BLACKHOLE storage engine acts as a"black hole"that accepts data but throws it away and ...

  5. mysql blackhole缺点_MySQL的存储引擎之Blackhole

    Blackhole,黑洞,初见这个词,一下就想到了相对论中的那个能吞噬一切,连光都无法逃脱的黑洞.MySQL的Blackhole引擎会怎么样呢?看看官方文档: The BLACKHOLE storag ...

  6. mysql blackhole缺点_MySQL BLACKHOLE存储引擎_编程学问网

    15.10.BLACKHOLE存储引擎 BLACKHOLE存储引擎就像"黑洞"一样,它接收数据但丢弃它而不是存储它.取回总是返回空集: mysql> CREATE TABLE ...

  7. mysql blackhole引擎_【原创】MySQL blackhole 存储引擎简记-阿里云开发者社区

    The BLACKHOLE storage engine acts as a"black hole"that accepts data but throws it away and ...

  8. mysql blackhole缺点_【MySql】 BlackHole :黑洞引擎-阿里云开发者社区

    BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储! 如何安装: 在安装MySQL时使用带有--with-blackhole-storage-engine选项 ...

  9. Mysql blackhole(黑洞引擎)

    BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储! 如何安装:        在安装MySQL时使用带有--with-blackhole-storage-e ...

  10. mysql rand_mysql的rand函数

    项目中需要动态随机生成一些固定位数的随机数,如8位,5位等. 之前看到的写法是这样 ROUND(ROUND(RAND(),5)*100000) 这样写不太准确,有几率出现4位的情况,Rand() 函数 ...

最新文章

  1. UI设计不够高端?这5个小技巧可以试试
  2. 项目使用mysql接收emoji表情
  3. RAC实例 表空间 维护
  4. 图解TCP数据报结构以及三次握手(非常详细)
  5. linux系统下如何禁止ping命令或允许ping命令的方法
  6. 编译Caffe-Win错误集锦
  7. Qt文档阅读笔记-Q_GADGET官方解析及实例
  8. 电子元器件从入门到精通pdf_电子元件入门基础,常用电子元器件详解大全作用-涨知识必读...
  9. mybaitplus 根据id批量进行修改_phpcms小程序插件api接口升级到4.3(新增批量获取、搜索等接口)...
  10. 3.1.1 Agri-Net
  11. python语言的单行注释以单引号开头_Python语言基础-基本概念、运算符、数据结构、条件与循环...
  12. 以中东地区军事数据为目标:移动网络间谍活动“Bouncing Golf”分析
  13. 【牛腩新闻】——首页图片加载不出来
  14. 量子计算计算机简史pdf,量子计算与量子信息简介.pdf
  15. LeetCode 416分割等和子集
  16. android usb ftdi,android-Nexus7 USB主机FTDI设备未检测到
  17. [PTA]实验7-2-6 打印杨辉三角
  18. 荐:Java常见设计模式
  19. 什么是云存储,是怎么服务大家的,云存储有什么优点和缺点?
  20. Edgecam2016基础编程到车铣复合加工视频教程

热门文章

  1. inDesign教程,如何创建和编辑页面?
  2. ON1 Resize 2022 for Mac(图片大小修改工具)
  3. Linguist for Mac(语言翻译工具)
  4. 最新M1芯片的MacBook Pro打开软件闪退解决方法
  5. elasticsearch 中文分词
  6. Docker 开篇 1 | 树莓派中搭建Docker
  7. 微软打造Unity开发工具包 为视力低落的用户增加辅助功能
  8. HAproxy负载均衡部署
  9. 在微信小程序中绘制图表(part1)
  10. 3D游戏中的画质与效率适配(转)