MySQL8.0新特性~General tablespaces

通用表空间创建语法

InnoDB and NDB:[ADD DATAFILE 'file_name'][AUTOEXTEND_SIZE [=] value]InnoDB only:[FILE_BLOCK_SIZE = value][ENCRYPTION [=] {'Y' | 'N'}]NDB only:USE LOGFILE GROUP logfile_group[EXTENT_SIZE [=] extent_size][INITIAL_SIZE [=] initial_size][MAX_SIZE [=] max_size][NODEGROUP [=] nodegroup_id][WAIT][COMMENT [=] 'string']InnoDB and NDB:[ENGINE [=] engine_name]Reserved for future use:[ENGINE_ATTRIBUTE [=] 'string']

创建通用表空间

例1:不指定数据文件路径

可以不指定数据文件路径创建通用表空间,这时候数据文件会默认创建在datadir路径下。

创建表空间:

mysql> create tablespace tbs1 add datafile 'tbs1.ibd';
Query OK, 0 rows affected (0.03 sec)mysql> show variables like 'datadir';
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| datadir       | /data/8801/data/ |
+---------------+------------------+
1 row in set (0.01 sec)mysql> select * from information_schema.innodb_tablespaces t join information_schema.innodb_datafiles d on t.SPACE=d.SPACE where t.NAME ='tbs1'\G
*************************** 1. row ***************************SPACE: 4NAME: tbs1FLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 65536
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.25SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x34PATH: tbs1.ibd
1 row in set (0.00 sec)

数据文件在datadir下

-rw-r----- 1 mysql mysql 114688 Jun 28 14:59 tbs1.ibd
[root@VM-20-8-centos data]# pwd
/data/8801/data

例2: 省略add datafile语句

MySQL 8.0.14版本之后,创建表空间时可以省略add datafile语句。这时MySQL会隐式创建具有唯一文件名的表空间数据文件。

mysql> create tablespace tbs2;
Query OK, 0 rows affected (0.02 sec)mysql> select * from information_schema.innodb_tablespaces t join information_schema.innodb_datafiles d on t.SPACE=d.SPACE where t.NAME ='tbs2'\G
*************************** 1. row ***************************SPACE: 5NAME: tbs2FLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 65536
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.25SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x35PATH: 27a191cd-351d-11ef-aaae-5254009ccf5d.ibd
1 row in set (0.00 sec)

查看数据文件
[root@VM-20-8-centos data]# ll
total 189072
-rw-r----- 1 mysql mysql 114688 Jun 28 15:08 27a191cd-351d-11ef-aaae-5254009ccf5d.ibd

例3:创建datadir路径外的表空间

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

innodb_directories参数的默认值为NULL。但是innodb_data_home_dir、innodb_undo_directory和datadir定义的目录会会附加到innodb_directories参数值上。

mysql> show variables like 'innodb_directories';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_directories |       |
+--------------------+-------+
1 row in set (0.00 sec)mysql> show variables like 'innodb_data_home_dir';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_data_home_dir |       |
+----------------------+-------+
1 row in set (0.00 sec)mysql> show variables like 'innodb_undo_directory';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_undo_directory | ./    |
+-----------------------+-------+
1 row in set (0.00 sec)mysql> show variables like 'datadir';
+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| datadir       | /data/8801/data/ |
+---------------+------------------+
1 row in set (0.00 sec)

修改innodb_directories变量参数需要修改MySQL配置文件,并重新启动MySQL服务。
例:创建datadir路径外的表空间

如果在未定义路径中创建通用表空间,由于不是已知目录,会发生如下ERROR 3121 (HY000)错误

mysql> create tablespace tb3 add datafile '/data/general/tb3.ibd';
ERROR 3121 (HY000): The directory does not exist or is incorrect.

修改配置文件,重启数据库, 创建目录并赋权


vi my.cnf
innodb_directories=/data/generalmkdir -p /data/general
chown mysql.mysql -R /data
mysql> create tablespace tb3 add datafile '/data/general/tb3.ibd';
Query OK, 0 rows affected (0.03 sec)mysql> select * from information_schema.innodb_tablespaces t join information_schema.innodb_datafiles d on t.SPACE=d.SPACE where t.NAME ='tb3'\G
*************************** 1. row ***************************SPACE: 6NAME: tb3FLAG: 18432ROW_FORMAT: AnyPAGE_SIZE: 16384ZIP_PAGE_SIZE: 0SPACE_TYPE: GeneralFS_BLOCK_SIZE: 4096FILE_SIZE: 114688ALLOCATED_SIZE: 65536
AUTOEXTEND_SIZE: 0SERVER_VERSION: 8.0.25SPACE_VERSION: 1ENCRYPTION: NSTATE: normalSPACE: 0x36PATH: /data/general/tb3.ibd
1 row in set (0.00 sec)

