返回顶部
首页 > 资讯 > 数据库 >MySQL 5.7如何创建一个表空间
  • 667
分享到

MySQL 5.7如何创建一个表空间

2024-04-02 19:04:59 667人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关Mysql 5.7如何创建一个表空间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 mysql里面的文件蛮有意思,之前大体有两个参数来

这期内容当中小编将会给大家带来有关Mysql 5.7如何创建一个表空间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

mysql里面的文件蛮有意思,之前大体有两个参数来做基本的控制。一个是innodb_data_file_path就是一个共享表空间,数据都往这一个文件里放,也就是ibdata1,这个文件其实角色是有重复的,undo,数据都会放在一起。ibdata1会持续增长,无法收缩。另外一个参数是innodb_file_per_table,这样一来,就成了独立表空间,通俗一些就是每一个表都有独立的文件.frm和.ibd,而且实际中使用独立表空间还是比较普遍的,对于delete的操作影响Mysqloracle就大大不同。

  后来到了MySQL 5.7.5,新增了在线阶段undo log的功能,让undo从原本的ibdata1剥离出来,而对于通用的独立表空间的应用场景,MySQL也提供了另外一种管理方式,就是General tablespace。其实这个特性在Oracle中已经非常普遍,换个角度来理解就很容易了,它没有库的概念,可以在多个库里建属于同一表空间的表。

为了支持这个特性,主要做了两部分改动:Innodb层的支持及Server层对MDL子模块的改动。   

    创建一个表空间的语句很简单,语法如下:

CREATE TABLESPACE tablespace_name    ADD DATAFILE 'file_name'
    [FILE_BLOCK_SIZE = value]
        [ENGINE [=] engine_name]

大体的格式就是create tablespace xxx add datafile 'xxxx' engine=innodb; 这样的方式,存储单位默认是16k。

create tablespace general_ts1  add datafile 'general_ts1_01.dbf'   engine=innodb;
ERROR 3121 (HY000): Incorrect File Name 'general_ts1_01.dbf'.

这里需要说明的一点是,文件路径可以是绝对的,也可以是相对的。但是文件名就得是.ibd的格式。

 create tablespace general_ts1  add datafile 'general_ts1_01.ibd'   engine=innodb;
Query OK, 0 rows affected (0.06 sec)

当然我们可以使用create table xxx 指定tablespace的方式,或者是alter table 指定tablespace的方式。

下面这种方式在GTID下是不支持的,值得说明一下。

create table test_ts tablespace general_ts1 as  select * from test ;
ERROR 1786 (HY000): Statement violates GTID consistency: CREATE TABLE ... SELECT.

我们换一个姿势,创建一个表指定表空间。

create table test_ts (id int,name varchar(30)) tablespace general_ts1;
Query OK, 0 rows affected (0.04 sec)查看表的建表语句就可以看得很清楚了。

> show create table test_ts;
| test_ts | CREATE TABLE `test_ts` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

我们来对比测试一下,重新指定一个表users,大概有80多万的数据量。

> select count(*)from users;
+----------+
| count(*) |
+----------+
|   817975 |
+----------+

可以看到在修改前的表usres是存在两个独立的文件。

-rw-r----- 1 mysql mysql       8606 Dec  4 22:48 users.frm
-rw-r----- 1 mysql mysql   41943040 Dec  4 22:48 users.ibd

使用alter语句来修改,整个过程很快

> alter table users tablespace general_ts1;
Query OK, 0 rows affected (1.87 sec)
Records: 0  Duplicates: 0  Warnings: 0

这个时候目录下只存在一个定义文件了,数据都放到新建的表空间了。

-rw-r----- 1 mysql mysql       8606 Jan  4 22:46 users.frm

我们简单解析一下这个定义文件,看看内容和原来有什么差别,可以看到有了新的表空间的标识。

# strings users.frm
PRIMARY
InnoDB
general_ts1
)                                        
user_id
user_name
user_id
user_name

原本空白的数据文件马上就有了数据。

-rw-r----- 1 mysql mysql   41943040 Jan  4 22:46 general_ts1_01.ibd

如果我们修改表空间为独立表空间的方式,也是可以的。

