如果写的不对的地方,欢迎各位提意见。
可以在数据非常大的时候起到分发表或者库到不同的服务器。减少每个服务器的IO。
首先看看有没有federated 引擎。
mysql> show engines;
+------------+----------+----------------------------------------------------------------+
| Engine | Support | Comment |
+------------+----------+----------------------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| BerkeleyDB | NO | Supports transactions and page-level locking |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) |
| EXAMPLE | YES | Example storage engine |
| ARCHIVE | YES | Archive storage engine |
| CSV | YES | CSV storage engine |
| ndbcluster | DISABLED | Clustered, fault-tolerant, memory-based tables |
| FEDERATED | YES | Federated MySQL storage engine |
| MRG_MYISAM | YES | Collection of identical MyISAM tables |
| ISAM | NO | Obsolete storage engine |
+------------+----------+----------------------------------------------------------------+
12 rows in set (0.00 sec)
A(192.168.0.233:3306)
B(192.168.0.233:3307)
C(192.168.0.233:3308)
D(192.168.0.234:3306)
在A、B、C、D 分别创建数据库。mysql> create database t_boy;
Query OK, 1 row affected (0.00 sec)
mysql> use t_boy;
Database changed
在B、C上分别创建授权用户。mysql> grant all privileges on t_boy.* to root@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
在B主机上:mysql> create table t_tableB (id int not null auto_increment primary key, c_str char(20) not null) engine myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+-----------------+
| Tables_in_t_boy |
+-----------------+
| t_table |
+-----------------+
1 row in set (0.00 sec)
在C主机上:mysql> create table t_tableC (id int not null auto_increment primary key, c_str char(20) not null) engine myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+-----------------+
| Tables_in_t_boy |
+-----------------+
| t_table |
+-----------------+
1 row in set (0.00 sec)
关于创建FEDERATED引擎的方法详细见手册。在A主机上:mysql> create table t_1 (id int not null auto_increment primary key, c_str char(20) not null) engine federated connection = 'mysql://root:123456@192.168.0.233:3307/t_boy/t_tableB';
Query OK, 0 rows affected (0.04 sec)
mysql> create table t_2 (id int not null auto_increment primary key, c_str char(20) not null) engine federated connection = 'mysql://root:123456@192.168.0.233:3308/t_boy/t_tableC';
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t_1(c_str) values (rand());
Query OK, 1 row affected (0.53 sec)
mysql> insert into t_2(c_str) values (rand());
Query OK, 1 row affected (0.03 sec)
可以像在一个主机上进行操作。mysql> select t_1.*,t_2.* from t_1 inner join t_2 using(id);
+----+----------------+----+------------------+
| id | c_str | id | c_str |
+----+----------------+----+------------------+
| 1 | 0.304819039353 | 1 | 0.24238659184648 |
+----+----------------+----+------------------+
1 row in set (0.00 sec)
插入百万级别的数据后
mysql> select t_1.*,t_2.* from t_1 inner join t_2 using(id) limit 20;
+----+----------------------+----+----------------------+
| id | c_str | id | c_str |
+----+----------------------+----+----------------------+
| 1 | 0.304819039353 | 1 | 0.24238659184648 |
| 2 | 1.304819039353 | 2 | 1.2423865918465 |
| 3 | 1.304819039352999920 | 3 | 1.242386591846480037 |
| 4 | 2.304819039353000143 | 4 | 2.242386591846500021 |
| 5 | 1.304819039352999920 | 5 | 1.242386591846480037 |
| 6 | 2.304819039353000143 | 6 | 2.242386591846500021 |
| 7 | 2.304819039353000143 | 7 | 2.242386591846480037 |
| 8 | 3.304819039353000143 | 8 | 3.242386591846500021 |
| 9 | 1.304819039352999920 | 9 | 1.242386591846480037 |
| 10 | 2.304819039353000143 | 10 | 2.242386591846500021 |
| 11 | 2.304819039353000143 | 11 | 2.242386591846480037 |
| 12 | 3.304819039353000143 | 12 | 3.242386591846500021 |
| 13 | 2.304819039353000143 | 13 | 2.242386591846480037 |
| 14 | 3.304819039353000143 | 14 | 3.242386591846500021 |
| 15 | 3.304819039353000143 | 15 | 3.242386591846480037 |
| 16 | 4.304819039353000143 | 16 | 4.242386591846500465 |
| 17 | 1.304819039352999920 | 17 | 1.242386591846480037 |
| 18 | 2.304819039353000143 | 18 | 2.242386591846500021 |
| 19 | 2.304819039353000143 | 19 | 2.242386591846480037 |
| 20 | 3.304819039353000143 | 20 | 3.242386591846500021 |
+----+----------------------+----+----------------------+
20 rows in set (0.73 sec)
mysql> select max(id),min(id) from t_1;
+---------+---------+
| max(id) | min(id) |
+---------+---------+
| 1048576 | 1 |
+---------+---------+
1 row in set (1.40 sec)
mysql> select max(id),min(id) from t_2;
+---------+---------+
| max(id) | min(id) |
+---------+---------+
| 1048576 | 1 |
+---------+---------+
1 row in set (1.40 sec)
mysql> update t_2 set id = id +1048576;
Query OK, 1048576 rows affected (2 min 10.38 sec)
Rows matched: 1048576 Changed: 1048576 Warnings: 0
mysql> select max(id),min(id) from t_2;
+---------+---------+
| max(id) | min(id) |
+---------+---------+
| 2097152 | 1048577 |
+---------+---------+
1 row in set (1.63 sec)
mysql> explain select id c_str from t_1 where id between 1 and 1048576;
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | t_1 | range | PRIMARY | PRIMARY | 4 | NULL | 2 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+
1 row in set (0.00 sec)
在D主机上mysql> create table t(id int not null auto_increment primary key, c_str char(20));
Query OK, 0 rows affected (0.00 sec)
插入两百万级别数据后。
mysql> select count(*) from t;
+----------+
| count(*) |
+----------+
| 2097152 |
+----------+
1 row in set (0.00 sec)
mysql> analyze table t;
+---------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------+---------+----------+----------+
| t_boy.t | analyze | status | OK |
+---------+---------+----------+----------+
1 row in set (0.37 sec)
mysql> explain select id c_str from t where id between 1 and 1048576;
+----+-------------+-------+-------+---------------+---------+---------+------+---------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+------+---------+--------------------------+
| 1 | SIMPLE | t | range | PRIMARY | PRIMARY | 4 | NULL | 1132065 | Using where; Using index |
+----+-------------+-------+-------+---------------+---------+---------+------+---------+--------------------------+
1 row in set (0.00 sec)
和上面A主机上的查询相比,扫描的行数大减。插入的速度主要靠网络。
看看A主机上的文件
[root@localhost t_boy]# cd /usr/local/mysql/data/t_boy/
[root@localhost t_boy]# ls -sihl
total 40K
15892559 8.0K -rw-rw---- 1 mysql mysql 61 Feb 28 11:03 db.opt
15892560 16K -rw-rw---- 1 mysql mysql 8.4K Feb 28 11:11 t_1.frm
15892561 16K -rw-rw---- 1 mysql mysql 8.4K Feb 28 11:14 t_2.frm
[root@localhost t_boy]#
这里只有表的定义而没有数据。
手册中关于FEDERATED引擎的介绍:
[url]http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#federated-storage-engine[/url]
相关推荐
MySQL联邦(Federated)引擎是一种特殊的存储引擎,它的设计目标是允许MySQL数据库跨越不同的服务器进行数据集成,类似于Oracle数据库中的DBLINK功能。这个引擎使得用户可以在本地数据库中查询和操作远程MySQL服务器...
此项目为论文《FedServing_A_Federated_Prediction_Serving__FedServing
federated_learning_for_image_classification.ipynb
FEDERATED引擎是MySQL中的一种存储引擎,用于实现分布式数据库系统中的数据同步。下面是使用FEDERATED引擎实现数据库用户表同步的详细知识点: 什么是FEDERATED引擎 FEDERATED引擎是一种插件式存储引擎,用于实现...
在实验中,我们使用 MySQL 8.0 查看了支持的存储引擎,包括 InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、EXAMPLE、FEDERATED、Archive、Merge 等。不同的存储引擎有不同的特点和使用场景,在选择存储引擎时需要根据...
MySQL的Federated引擎是一种特殊的存储引擎,它允许你在本地数据库中创建一个表,该表的数据实际上存储在远程MySQL服务器上。这种引擎的主要目的是提供跨数据库的透明访问,类似于Oracle的DBLINK功能。下面我们将...
MySQL中的Federated存储引擎允许数据库在不同服务器之间透明地操作远程数据,类似于Oracle的DBLink功能。这种特性使得跨数据库系统的数据集成变得简单,尤其在多系统交互或分布式环境中非常有用。 **1. Oracle的...
在Linux环境中,若MySQL安装后未包含Federated引擎,可以通过`install plugin federated soname 'ha_federated.so';`命令动态安装。 使用Federated引擎的流程如下: 1. **B库(被调用的数据库)**: - B库需要...
MySQL的FEDERATED引擎提供了一种解决办法,使得在不同数据库之间实现数据表的同步成为可能。本文主要介绍如何利用FEDERATED引擎来实现两个数据库用户表的同步。 首先,我们需要确保MySQL服务器支持FEDERATED引擎。...
Zhang_Federated_Learning_for_Non-IID_Data_via_Unified_Feature_Learning_and_ICCV_2021_paper.pdf
2. InnoDB:自MySQL 5.5版本起,InnoDB成为了默认存储引擎,因为它提供了事务处理能力,支持ACID(原子性、一致性、隔离性、持久性)属性。InnoDB还支持行级锁定,这在多用户环境下提高了并发性能。它是处理事务型...
MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。 可以利用语句:show engines; 查看系统所支持的引擎类型。;1.InnoDB存储引擎 InnoDB是事务型数据库的首选引擎...
FEDERATED存储引擎在MySQL中用于实现远程数据的联邦,当它被禁用时,可能会影响服务的稳定运行。本文将详细探讨这个问题的成因、解决方法以及相关的优化措施。 首先,`Plugin 'FEDERATED' is disabled`的出现通常是...
MySQL支持多种存储引擎,如InnoDB、MyISAM、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等。 InnoDB是MySQL5.5之后的默认存储引擎,提供了具有提交、回滚和崩溃恢复能力的事务...
半联合调度(Semi-Federated Scheduling)的目标是有效地分配这些任务到多个处理器上,同时考虑任务之间的依赖性和资源约束,以提高系统性能和效率。 首先,我们要理解DAG任务的特点。在DAG中,每个任务可以被其他...
MySQL 不同实例间跨库联表查询-(1) MySQL engine 储存引擎 描述 InnoDB 具有行锁定和外键的事务安全表。新表的默认存储引擎。如果您具有MySQL经验但不 熟悉,请参阅 第15章,InnoDB存储引擎,尤其是第15.1...
mysql-5.6.25.tar 包含两个文件: - mysql-5.6.25.tar.gz Generic Linux (Architecture Independent), Compressed TAR Archive MD5: 37664399c91021abe070faa700ecd0ed -install.txt: 安装方法 首先解压mysql-...
### CentOS 6.4 下 MySQL 5.7 编译安装详细步骤 #### 一、环境准备 在开始编译安装 MySQL 5.7 之前,确保已经搭建好 CentOS 6.4 系统环境,并按照以下步骤进行必要的准备工作。 ##### 1.1 安装依赖库文件 MySQL ...
MySQL_5.5.20_winx64是一款专为64位Windows 7操作系统设计的MySQL数据库管理系统。MySQL是一个广泛使用的开源关系型数据库,它以其高效性、稳定性及易于管理的特点,在各种规模的企业和项目中都有应用。版本5.5.20是...