【MySQL】在数据目录之外创建InnoDB 表(Creating Tables Externally)

文章目录

  • 【MySQL】在数据目录之外创建InnoDB 表(Creating Tables Externally)
    • 创建表时使用DATA DIRECTORY选项(单独表空间)
      • innodb_file_per_table设置为开启状态(默认)
      • innodb_file_per_table设置为关闭状态
    • 创建表时指定表空间(使用通用表空间)
    • 参考

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)

MySQL 8.0 OCP (1Z0-908) 考点概要

MySQL 8.0 OCP (1Z0-908) 考点精析-安装与配置考点1:设置系统变量
【MySQL】控制MySQL优化器行为方法之optimizer_switch系统变量
【MySQL】MySQL系统变量(system variables)列表(mysqld --verbose --help的结果例)
【MySQL】MySQL系统变量(system variables)列表(SHOW VARIABLES 的结果例)
MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1:MySQL Enterprise Backup概要
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1:sys.statement_analysis视图
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点3:EXPLAIN ANALYZE
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点4:慢速查询日志(slow query log)
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点5:表连接算法(join algorithm)
MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)
MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点6:InnoDB Tablespaces之系统表空间(System Tablespace)
MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces(单独表空间)
MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)

【MySQL】在数据目录之外创建InnoDB 表(Creating Tables Externally)

MySQL中在InnoDB中创建表的时候默认使用File-per-table tablespaces(单独表空间),即创建一个InnoDB 表会创建一个独立的表空间用于保存表的数据、索引以及元数据。
表空间的数据文件会保存在MySQL data目录中 ,并且.ibd文件的命名以表的名称命名(table_name.ibd)。

根据业务或者是磁盘优化等需要,也可以在数据目录之外创建InnoDB 表,也就是将表空间的数据文件放置在数据目录之外的位置,具体方法包括:

- 创建表时使用DATA DIRECTORY选项(单独表空间)
- 创建表时指定表空间(使用通用表空间)

注意,数据文件可以放置在数据目录之外的位置,但是路径必须是innodb_directories的值或者附加到innodb_directories值的变量(innodb_data_home_dir、innodb_undo_directory和datadir)之一。

例:

mysql> SELECT @@datadir,@@innodb_data_home_dir,@@innodb_directories;
+-----------------+------------------------+----------------------+
| @@datadir       | @@innodb_data_home_dir | @@innodb_directories |
+-----------------+------------------------+----------------------+
| /var/lib/mysql/ | NULL                   | /var/lib/mysql-files |
+-----------------+------------------------+----------------------+
1 row in set (0.00 sec)

从上面的内容可以看到数据目录是/var/lib/mysql/,在数据目录之外,可以放置数据文件的其他目录为/var/lib/mysql-files。

创建表时使用DATA DIRECTORY选项(单独表空间)

使用DATA DIRECTORY选项可以指定创建表的数据文件目录。

innodb_file_per_table设置为开启状态(默认)

例1:默认创建表的表空间

mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)mysql> create table tb1_external (a int);
Query OK, 0 rows affected (0.03 sec)mysql> select->      name as 'table_name',->      space_type->  from->      information_schema.innodb_tables->  where->      name like '%tb1_external%' \g
+---------------------+------------+
| table_name          | space_type |
+---------------------+------------+
| testdb/tb1_external | Single     |
+---------------------+------------+
1 row in set (0.00 sec)
mysql> select * from->  information_schema.innodb_tablespaces t->  join information_schema.innodb_datafiles d->  on t.SPACE=d.SPACE->  where t.NAME ='testdb/tb1_external'\G
*************************** 1. row ***************************SPACE: 98NAME: testdb/tb1_externalFLAG: 16417ROW_FORMAT: DynamicPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: SingleFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x3938PATH: ./testdb/tb1_external.ibd
1 row in set (0.01 sec)mysql>

例2:使用DATA DIRECTORY选项可以指定创建表的数据文件目录

mysql> create table tb2_external (a int) DATA DIRECTORY='/var/lib/mysql-files';
Query OK, 0 rows affected (0.04 sec)mysql> select->      name as 'table_name',->      space_type->  from->      information_schema.innodb_tables->  where->      name like '%tb2_external%' \G
*************************** 1. row ***************************
table_name: testdb/tb2_external
space_type: Single
1 row in set (0.00 sec)mysql> select * from->  information_schema.innodb_tablespaces t->  join information_schema.innodb_datafiles d->  on t.SPACE=d.SPACE->  where t.NAME ='testdb/tb2_external'\G
*************************** 1. row ***************************SPACE: 99NAME: testdb/tb2_externalFLAG: 17441ROW_FORMAT: DynamicPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: SingleFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x3939PATH: /var/lib/mysql-files/testdb/tb2_external.ibd
1 row in set (0.00 sec)mysql>