> ALTER TABLE users TABLESPACE=innodb_file_per_table;
Query OK, 0 rows affected (2.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

有一个差别就是建表DDL和原来的格式就不大一样了。

> show create table users;
| users | CREATE TABLE `users` (
  `user_id` int(11) unsigned NOT NULL,
  `user_name` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

修改完成后.ibd文件会重新生成。

如果要查看表空间的信息,在使用general tablespace的情况下查看数据字典就会有一些差别。比如数据库test下存在一个表users,在视图INNODB_SYS_TABLESPACES中是只能看到表空间的基础定义信息,general_ts1而找不到users的字样。

上述就是小编为大家分享的MySQL 5.7如何创建一个表空间了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 5.7如何创建一个表空间

本文链接: https://lsjlt.com/news/66387.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 5.7如何创建一个表空间
    这期内容当中小编将会给大家带来有关MySQL 5.7如何创建一个表空间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 MySQL里面的文件蛮有意思,之前大体有两个参数来...
    99+
    2024-04-02
  • mysql如何创建一个表
    这篇文章给大家分享的是有关mysql如何创建一个表的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。1.登陆成功后,首先进入某一个数据库 (不是指数据库服务器)use t1; //...
    99+
    2024-04-02
  • Oracle 如何创建表空间
      在Oracle中如何创建表空间呢?主要有两种方式:一种是用SQL命令的方式,另外一种是通过Oracle客户端Enterprise Manager Console来创建。下面分别介绍一下:1 通...
    99+
    2024-04-02
  • navicat如何创建表空间
    navicat 中创建表空间的步骤:连接到数据库并导航到“表空间”。右键单击“表空间”文件夹并选择“新建”>“表空间”。在“表空间”对话框中指定表空间名称、添加数据文件并配置其他设...
    99+
    2024-04-24
    navicat
  • oracle如何创建表空间
    oracle 中创建表空间需要以下步骤:连接到数据库;使用 create tablespace 语句指定表空间名称、数据文件位置和大小;设置默认存储属性,包括初始大小、下一个大小和最小扩...
    99+
    2024-06-13
    oracle
  • Oracle如何创建新undo表空间
    这篇文章主要介绍Oracle如何创建新undo表空间,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在处理一则ORA-600 [4194]案例时,参考MOS文档:Step by ste...
    99+
    2024-04-02
  • 创建表空间和临时表空间
     查看数据文件存放路径select FILE_ID,FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE from dba_data_files order ...
    99+
    2024-04-02
  • mysql如何给表创建一个分区
    在MySQL中,可以使用CREATE TABLE语句来创建一个分区表。以下是一个示例: CREATE TABLE employee ...
    99+
    2024-04-20
    mysql
  • Oracle创建表空间
    建立表空间并设置为默认表空间(最大32GB) 1. create temporary tablespace test tempfile ‘/home/oracle/oradata/abc/test.dbf‘ size 50m aut...
    99+
    2021-02-11
    Oracle创建表空间 数据库入门 数据库基础教程 数据库 mysql
  • oracle创建表空间
    drop tablespace qb including contents and datafiles; DROP TABLE...
    99+
    2024-04-02
  • mysql 根据一个表创建另一个表
    可以使用以下语法来根据一个表创建另一个表: CREATE TABLE new_table_nameAS SELECT * FROM old_table_name; 这将会复制旧表中的所有行和列到新表中。可以在创建新表时增加筛选条件或...
    99+
    2023-10-18
    mysql 数据库
  • 如何搭建一个SSM空间
    这篇文章给大家介绍如何搭建一个SSM空间,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一章:搭建整合环境1. 搭建整合环境整合说明:SSM整合可以使用多种方式,咱们会选择XML + 注解的方式整合的思路2.1. 先搭...
    99+
    2023-06-14
  • oracle如何创建用户和表空间
    要在Oracle数据库中创建用户和表空间,您需要具有适当的权限。以下是创建用户和表空间的步骤: 创建表空间: CREATE TA...
    99+
    2024-04-09
    oracle
  • oracle11g给某个用户创建表空间
    --创建临时表空间 create temporary tablespace sunbing_temp  tempfile 'd:\oracle\data\ygz_temp.db...
    99+
    2024-04-02
  • oracle如何创建实例、建库、建表、扩展表空间
    这篇文章主要介绍oracle如何创建实例、建库、建表、扩展表空间,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!版本:oracle 11g 一、创建实例(详细参考:http:...
    99+
    2024-04-02
  • es6如何创建一个空对象
    这篇文章给大家分享的是有关es6如何创建一个空对象的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建一个空对象有时我们需要创建一个纯净的对象, 不包含什么原型链等等. 一般创建空...
    99+
    2024-04-02
  • python如何创建一个空字典
    Python中可以使用两种方式来创建一个空字典:1. 使用花括号{}来创建一个空字典:```pythonempty_dict = {...
    99+
    2023-09-13
    python
  • oracle创建表空间,临时表空间,用户
    create tablespace a_dat datafile 'D:\oracle\product\10.2.0\oradata\orcl\a_dat.dbf' size 1024m autoexten...
    99+
    2024-04-02
  • Oracle RAC如何创建表空间和用户
    这篇文章主要介绍Oracle RAC如何创建表空间和用户,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 创建表空间:create tablespace ...
    99+
    2024-04-02
  • oracle如何创建用户指定表空间
    要在Oracle中创建一个用户并指定表空间,可以按照以下步骤进行操作:1. 以具有适当权限的用户登录到Oracle数据库。2. 使用...
    99+
    2023-08-23
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作