[MySQL]数据目录的组织架构_MySQL
Jun 01, 2016 pm 01:28 PMbitsCN.com
[MySQL]数据目录的组织架构
归根到底,MySQL是运行在操作系统上的一个软件,它需要借助于文件系统存储数据,本文主要介绍MySQL数据目录的组织架构。
数据目录的位置
可以通过以下几个方法查看MySQL数据目录的位置:
1)对于一个正在运行的MySQL服务器来说,可以通过查看mysqld的进程获取MySQL数据目录的位置,如下所示:
1 |
|
其中的--datadir指定的就是数据目录的位置。
2)查看my.cnf的配置信息:
1 |
|
3)登陆数据库,运行show variables命令查看:
1 |
|
数据库在文件系统的表示方法
MySQL里,每个数据库都对应一个数据目录里的一个字目录,当你用create database db_name语句创建一个数据库时,将在数据目录下创建一个同名的子目录,在该子目录下,有一个db.opt文件,用于记录数据库默认的字符集和排序方式,如下所示:
1 |
|
表在文件系统的表示方式
因为MySQL支持多个存储引擎,所以表在文件系统的表示方式根据存储引擎的不同而不同。但无论哪种存储引擎,每个表至少对应一个同名的.frm文件,该文件用于描述表结构信息。除了.frm文件之外,各个存储引擎用于存储数据的文件各不相同,下面我们介绍几种常见的存储引擎:
MyISAM
- table_name.MYD:数据文件
- table_name.MYI:索引文件
MERGE
- table_name.MRG:文本文件
InnoDB
InnoDB表的存储是基于表空间的,有两种类型的表空间:
1)共享表空间:由数据目录里的一个或多个大文件构成,这些文件共同组成了一个在逻辑上连续不断的存储区域,共享表空间是通过参数innodb_data_file_path设置的,如下所示:
1 |
|
根据上面的配置,将在数据目录下创建两个文件ibdata1和ibdata2来存放innodb的数据。
2)独占表空间:当设置innodb_file_per_table = 1后,每个表对对应一个单独使用的表空间文件.ibd(在其对应的数据库目录下)
这里需要注意的是:即使你配置了独占表空间,共享表空间也是需要的,因为InnoDB的数据字典必须存放在共享表空间里。
视图和触发器在文件系统的表示方式
每个视图包含一个.frm文件,它包含该视图的定义和属性等。
触发器保存在一个.TRG文件里,里面包含着它的定义和属性,但文件不是以触发器命名,而是以触发器相关联的表命名。
存储过程和函数在文件系统的表示方法
MySQL的存储过程和函数分别存放在mysql数据库目录的proc*和func*文件里,如:
1 |
|
bitsCN.com

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

DeepSeek Web Versi Pintu Masuk Laman Web Rasmi DeepSeek

PI Node Teaching: Apakah nod pi? Bagaimana cara memasang dan menyediakan nod pi?

Mengapa pautan Bybit Exchange tidak dimuat turun dan dipasang secara langsung?

Gate Yishou App Muat Turun Laman Web Rasmi Gate.io App Muat turun Rasmi

Pintu Masuk Laman Web Rasmi Software COINSUPER Exchange

Pemasangan Laman Web Rasmi Bitget (Panduan Pemula 2025)

Tutorial Model R1 DeepSeek Local Local R1