使用DATA DIRECTORY选项可以指定创建表的数据文件目录,创建的表的数据文件放在了/var/lib/mysql-files/testdb/tb2_external.ibd。

innodb_file_per_table设置为关闭状态

innodb_file_per_table设置为关闭状态时,创建表时候需要指定TABLESPACE = innodb_file_per_table,否则报错。

例:

mysql> set global innodb_file_per_table='OFF';
Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF   |
+-----------------------+-------+
1 row in set (0.00 sec)mysql> create table tb4_external (a int) DATA DIRECTORY='/var/lib/mysql-files';
ERROR 1031 (HY000): Table storage engine for 'tb4_external' doesn't have this option
mysql>

指定TABLESPACE = innodb_file_per_table后创建数据目录之外的InnoDB 表。

例:

mysql> select->      name as 'table_name',->      space_type->  from->      information_schema.innodb_tables->  where->      name like '%tb4_external%' \G
*************************** 1. row ***************************
table_name: testdb/tb4_external
space_type: Single
1 row in set (0.00 sec)mysql> select * from->  information_schema.innodb_tablespaces t->  join information_schema.innodb_datafiles d->  on t.SPACE=d.SPACE->  where t.NAME ='testdb/tb4_external'\G
*************************** 1. row ***************************SPACE: 100NAME: testdb/tb4_externalFLAG: 17441ROW_FORMAT: DynamicPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: SingleFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x313030PATH: /var/lib/mysql-files/testdb/tb4_external.ibd
1 row in set (0.01 sec)mysql>

创建表时指定表空间(使用通用表空间)

创建datadir路径外的通用表空间,然后创建表时指定通用表空间。

例:

mysql> create tablespace tbs_external add datafile '/var/lib/mysql-files/tbs_external.ibd';
Query OK, 0 rows affected (0.02 sec)mysql> create table tb5_external (a int)-> TABLESPACE = tbs_external;
Query OK, 0 rows affected (0.02 sec)mysql> select->      name as 'table_name',->      space_type->  from->      information_schema.innodb_tables->  where->      name like '%tb5_external%' \G
*************************** 1. row ***************************
table_name: testdb/tb5_external
space_type: General
1 row in set (0.00 sec)mysql> select * from->  information_schema.innodb_tablespaces t->  join information_schema.innodb_datafiles d->  on t.SPACE=d.SPACE->  where t.NAME  like '%tbs_external%'\G
*************************** 1. row ***************************SPACE: 101NAME: tbs_externalFLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 114688
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.35SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x313031PATH: /var/lib/mysql-files/tbs_external.ibd
1 row in set (0.00 sec)mysql>

参考

15.6.1.2 Creating Tables Externally
https://dev.mysql.com/doc/refman/8.0/en/innodb-create-table-external.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/584516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux iptables简介

表与链 iptables是4表五链 4表:filter表(过滤表) nat表 raw表 mangle表 五链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING (所有链的名字要大写) pre…之前 post…之后 filter表 iptables默认操作…

机器学习距离度量方法

1. 机器学习中为什么要度量距离? 机器学习算法中,经常需要 判断两个样本之间是否相似 ,比如KNN,K-means,推荐算法中的协同过滤等等,常用的套路是 将相似的判断转换成距离的计算 ,距离近的样本相…

K-means 聚类算法分析

算法简述 K-means 算法原理 我们假定给定数据样本 X ,包含了 n 个对象 ,其中每一个对象都具有 m 个维度的属性。而 K-means 算法的目标就是将 n 个对象依据对象间的相似性聚集到指定的 k 个类簇中,每个对象属于且仅属于一个其到类簇中心距离…

Jetson Orin安装riva以及llamaspeak,使用 Riva ASR/TTS 与 Llama 进行实时交谈,大语言模型成功运行笔记

