OceanBase教程FG042-OceanBase元数据管理与数据字典
本文详细介绍OceanBase数据库的元数据管理与数据字典功能,帮助读者掌握OceanBase的元数据管理原理和数据字典使用方法。风哥教程参考OceanBase官方文档OceanBase8元数据管理、OceanBase8数据字典等内容。
元数据管理与数据字典是数据库管理的重要组成部分,通过本文的学习,读者将掌握OceanBase的元数据管理机制和数据字典的使用方法,提高数据库管理的效率和准确性。
本文将详细介绍OceanBase的元数据存储、数据字典结构、元数据管理工具以及常见元数据操作的实现。
目录大纲
Part01-基础概念与理论知识
1.1 元数据概述
元数据是描述数据的数据,它具有以下特点:
- 描述性:描述数据的结构、属性和关系
- 管理性:用于数据管理和控制
- 参考性:提供数据的参考信息
- 完整性:确保数据的完整性和一致性
OceanBase的元数据类型:
- 表结构元数据:表名、列名、数据类型、约束等
- 索引元数据:索引名、索引类型、索引列等
- 用户元数据:用户名、权限、角色等
- 租户元数据:租户信息、资源配置等
- 集群元数据:集群信息、节点配置等
1.2 数据字典概述
数据字典是数据库中存储元数据的系统表,它具有以下特点:
- 系统表:由数据库系统自动创建和维护
- 只读:用户只能查询,不能修改
- 全面性:包含数据库的所有元数据
- 准确性:确保元数据的准确性和一致性
OceanBase的数据字典表:
- __all_table:存储表信息
- __all_column:存储列信息
- __all_index:存储索引信息
- __all_user:存储用户信息
- __all_tenant:存储租户信息
- __all_server:存储服务器信息
Part02-生产环境规划与建议
2.1 元数据管理规划
元数据管理规划:
- 元数据存储:规划元数据的存储方式和位置
- 元数据备份:制定元数据备份策略
- 元数据恢复:制定元数据恢复策略
- 元数据监控:建立元数据监控体系
- 元数据优化:优化元数据管理性能
2.2 数据字典使用规划
数据字典使用规划:
- ,风哥提示:。
- 查询策略:制定数据字典查询策略
- 权限控制:设置数据字典访问权限
- 性能优化:优化数据字典查询性能
- 文档化:记录数据字典的使用方法
Part03-生产环境项目实施方案
3.1 元数据管理实施
元数据管理实施步骤:
- 元数据存储配置:
- 配置元数据存储位置
- 设置元数据存储参数
- 优化元数据存储性能
- 元数据监控配置:
- 部署元数据监控工具
- 设置元数据监控指标
- 配置元数据告警规则
- 元数据维护:
- 定期检查元数据完整性
- 修复元数据异常
- 优化元数据结构
,学习交流加群风哥微信: itpux-com。
3.2 数据字典配置
数据字典配置:
- 访问权限配置:
- 设置数据字典访问权限
- 配置数据字典查询权限
- 管理数据字典用户权限
- 性能优化配置:
- 优化数据字典查询性能
- 配置数据字典缓存
- 调整数据字典相关参数
- 查询工具配置:
- 配置数据字典查询工具
- 设置数据字典查询脚本
- 优化数据字典查询语句
3.3 元数据备份与恢复
元数据备份与恢复:
- 备份策略:
- 制定元数据备份策略
- 设置备份频率
- 选择备份方式
,学习交流加群风哥QQ113257174。
- 恢复策略:
- 制定元数据恢复策略
- 测试恢复流程
- 优化恢复性能
- 验证机制:
- 验证备份完整性
- 测试恢复效果
- 确保数据一致性
Part04-生产案例与实战讲解
4.1 元数据管理实战
元数据管理实战示例:
SHOW CREATE TABLE fgedu_users;
— 2. 查看列信息
DESCRIBE fgedu_users;
— 3. 查看索引信息
SHOW INDEX FROM fgedu_users;
— 4. 查看用户信息
SELECT * FROM mysql.user WHERE user = ‘fgedu’;
— 5. 查看租户信息
SELECT * FROM oceanbase.__all_tenant;
— 6. 查看集群信息
SELECT * FROM oceanbase.__all_server;
+————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————+,更多视频教程www.fgedu.net.cn。
| Table | Create Table |
+————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————+
| fgedu_users | CREATE TABLE `fgedu_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`balance` decimal(10,2) DEFAULT ‘0.00’,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`),
KEY `idx_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci |
+————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————+
— 查看列信息
+———-+—————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———-+—————+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | NO | UNI | NULL | |
| email | varchar(100) | NO | MUL | NULL | |
| balance | decimal(10,2) | YES | | 0.00 | |
+———-+—————+——+—–+———+—————-+
— 查看索引信息
+————+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+————+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
| fgedu_users | 0 | PRIMARY | 1 | id | A | 1000 | NULL | NULL | | BTREE | |
| fgedu_users | 0 | idx_username | 1 | username | A | 1000 | NULL | NULL | | BTREE | |
| fgedu_users | 1 | idx_email | 1 | email | A | 1000 | NULL | NULL | | BTREE | |
+————+————+———-+————–+————-+———–+————-+———-+——–+——+————+———+
— 查看用户信息
+——+———–+————-+————-+————-+————-+————-+———–+————-+—————+————-+—————+
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv |
+——+———–+————-+————-+————-+————-+————-+———–+————-+—————+————-+—————+
| % | fgedu | Y | Y | Y | Y | Y | Y | N | N | N | N |
+——+———–+————-+————-+————-+————-+————-+———–+————-+—————+————-+—————+
— 查看租户信息,更多学习教程公众号风哥教程itpux_com。
+———–+————-+————-+—————————-+—————————-+—————+————+——————-+——————-+———-+—————-+
| tenant_id | tenant_name | tenant_type | create_time | modify_time | primary_zone | locality | resource_pool_list | collation | status | lock_status |
+———–+————-+————-+—————————-+—————————-+—————+————+——————-+——————-+———-+—————-+
| 1 | sys | SYS | 2026-04-09 10:00:00.000000 | 2026-04-09 10:00:00.000000 | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | [fgedu_pool1] | utf8mb4_general_ci | ACTIVE | UNLOCKED |
| 1001 | fgedu_tenant | USER | 2026-04-09 10:05:00.000000 | 2026-04-09 10:05:00.000000 | zone1 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | [fgedu_pool1] | utf8mb4_general_ci | ACTIVE | UNLOCKED |
+———–+————-+————-+—————————-+—————————-+—————+————+——————-+——————-+———-+—————-+
— 查看集群信息
+——-+—————-+——–+————+——–+—————————-+—————————-+———-+——–+————+——————+
| id | svr_ip | svr_port | inner_port | with_rootserver | start_service_time | stop_time | status | block_migrate_in_time | build_version |
+——-+—————-+——–+————+——–+—————————-+—————————-+———-+——–+————+——————+
| 1 | 192.168.1.101 | 2882 | 2881 | YES | 2026-04-09 10:00:00.000000 | NULL | ACTIVE | 0 | 4.2.1.0 |
| 2 | 192.168.1.102 | 2882 | 2881 | NO | 2026-04-09 10:00:05.000000 | NULL | ACTIVE | 0 | 4.2.1.0 |
| 3 | 192.168.1.103 | 2882 | 2881 | NO | 2026-04-09 10:00:10.000000 | NULL | ACTIVE | 0 | 4.2.1.0 |
+——-+—————-+——–+————+——–+—————————-+—————————-+———-+——–+————+——————+
4.2 数据字典使用实战
数据字典使用实战示例:
SELECT table_name, table_type, engine, table_rows, data_length, index_length
FROM information_schema.tables
WHERE table_schema = ‘fgedudb’;
— 2. 查询表列信息
SELECT column_name, data_type, is_nullable, column_default, column_comment
FROM information_schema.columns
WHERE table_schema = ‘fgedudb’ AND table_name = ‘fgedu_users’;
— 3. 查询索引信息
SELECT index_name, column_name, cardinality, index_type
,from DB视频:www.itpux.com。
FROM information_schema.statistics
WHERE table_schema = ‘fgedudb’ AND table_name = ‘fgedu_users’;
— 4. 查询约束信息
SELECT constraint_name, constraint_type
FROM information_schema.table_constraints
WHERE table_schema = ‘fgedudb’ AND table_name = ‘fgedu_users’;
— 5. 查询分区信息
SELECT partition_name, partition_method, partition_expression
FROM information_schema.partitions
WHERE table_schema = ‘fgedudb’ AND table_name = ‘fgedu_orders’;
— 6. 查询触发器信息
SELECT trigger_name, event_manipulation, action_timing
FROM information_schema.triggers
WHERE trigger_schema = ‘fgedudb’;
+——————-+————+——–+————+————-+————–+
| table_name | table_type | engine | table_rows | data_length | index_length |
+——————-+————+——–+————+————-+————–+
| fgedu_users | BASE TABLE | InnoDB | 1000 | 163840 | 32768 |
| fgedu_orders | BASE TABLE | InnoDB | 5000 | 524288 | 131072 |
| fgedu_products | BASE TABLE | InnoDB | 500 | 65536 | 16384 |
| fgedu_categories | BASE TABLE | InnoDB | 50 | 8192 | 4096 |
+——————-+————+——–+————+————-+————–+
— 查询表列信息
+————-+———–+————-+—————+—————-+
| column_name | data_type | is_nullable | column_default| column_comment |
+————-+———–+————-+—————+—————-+
| id | int | NO | NULL | 用户ID |
| username | varchar | NO | NULL | 用户名 |
| email | varchar | NO | NULL | 邮箱地址 |
| balance | decimal | YES | 0.00 | 账户余额 |
+————-+———–+————-+—————+—————-+
— 查询索引信息
+————–+————-+———–+————+
| index_name | column_name | cardinality| index_type |
+————–+————-+———–+————+
| PRIMARY | id | 1000 | BTREE |
| idx_username | username | 1000 | BTREE |
| idx_email | email | 1000 | BTREE |
+————–+————-+———–+————+
— 查询约束信息
+——————+—————+
| constraint_name | constraint_type|
+——————+—————+
| PRIMARY | PRIMARY KEY |
| idx_username | UNIQUE |
+——————+—————+
— 查询分区信息
+—————-+——————+———————+
| partition_name | partition_method | partition_expression|
+—————-+——————+———————+
| p202601 | RANGE | TO_DAYS(created_at) |
| p202602 | RANGE | TO_DAYS(created_at) |
| p202603 | RANGE | TO_DAYS(created_at) |
+—————-+——————+———————+
— 查询触发器信息
+—————-+——————+—————-+
| trigger_name | event_manipulation| action_timing |
+—————-+——————+—————-+
| fgedu_users_audit| INSERT,UPDATE,DELETE| AFTER |
+—————-+——————+—————-+
4.3 元数据备份与恢复实战
元数据备份与恢复实战示例:
mysqldump -h192.168.1.100 -P2883 -ufgedu -pFgedu123! –no-data fgedudb > fgedudb_metadata.sql
— 2. 查看导出的元数据文件
head -50 fgedudb_metadata.sql
— 3. 导出特定表的元数据
mysqldump -h192.168.1.100 -P2883 -ufgedu -pFgedu123! –no-data fgedudb fgedu_users > fgedu_users_metadata.sql
— 4. 恢复元数据到新数据库
obclient -h192.168.1.100 -P2883 -uroot -proot -e “CREATE DATABASE fgedudb_new;”
obclient -h192.168.1.100 -P2883 -uroot -proot fgedudb_new < fgedudb_metadata.sql
— 5. 验证恢复的元数据
obclient -h192.168.1.100 -P2883 -ufgedu -pFgedu123! fgedudb_new -e “SHOW TABLES;”
obclient -h192.168.1.100 -P2883 -ufgedu -pFgedu123! fgedudb_new -e “DESCRIBE fgedu_users;”
# mysqldump -h192.168.1.100 -P2883 -ufgedu -pFgedu123! –no-data fgedudb > fgedudb_metadata.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
— 查看导出的元数据文件
# head -50 fgedudb_metadata.sql
— MySQL dump 10.13 Distrib 8.0.25, for Linux (x86_64)
—
— Host: 192.168.1.100 Database: fgedudb
— ——————————————————
— Server version 5.7.25-OceanBase-v4.2.1.0
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=’+00:00′ */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=’NO_AUTO_VALUE_ON_ZERO’ */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
—
— Table structure for table `fgedu_users`
—
DROP TABLE IF EXISTS `fgedu_users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `fgedu_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`balance` decimal(10,2) DEFAULT ‘0.00’,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_username` (`username`),
KEY `idx_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
—
— Table structure for table `fgedu_orders`
—
DROP TABLE IF EXISTS `fgedu_orders`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `fgedu_orders` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`order_amount` decimal(10,2) NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`order_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB AUTO_INCREMENT=5001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
/*!50500 PARTITION BY RANGE (to_days(`created_at`))
(PARTITION p202601 VALUES LESS THAN (739131) ENGINE = InnoDB,
PARTITION p202602 VALUES LESS THAN (739159) ENGINE = InnoDB,
PARTITION p202603 VALUES LESS THAN (739190) ENGINE = InnoDB) */;
/*!40101 SET character_set_client = @saved_cs_client */;
— 导出特定表的元数据
# mysqldump -h192.168.1.100 -P2883 -ufgedu -pFgedu123! –no-data fgedudb fgedu_users > fgedu_users_metadata.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
— 恢复元数据到新数据库
# obclient -h192.168.1.100 -P2883 -uroot -proot -e “CREATE DATABASE fgedudb_new;”
# obclient -h192.168.1.100 -P2883 -uroot -proot fgedudb_new < fgedudb_metadata.sql
-- 验证恢复的元数据
# obclient -h192.168.1.100 -P2883 -ufgedu -pFgedu123! fgedudb_new -e "SHOW TABLES;"
+-----------------------+
| Tables_in_fgedudb_new |
+-----------------------+
| fgedu_categories |
| fgedu_orders |
| fgedu_products |
| fgedu_users |
+-----------------------+
# obclient -h192.168.1.100 -P2883 -ufgedu -pFgedu123! fgedudb_new -e "DESCRIBE fgedu_users;"
+----------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(50) | NO | UNI | NULL | |
| email | varchar(100) | NO | MUL | NULL | |
| balance | decimal(10,2) | YES | | 0.00 | |
+----------+---------------+------+-----+---------+----------------+
Part05-风哥经验总结与分享
5.1 元数据管理最佳实践
元数据管理最佳实践:
- 定期备份:建立元数据定期备份机制,确保元数据安全
- 版本控制:对元数据变更进行版本控制,便于追踪和回滚
- 变更管理:建立元数据变更管理流程,确保变更可控
- 监控告警:建立元数据监控告警机制,及时发现异常
- 文档化:记录元数据结构和变更历史,便于管理和维护
5.2 数据字典使用最佳实践
数据字典使用最佳实践:
- 合理使用:根据需求合理使用数据字典,避免过度查询
- 权限控制:设置适当的数据字典访问权限,保护元数据安全
- 性能优化:优化数据字典查询语句,提高查询效率
- 缓存机制:利用数据字典缓存机制,减少重复查询
- 定期维护:定期维护数据字典,确保数据准确性
—–+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+——————+————-
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
