当前位置: 首页 > news >正文

FEDERATED引擎

入门

MySQL引擎主要有以下几种:

  1. MyISAM:这是MySQL 5.5.5之前的默认存储引擎,不支持事务、外键约束和聚簇索引,适用于读多写少的场景。
  2. InnoDB:这是MySQL 5.5.5之后的默认存储引擎,支持事务、外键约束、行级锁和聚簇索引,适用于需要事务支持和并发读写的场景。
  3. MEMORY:也称为HEAP存储引擎,数据存储在内存中,速度快但重启后数据会丢失,适用于临时表或缓存。
  4. MERGE:允许将多个MyISAM表合并为一个逻辑表,适用于数据仓库等场景。
  5. CSV:使用CSV文件作为底层数据存储,适用于数据导入导出。
  6. BLACKHOLE:类似于/dev/null,写入的数据会立即消失,适用于数据复制或日志记录。
  7. ARCHIVE:适用于存储大量归档数据,不支持索引,压缩率高。
  8. NDB:也称为NDBCLUSTER,适用于分布式数据库环境。
  9. FEDERATED:允许在一个MySQL服务器上访问远程MySQL服务器上的表,实现了数据的分布式存储。

在这里插入图片描述

关于FEDERATED引擎的优缺点:

优点

  1. 节省存储空间和网络带宽:不需要复制数据到不同的MySQL实例里,而是直接使用远程MySQL实例中的数据。
  2. 跨数据库服务器进行数据访问:可以跨数据库服务器进行数据访问。
  3. 简化数据访问:访问该引擎的表就像是访问本地表一样,简化了数据访问过程。
  4. 支持分布式查询:可以在不同的MySQL服务器之间共享数据,而不需要复制或进行数据同步。

缺点

  1. 性能问题select count(*)select * from limit M, N等语句执行效率非常低,数据量较大时存在严重问题。
  2. 不支持索引:FEDERATED表通常不支持索引,导致性能不佳和网络负载过重。
  3. 不支持ALTER TABLE:不支持ALTER TABLE或直接修改表结构的任何数据定义语言语句。
  4. 不支持事务:FEDERATED引擎不支持事务。
  5. 安全性问题:安全性需要通过federated表定义来处理。
  6. 依赖网络性能:速度取决于网络和其他因素。

综上所述,FEDERATED引擎适用于需要跨数据库服务器进行数据访问且对性能要求不高的场景,但在高并发读写和需要事务支持的场景下应谨慎使用。

使用

FEDERATED存储引擎是MySQL中的一种特殊存储引擎,主要用于访问远程数据库中的数据。这种引擎允许在本地创建一个表结构文件(fed_tab.frm),而实际的数据则存储在远程服务器上。

使用场景

FEDERATED引擎特别适用于以下几种情况:

  1. 跨服务查询:当需要从不同数据库实例或服务器访问数据时,可以使用FEDERATED引擎来实现跨实例的数据连接。
  2. 数据库迁移和分库:用于将数据从一个数据库迁移到另一个数据库,或者在多个数据库之间进行数据共享。
  3. 特殊应用:例如在某些开发应用中,通过FEDERATED引擎可以直接与远程数据表同步,从而简化了数据管理流程。

功能特点

  • 不支持事务和某些DML操作:虽然FEDERATED引擎提供了对远程数据的访问能力,但它并不支持事务处理和一些特定的数据定义语言(DDL)操作。
  • 批量插入优化:为了提高性能,FEDERATED引擎支持批量插入处理,可以将多行数据一次性发送到远程表。
  • 结构一致性要求:创建FEDERATED表时,本地表的结构必须完全与远程表的结构相同。

启用方法

要启用FEDERATED存储引擎,首先需要确保MySQL安装时已经配置了该引擎。可以通过以下步骤来启用和使用FEDERATED引擎:

  1. 检查是否已启用:进入命令行输入show engines;查看FEDERATED的状态是否为NO,如果是,则需要手动启用。
  2. 添加配置选项:在配置文件中添加相应的选项并重启服务。例如,在CONNECTION选项中指定如何连接到远程服务器上的连接字符串。
  3. 创建表:使用CREATE TABLE语句创建FEDERATED表,并指定远程表的名称和连接字符串。

注意事项

  • 数据同步问题:由于FEDERATED引擎只在本地存储表结构文件,因此无法直接修改远程表的数据。如果需要更新远程表的数据,可能需要通过其他方式手动触发更新。
  • 性能考量:尽管批量插入可以提升性能,但在高并发场景下仍需注意网络延迟和带宽限制的影响。