NVIDIA 的综合语音 AI 工具包 RIVA 可以处理这种情况。此外,RIVA 可以构建应用程序,在本地设备(如 NVIDIA Jetson)上处理所有这些内容。 RIVA 是一个综合性库,包括: 自动语音识别 (ASR&#x…

Java创建线程执行任务的方法(一)

目录 1.继承Thread类 2.实现Runnab类 2.1实现Runnable类 2.2使用Lambda表达式 3.实现Callable类 3.1返回Integer类型数据 3.2返回String类型数据 3.3返回Object类型数据 4.匿名内部类 创建线程的方法:继承Thread类;实现Runnab类;匿名…

如何文件从电脑传到iPhone,这里提供几个方法

本文介绍了如何使用Finder应用程序、iTunes for Windows、iCloud和谷歌照片将照片从Mac或PC传输到iPhone。 如何将照片从Mac传输到iPhone 如果你有一台Mac电脑,里面装满了你想转移到iPhone的照片,这是一件非常简单的事情。只需遵循以下步骤&#xff1a…

Python中matplotlib库的使用1

1 matplotlib库简介 matplotlib是一个数学绘图库,可以将数据通过图形的方式显示出来,也就是数据可视化。 2 matplotlib库的安装 2.1 打开cmd窗口 点击键盘的“Win”“R”键,在弹出的“运行”对话框的“打开”栏中输入“cmd”,…

【UE5.1】程序化生成Nanite植被

目录 效果 步骤 一、下载Gaea软件和树林资产 二、使用Gaea生成贴图 三、 生成地形 四、生成草地 五、生成树林 六、生成湖泊 七、其它功能介绍 7.1 调整树林生成的面积 7.2 让植物随风飘动 7.3 玩家和植物互动 7.4 雪中树林 7.5 环境音效 效果 步骤 一、下载Ga…

什么是reactor模式

Reactor模式是一种事件驱动的设计模式,主要用于处理高并发的I/O操作。在该模式中,一个中心的“反应器”(Reactor)对象负责监听和分发来自多个客户端的事件请求到相应的处理器(Handler)。 以下是在Reactor模…

循环冗余效验码的计算方法

循环冗余效验码的计算方法 G(x): 在了解计算方法之前我们首先要明白G(x)表明的意思,这一步非常重要! 例如,G(x) x^3 x^2 1 ,该式子表明的编…

vue3 数据转换

只需要添加 const taskHeader JSON.parse(JSON.stringify(now))

基于huffman编解码的图像压缩算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Huffman编码算法步骤 4.2 Huffman编码的数学原理 4.3 基于Huffman编解码的图像压缩 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..…

【操作系统】不同操作系统内核架构分析

一、内核架构与操作系统性能之间的关系的分析 1. 适用性和专业化: 不同的内核架构往往会有不同的设计目标和优化点。例如,实时操作系统(RTOS)和通用操作系统(像Linux或Windows)在设计时就有不同的重点&am…

【Python基础011】Python中字符串的具体用法

1、创建 字符串的创建共有3种方式 1)单/双引号创建短字符串 s hello worlds “hello world” 2)三个单/双引号创建短字符串 三个单/双引号一般用于多行文本的注释,如果将这样的字符串用print打印,或者赋给一个变量,…

3D游戏角色建模纹理贴图处理

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在本文中,我们将介绍 3D 纹理的基础知识,并讨…

【C语言】数据结构——排序二(快排)

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读:数组打印与交换1. 交换排序1.1 基本思想:1.2 冒泡与快排的异同 2. 冒泡排序2.1 基本思想2.2 …

【Unity动画系统】Animator有限状态机参数详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

校园跑腿小程序源码系统:取快递+寄快递+食堂超市跑腿 带完整的搭建教程

现如今,越来越多的校园生活服务需求涌现出来。为了满足学生们的日常需求,校园跑腿小程序应运而生。这款小程序集成了取快递、寄快递、食堂超市跑腿等功能,为学生们提供了一个方便、快捷的生活服务平台。 以下是部分代码的示例: 系…

openpose+smplx

boss不知道从哪淘换来的pose_iter_440000.caffemodel和basicModel_f_lbs_10_207_0_v1.0.0.pkl让我搞2d图像3d蒙皮,人都麻了,最后还是从头过了一下openpose和smplx。这里记录一下 openpose 这个是用来得到骨架坐标的,可以理解为(x,y,置信度)…

如何使用工具查看机系统信息,应用管理、文件管理

摘要 克魔助手是一款功能丰富的手机助手软件,提供了诸多实用的功能模块,包括手机系统信息显示、应用管理、文件管理、描述文件安装与测试、崩溃日志、实时日志、截图、活跃程序、性能监控和网络抓包等。本文将对克魔助手的界面概览和各功能模块进行详细…