mysql非主流引擎

258 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在MySQL生态的存储引擎中,除了比较流行的innoDB和MyISAM外,还有一些在工作中扮演着重要角色的其他存储引擎。本篇文章将介绍其中的两个重要引擎FEDERATED和BlackHole。

1.FEDERATED存储引擎

概览

  • 该引擎可以在不借助复制技术的情况下访问远端的数据。
  • 该引擎可以把客户端的请求路由到多个远端的MySQL实例,因此用户可以在不修改代码的前提下,使用多个MySQL实例。
  • 该引擎可以对外屏蔽远端的数据库用户名和密码,起到安全作用。
  • 查询优化功能较弱,尤其慎重使用join。

工作原理

image.png

在工作中的应用

[SQL智能优化器]在实现上利用了FEDERATED去获取待优化SQL中的表的信息,并重载了相关接口,来计算SQL的优化代价。

2.Blackhole存储引擎

概览 

  • Blackhole存储引擎可以从SQL中获取数据,但是相关的数据不会存储,而且任何相关的查询都会返回空集。
  • Blackhole存储引擎可以用来检测语法正确性。
  • Blackhole存储引擎可以用来过滤复制流。

在工作中的应用

工作中广泛使用Binlog Server,部署实例规模达到2000+。其原理就是利用了Blackhole存储引擎不存储数据,只记录binlog的特性。该方案,不仅延长了binlog保存的时间(binlog在恢复数据和审计上有重要作用),而且显著的降低了存储成本(大容量低速磁盘)。

内核团队在社区的基础上扩展了如下功能。

  1. 单表有多种分区
  2. 存在空间列的表
  3. 存在虚拟列的表
  4. json列带有DEFAULT值
  5. 手动执行alter改表操作带有“ALGORITHM=INPLACE”