综上所述,FEDERATED存储引擎提供了一种高效且灵活的方式来访问远程数据库中的数据,适用于多种复杂的业务需求。然而,在使用过程中需要注意其局限性和性能优化策略。

主从架构下不建议使用

不建议使用FEDERATED存储引擎会导致MySQL主从复制出现异常的原因主要在于FEDERATED存储引擎的特性及其对数据一致性和复制机制的影响。

首先,FEDERATED存储引擎允许本地MySQL表访问远程MySQL数据库中的数据,而不使用复制或集群技术。这意味着本地表的数据实际上存储在远程数据库中,本地只存储表的结构。这种设计虽然提供了灵活性,但也带来了数据一致性和复制的问题。

在MySQL的主从复制架构中,主库的数据变更会通过二进制日志(binlog)传递到从库,从库根据这些日志进行数据同步。然而,FEDERATED存储引擎的数据并不存储在本地,而是存储在远程数据库中。因此,当主库发生数据变更时,这些变更无法直接通过binlog传递到从库,因为从库的FEDERATED表并没有实际的数据存储。这就导致了主从复制的一致性问题,因为从库无法正确反映主库的数据变更。

此外,FEDERATED表不支持通常意义上的索引,因为对表数据的访问是远程处理的。这意味着,对于需要全表扫描的查询,服务器会从远程表中获取数据,这不仅效率低下,还可能导致主从复制过程中的延迟和数据不一致。

综上所述,由于FEDERATED存储引擎的远程数据访问特性和对索引的支持不足,它会导致MySQL主从复制出现异常,因此不建议在需要主从复制的场景中使用FEDERATED存储引擎。

不建议在需要主从复制的场景中使用FEDERATED存储引擎,主要原因如下:

  1. 不支持事务:FEDERATED存储引擎不支持事务处理,这意味着在主从复制过程中,如果发生数据修改操作,可能会导致数据不一致或丢失。

  2. 性能问题:FEDERATED表在查询时需要将所有满足条件的记录读取到本地再进行处理,这会导致查询速度非常慢。特别是在主从复制中,这种性能瓶颈会进一步放大。

  3. 索引问题:如果FEDERATED表中的字段未建立索引,而远程实体表中为此字段建立了索引,性能会非常差。即使后来为虚拟表建立了索引,性能恢复也需要时间,这在主从复制中是不稳定的因素。

  4. 主从复制中的宕机风险:在主从复制中使用FEDERATED表时,如果在主库修改此表,可能会引起从库宕机,导致复制中断。

  5. 连接和同步问题:FEDERATED存储引擎在跨数据库系统的整合中可能存在连接和同步问题,这在主从复制场景中尤为敏感。

综上所述,FEDERATED存储引擎在主从复制场景中的局限性和潜在风险使其不适合在这种高可用性和数据一致性要求较高的环境中使用。

相关文章:

FEDERATED引擎

入门 MySQL引擎主要有以下几种: MyISAM:这是MySQL 5.5.5之前的默认存储引擎,不支持事务、外键约束和聚簇索引,适用于读多写少的场景。InnoDB:这是MySQL 5.5.5之后的默认存储引擎,支持事务、外键约束、行级…...

Android NDK工具

Android NDK工具 Android NDK Crash 日志抓取及定位 NDK-STACK 定位 NDK Crash 位置 只要执行如下代码就行: adb logcat | ndk-stack -sym /yourProjectPath/obj/local/armeabi-v7aPS: 必须是带symbols的so,也就是在’\app\src\main\obj\local\下面的…...

使用 Docker 进入容器并运行命令的详细指南

Docker 是一款开源的容器化平台,它可以将应用程序和依赖环境打包到一个可移植的“容器”中,以保证应用不受运行环境的影响。使用 Docker 容器化应用后,有时需要进入容器内部执行一些命令进行调试或管理。 一、Docker 基础命令 在开始进入容…...

【人工智能】OpenAI最新发布的o1-preview模型,和GPT-4o到底哪个更强?最新分析结果就在这里!

在人工智能的快速发展中,OpenAI的每一次新模型发布都引发了广泛的关注与讨论。2023年9月13日,OpenAI正式推出了名为o1的新模型,这一模型不仅是其系列“推理”模型中的首个代表,更是朝着类人人工智能迈进的重要一步。本文将综合分析…...

Spring Boot-版本兼容性问题

Spring Boot 版本兼容性问题探讨 Spring Boot 是一个用于构建微服务和现代 Java 应用的流行框架,随着 Spring Boot 版本的更新和发展,它在功能、性能和安全性上不断提升。但与此同时,Spring Boot 的版本兼容性问题也逐渐成为开发者必须关注的…...