例4:创建InnoDB通用表空间的限制

可以在数据目录(datadir)中创建通用表空间。
但是为了避免与隐式创建的每个表一个文件的表空间发生冲突,不支持在数据目录(datadir)的子目录中创建InnoDB通用表空间。

如果在数据目录(datadir)的子目录中创建InnoDB通用表空间会报ERROR 3121 (HY000)错误。

mysql> create tablespace sqlplusdb_tb1 add datafile '/data/8801/data/tb4.ibd';Query OK, 0 rows affected (0.02 sec)mysql> 
mysql> 
mysql> create tablespace sqlplusdb_tb1 add datafile '/data/8801/data/test/tb5.ibd';
ERROR 1813 (HY000): Tablespace 'sqlplusdb_tb1' exists.
mysql> 

通用表空间中的表

例1:创建表指定通用表空间

和Oracle一样,MySQL在创建表时可以指定表空间也可以修改表的表空间。

mysql> use testdb;
Database changed
mysql> CREATE TABLE test_t1 (id INT) TABLESPACE tbs1 ;
Query OK, 0 rows affected (0.03 sec)mysql> SHOW CREATE TABLE  test_t1\G
*************************** 1. row ***************************Table: test_t1
Create Table: CREATE TABLE `test_t1` (`id` int DEFAULT NULL
) /*!50100 TABLESPACE `tbs1` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)mysql> select name as 'table_name',    space_type from    information_schema.innodb_tables where   name like '%test_t1%' \G
*************************** 1. row ***************************
table_name: test/t1
space_type: Single
*************************** 2. row ***************************
table_name: testdb/test_t1
space_type: General
2 rows in set (0.01 sec)

例2:修改表的表空间

通过ALTER TABLE语句的TABLESPACE选项可以修改表的表空间,将表在通用表空间、独立表空间或系统表空间之间进行移动。

例2-1:修改到不同的通用表空间中

通过ALTER TABLE tbl_name TABLESPACE [=] tablespace_name修改表到不同的通用表空间中

例:

mysql> ALTER TABLE test_t1 tablespace=tbs2;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

例2-2:修改表从独立表空间或系统表空间到通用表空间

mysql> select  name as 'table_name',   space_type from    information_schema.innodb_tables where name ='test/t1' \G
*************************** 1. row ***************************
table_name: test/t1
space_type: Single
1 row in set (0.00 sec)mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> alter table t1 tablespace=tbs1;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> select  name as 'table_name',   space_type from    information_schema.innodb_tables where name ='test/t1' \G
*************************** 1. row ***************************
table_name: test/t1
space_type: General
1 row in set (0.00 sec)

例2-3:修改表从通用表空间或系统表空间到独立表空间

可以通过如下命令修改表从通用表空间或系统表空间到独立表空间。

ALTER TABLE tbl_name TABLESPACE [=] innodb_file_per_table;

例2-4:修改表从通用表空间或独立表空间到系统表空间

可以通过如下命令修改表从通用表空间或独立表空间到系统表空间。
ALTER TABLE tbl_name TABLESPACE [=] innodb_system;

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

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

相关文章

React小记(五)_Hooks入门到进阶

React 16.8 版本 类组件 和 函数组件 两种组件共存,到目前 React 18 版本,官方已经不在推荐使用类组件,在函数组件中 hooks 是必不可少的,它允许我们函数组件像类组件一样可以使用组件的状态,并模拟组件的生命周期等一…

用Python写一个基于ai agent服务scrm,mes和erp系统的协同流程

要实现一个基于AI Agent的协同流程,我们需要首先了解SCRM、MES和ERP系统的基本功能和相互之间的关系。然后,我们可以用Python编写一个简单的示例,展示这些系统如何协同工作。以下是一个基本的协同流程示例: 1. 假设我们有一个SCRM…

高效数据采集监控平台 一体化平台 数据可视化!

提高工作效率,一直是各种厂家在寻找的方法。任何一种有效且实用的方法都值得去尝试。数据采集监控平台是一种能高效处理数据的方式,其主要工作内容是从各个产生数据的仪器设备传感器中采集数据、对数据进行集中整理整合、分析、显示、绘制图表、存储、传…

java基于ssm+jsp 扶贫惠农推介系统

1管理员功能模块 管理员输入个人的用户名、密码、角色登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的用户名、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的用户名、密码&am…

DigiRL:让 AI 自己学会控制手机

类似于苹果此前发布的Ferret-UI 的安卓开源平替。主要用于在 Android 设备上识别 UI 和执行指令,不同的是它利用了离线到在线强化学习(Offline-to-Online RL),能够快速适应应用更新或 UI 变化。

2023信息素养大赛国赛C++真题

2023信息素养大赛国赛C 第一题 给定一个五位数x,你需要重复做以下操作: 把数的各个数位进行由大到小排序和由小到大排序,得到的最大值和最小值,进行求差后作为新的x。 可以证明,在经过有限次操作后,x会循环出现。 …

总结:Hive

一、Hive介绍 Hive 是一个构建在 Hadoop 上的数仓工具,用于处理和查询存储在 HDFS 上的大规模数据。它使用类似 SQL 的 HiveQL 来执行查询,但背后是将查询任务转译成 MapReduce、Tez 或 Spark 等分布式计算任务来执行。Hive 的主要优势包括:…

麒麟桌面系统CVE-2024-1086漏洞修复

原文链接:麒麟桌面操作系统上CVE-2024-1086漏洞修复 Hello,大家好啊!今天给大家带来一篇在麒麟桌面操作系统上修复CVE-2024-1086漏洞的文章。漏洞CVE-2024-1086是一个新的安全漏洞,如果不及时修复,可能会对系统造成安全…

LeetCode:2710. 移除字符串中的尾随零

题目 给你一个用字符串表示的正整数 num ,请你以字符串形式返回不含尾随零的整数 num 。 示例 1: 输入:num “51230100” 输出:“512301” 解释:整数 “51230100” 有 2 个尾随零,移除并返回整数 “51230…

Spring MVC中使用ModelAndView传递数据

Spring MVC中使用ModelAndView传递数据 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨在Spring MVC中如何使用ModelAndView来传递数据。ModelAn…

Python并发编程:多线程与多进程实战

Python并发编程:多线程与多进程实战 一、引言 在Python编程中,并发编程是提高程序执行效率的重要技术之一。由于Python的全局解释器锁(GIL)的存在,使得多线程在CPU密集型任务上的性能提升有限,但在I/O密集…

Windows和Linux C++判断磁盘空间是否充足

基本是由百度Ai写代码生成的,记录一下。实现此功能需要调用系统的API函数。 对于Windows,可调用函数GetDiskFreeSpaceEx,使用该函数需要包含头文件windows.h。该函数的原型: 它的四个参数: lpDirectoryName&#xff0…

自然语言处理-BERT处理框架-transformer

目录 1.介绍 2.Transformer 2.1 引言 2.2 传统RNN网络的问题 2.3 整体架构 2.4 Attention 2.5 Self-Attention如何计算 3.multi-headed机制 4. BERT训练方法 1.介绍 BERT:当前主流的解决框架,一站式搞定NLP任务。(解决一个NLP任务时的考虑…

如何在Java中进行网络编程:Socket与NIO

如何在Java中进行网络编程:Socket与NIO 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的网络编程,重点介绍So…

人工智能设备pbootcms网站模板源码

模板介绍 人工智能行业发展趋势不断攀升逐渐成为了新业态,小编精心为大家收集整理了一款HTML5人工智能设备pbootcms网站模板整站源码下载,可帮助您快速建站以展示企业的产品与业务,响应式自适应设计也会适配所有浏览设备。 模板截图 源码下…

Python商务数据分析知识专栏(六)——Python数据分析的应用④Python数据分析实训

Python商务数据分析知识专栏(六)——Python数据分析的应用④Python数据分析实训 Python数据分析实训一.iris数据处理实训1.1 拓展学习资料&Python环境介绍1.2 读取数据&修改列名称1.3 以PythonConsole方式执行代码1.4 缺失值处理1.5 重置索引 二…

文心一言4.0免费使用

领取&安装链接:Baidu Comate 领取季卡 有图有真相 原理:百度comate使用文心一言最新的4.0模型。百度comate目前免费使用,可以借助comate达到免费使用4.0模型目的。 如何获得 点击「Baidu Comate 领取季卡 -> 领取权益」&#xff0…

华为OD机考题(​HJ32 密码截取)

前言 经过前期的数据结构和算法学习,开始以OD机考题作为练习题,继续加强下熟练程度。有需要的可以同步练习下。 描述 Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA&…

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构,它们各自有不同的优缺点,适用于不同的应用场景。 顺序表(Sequential List,通常指数组) 优点: 随机访问:可以通过索引快速访问任…

使用Endnote中英文等的实现和GB7714格式

Endnote是一款被广泛使用的文献管理软件,其是SCI(Thomson Scientific 公司)的官方软件,支持国际期刊的参考文献格式有3776 种【也可以自定义期刊引用格式】。 软件非常方便科研狗进行文献整理,写笔记,做备…