当前位置: 首页 > news >正文

【mysql进阶】4-7. 通用表空间

通⽤表空间 - General Tablespace

image-20241026220023831

1 通⽤表空间的作⽤和特性?

✅ 解答问题

  • 通⽤表空间是使⽤ CREATE tablespace 语法创建的共享InnoDB表空间

  • 通⽤表空间能够存储多个表的数据,与系统表空间类似也是共享表空间;

  • 服务器运⾏时会把表空间元数据保存在内存中,在表的数量相同的情况下,通⽤表空间⽐独⽴表空间的数量更少,所以消耗的内存也就更少;

  • 数据⽂件可以放置在数据⽬录或数据⽬录之外的其他位置,对于单独管理关键表⾮常有⽤;

  • ⽀持所有的表格式和⾏格式的相关特性;

2 怎么创建通⽤表空间?

  • 创建通⽤表空间可以使⽤ CREATE TABLESPACE 语法。

  • CREATE TABLESPACE tablespace_name [ADD DATAFILE ‘file_name’] [FILE_BLOCK_SIZE = [value] [ENGINE [=] engine_name]

2.1 创建通⽤表空间的⽰例

  • ⽰例:在 data ⽬录下创建通⽤表空间

image-20241026220258352

  • ADD DATAFILE ⼦句在MySQL 8.0.14及以后的版本是可选的,之前是必需的。如果没有指定ADD DATAFILE ⼦句,则⾃动创建⼀个以 UUID 为⽂件名的表空间数据⽂件,通⽤表空间数据⽂件以 .ibd 为扩展名。

image-20241026220338709

2.2 创建通⽤表空间时要注意什么?

  • 可以在数据⽬录中创建通⽤表空间,也可以在数据⽬录之外创建通⽤表空间。为避免与隐式创建的独⽴表⽂件表空间冲突,不⽀持在data⽬录的⼦⽬录中创建通⽤表空间。当在数据⽬录之外创建通⽤表空间时,该⽬录必须存在,并且必须在创建表空间之前让InnoDB识别,要使⽤⾃定义的⽬录可以通过系统 innodb_directories 指定。 Innodb_directories 是⼀个只读启动选项,配置后需要重新启动服务器。
  • Innodb_directories 默认值是 NULL ,同时 innodb_data_home_dir ,innodb_undo_directory 和 datadir 定义的⽬录会被附加到 innodb_directories 参数值中,在InnoDB启动时会⾃动被识别(包括⼦⽬录),⼿动指定⽬录的⽅式,如下所⽰:

image-20241026220516489

3 如何向通⽤表空间中添加表?

  • ⽰例:向通⽤表空间中添加表,在创建表时使⽤ TABLESPACE ⼦句指定通⽤表空间即可

image-20241026220617018

4 怎么删除通⽤表空间?

  • DROP TABLESPACE 语句⽤于删除⼀个InnoDB通⽤表空间,在删除通⽤表空间之前,必须将所有表从表空间中删除,如果表空间不为空,将返回错误。查询通⽤表空间中的表,可以使⽤下⾯的语句:
SELECT a.NAME AS space_name, b.NAME AS table_name FROM
INFORMATION_SCHEMA.INNODB_TABLESPACES a, INFORMATION_SCHEMA.INNODB_TABLES b
WHERE a.SPACE=b.SPACE AND a.NAME LIKE 'ts1';

image-20241026220732134

  • ⽰例:⼀个完整的通⽤表空间删除流程

image-20241026220755520

5 使⽤通⽤表空间时要注意什么?

  • 使⽤ TRUNCATE 或 DROP 语句截断或删除表时,通⽤表空间的空闲容量并不会释放,并且只能⽤于新的InnoDB表;

  • 通⽤表空间不属于任何数据库,使⽤ DROP DATABASE 操作数据库和属于该数据库所有的表时,并不会删除通⽤表空间。

  • tablespace_name 表空间名区分⼤⼩写

http://www.lryc.cn/news/469979.html

相关文章:

  • 2024 年互联网大厂 1300 多道 JAVA 面试题汇总,包含了程序员的所有技术点
  • 【开源免费】基于SpringBoot+Vue.JS在线文档管理系统(JAVA毕业设计)
  • Linux资源与网络请求
  • RPA技术重塑企业自动化的未来
  • 使用RabbitMQ实现延迟消息的完整指南
  • 阿里员工:阿里工作7年至少得P7吧,快的都P8了,年薪100W是正常的,80才算及格...
  • Django进一步掌握(10月22日)
  • C++从入门到起飞之——红黑树封装map和set 全方位剖析!
  • 【javax maven项目缺少_Maven的依赖管理 引入依赖】
  • 手搓一个定时器
  • AI提示词工程优化Prompt-GPT使用手册(科普一键收藏史上最强攻略)
  • 【数据结构】快速排序(三种实现方式)
  • 利用前向勾子获取神经网络中间层的输出并将其进行保存(示例详解)
  • CTF-RE 从0到N: S盒
  • MT-Pref数据集:包含18种语言的18k实例,涵盖多个领域。实验表明它能有效提升Tower模型在WMT23和FLORES基准测试中的翻译质量。
  • 【C++ 真题】B2099 矩阵交换行
  • AAPL: Adding Attributes to Prompt Learning for Vision-Language Models
  • MySQLDBA修炼之道-开发篇(一)
  • Spring MVC 知识点全解析
  • python 基于FastAPI实现一个简易的在线用户统计 服务
  • glibc中xdr的一个bug
  • Android Framework定制sim卡插入解锁pin码的界面
  • cc2530 Basic RF 讲解 和点灯讲解(1_1)
  • Android H5页面性能分析策略
  • 【前端面试】Typescript
  • 程序语言的内存管理:垃圾回收GC(Java)、手动管理(C语言)与所有权机制(Rust)(手动内存管理、手动管理内存)
  • 研究生论文学习记录
  • 毕业设计选题:基于Django+Vue的图书馆管理系统
  • #网络安全#NGSOC与传统SOC的区别
  • GCN+BiLSTM多特征输入时间序列预测(Pytorch)