Java原生HttpURLConnection实现Get、Post、Put和Delete请求完整工具类分享

这里博主纯手写了一个完整的 HTTP 请求工具类,该工具类支持多种请求方法,包括 GET、POST、PUT 和 DELETE,并且可以选择性地使用身份验证 token。亲测可用,大家可以直接复制并使用这段代码,以便在自己的项目中快速实现 HTTP 请求的功能。 目录 一、完整代码 二、调用示例…...

如何微调(Fine-tuning)大语言模型?

本文介绍了微调的基本概念,以及如何对语言模型进行微调。 从 GPT3 到 ChatGPT、从GPT4 到 GitHub copilot的过程,微调在其中扮演了重要角色。什么是微调(fine-tuning)?微调能解决什么问题?什么是 LoRA&…...

wopop靶场漏洞挖掘练习

1、SQL注入漏洞 1、在搜索框输入-1 union select 1,2,3# 2、输入-1 union select 1,2,database()# ,可以得出数据库名 3、输入-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schematest#,可以得出数据库中…...

探索Python的隐秘角落:Keylogger库的神秘面纱

文章目录 探索Python的隐秘角落:Keylogger库的神秘面纱背景:为何需要Keylogger?库简介:什么是Keylogger?安装指南:如何将Keylogger纳入你的项目?函数使用:5个简单函数的介绍与代码示…...

JAVA开源项目 校园管理系统 计算机毕业设计

本文项目编号 T 026 ,文末自助获取源码 \color{red}{T026,文末自助获取源码} T026,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 管…...

Java--常见的接口--Comparable

String类型的compareTo方法: 在String引用中,有一个方法可以比较两个字符串的大小: 和C语言中是一样的,两个字符串一个字符一个去比较。 那么这个方法是怎么实现的呢? 其实就是一个接口:Comparable接口里…...

luogu基础课题单 入门 上

【深基2.例5】苹果采购 题目描述 现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果? 输入格式 输入两个不超过 1 0 9 10^9 109 正整数,分别表示每人分到…...

物理设计-物理数据模型优化策略

物理数据模型优化策略 1. 引言:物理设计的重要性​ 在数据库设计的生命周期中,物理设计是将逻辑模型转化为实际可执行的数据库架构的关键步骤。它直接关系到系统的性能、可扩展性和维护成本。一个优化的物理数据模型能够显著提升数据访问速度&#xff…...

产学研合作赋能产业升级新动能

在当今快速发展的时代,产业升级已成为经济持续增长的关键。而产学研合作模式正以其独特的优势,为产业升级注入新动能。 产学研合作,即将产业、学校与科研机构紧密结合起来。产业提供实际的需求和应用场景,学校培养专业的人才&…...

uniapp tabBar不显示

开发中发现某个页面不显示tabbar,而有的页面显示 需要在tabBar配置中添加需要展示的页面 刚开始我发现登录页面不展示tabbar,把登录页面的路径配置进去就会展示了...

论文阅读《Robust Steganography for High Quality Images》高质量因子图片的鲁棒隐写

TCSVT 2023 中国科学技术大学 Kai Zeng, Kejiang Chen*, Weiming Zhang, Yaofei Wang, Nenghai Yu, "Robust Steganography for High Quality Images," in IEEE Transactions on Circuits and Systems for Video Technology, doi: 10.1109/TCSVT.2023.3250750. 一、…...

node前端开发基本设置

加快下载源速度 要将 npm 切换到淘宝的源镜像,你可以按照以下步骤操作: 查看当前 npm 源: npm config get registry这个命令会显示当前使用的 npm 源地址,默认情况下它会是 https://registry.npmjs.org/。 切换到淘宝镜像&#…...

深入掌握:如何进入Docker容器并运行命令

感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 查看正在运行的容器使用 docker exec 命令进入容器进入容器的交互式 shell在容器中运行命令 使用 docker attach 命令附加到容器检查容器日志退出容器从 docker exec 方式退出从 docke…...

把设计模式用起来(3)用不好的原因之时机不对

上一篇:《把设计模式用起来(3)——用不好的原因 之 实践不足》https://blog.csdn.net/nanyu/article/details/141939342 本篇继续讲设计模式用不好的常见原因,这是第二个:使用设计模式的时机不对。 二、时机不对 这里…...

【机器学习随笔】基于kmeans的车牌类型分类注意点

kmeans是无监督的聚类算法,可用于数据的分类。本文尝试用kmeans对车牌类型进行分类,记录使用过程中的注意点。 kmeans使用过程中涉及两个大部分,模型与分析。模型部分包括训练模型和使用模型,分析部分主要为可视化分析。两部分的主…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...