欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 【MySQL】mysql数据目录

【MySQL】mysql数据目录

2025/7/7 6:55:58 来源:https://blog.csdn.net/qq_45795794/article/details/145153957  浏览:    关键词:【MySQL】mysql数据目录

目录

  • 1、背景
  • 2、版本
  • 3、数据目录
  • 4、总结

1、背景

安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的数据都是存储在这个目录中,可以大概了解一下这个目录下是怎么存储数据的。

2、版本

mysql> status
--------------
E:\mysql_install\mysql\bin\mysql.exe  Ver 8.0.40 for Win64 on x86_64 (MySQL Community Server - GPL)

3、数据目录

可以通过sql命令来查找数据目录,命令如下:

mysql> show variables like 'datadir';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| datadir       | E:\mysql_install\mysql\Data\ |
+---------------+------------------------------+
1 row in set, 1 warning (0.00 sec)

再看看这个目录有哪些文件:

$ ls E:\\mysql_install\\mysql\\Data\\
'#ib_16384_0.dblwr'   A030414-NC.err          A030414-NC-bin.000003   ca.pem            ib_buffer_pool   mysql.ibd             server-cert.pem   undo_001
'#ib_16384_1.dblwr'   A030414-NC.pid          A030414-NC-bin.index    ca-key.pem        ibdata1          performance_schema/   server-key.pem    undo_002
'#innodb_redo'/       A030414-NC-bin.000001   A030414-NC-slow.log     client-cert.pem   ibtmp1           private_key.pem       sys/
'#innodb_temp'/       A030414-NC-bin.000002   auto.cnf                client-key.pem    mysql/           public_key.pem        

看一下有哪些数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

查询结果有4个可以发现除了data目录下除了没有名为information_schema的目录,其它三个数据库都存在同名的目录,其它三个数据库的数据就存在对应的同名目录里,只是information_schema比较特殊。接下来我们创建一个新的数据库:

mysql> create database test;

然后可以发现data目录下多了一个test的空目录,里面啥也没有,每创建一个数据库,data目录下就会多一个同名的目录:

$ ll E:\\mysql_install\\mysql\\Data\\test
total 0

再创建一张InnoDB的表看看:

mysql> use test;
Database changed
mysql> CREATE TABLE test1-> (->     id INT AUTO_INCREMENT PRIMARY KEY,->     str1 VARCHAR(255) NOT NULL DEFAULT '',->     str2 VARCHAR(255),->     str3 CHAR(5),->     str4 VARCHAR(255),->     str5 CHAR(10),->     INDEX idx_str1 (str1),->     INDEX idx_str4_str5 (str4, str5)-> ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
Query OK, 0 rows affected (0.05 sec)

可以发现test目录下产生了一个test1.ibd的二进制文件:

$ ll E:\\mysql_install\\mysql\\Data\\test\\
total 192
-rw-r--r-- 1 xxx 1049089 147456  115 10:11 test1.ibd

我们的表结构信息和插入此表的数据都存在这个文件中,这个文件也可以叫做独立表空间,里面存储多个,我们的数据都在页上。以前版本的mysql默认使用的是系统表空间,也就是所有表数据和信息存储到一个公共的地方,对应着数据目录data下的ibdata1文件,这个文件大小和路径还有名称都是可以在配置文件修改的。有的版本还会把表结构信息单独存储到表名.frm里,和存储数据文件分开。接下来再创建一个MyISAM存储引擎的表来看看有什么区别:

mysql> CREATE TABLE test2-> (->     id INT AUTO_INCREMENT PRIMARY KEY,->     str1 VARCHAR(255) NOT NULL DEFAULT '',->     str2 VARCHAR(255),->     str3 CHAR(5),->     str4 VARCHAR(255),->     str5 CHAR(10),->     INDEX idx_str1 (str1),->     INDEX idx_str4_str5 (str4, str5)-> ) ENGINE = MyISAM DEFAULT CHARSET = utf8;
Query OK, 0 rows affected, 1 warning (0.02 sec)

查看data目录下test目录下有哪些文件:

$ ll -a E:\\mysql_install\\mysql\\Data\\test\\
total 212
drwxr-xr-x 1 xxx 1049089      0  115 10:57 ./
drwxr-xr-x 1 xxx 1049089      0  115 09:59 ../
-rw-r--r-- 1 xxx 1049089 147456  115 10:41 test1.ibd
-rw-r--r-- 1 xxx 1049089      0  115 10:57 test2.MYD
-rw-r--r-- 1 xxx 1049089   4096  115 10:57 test2.MYI
-rw-r--r-- 1 xxx 1049089   7733  115 10:57 test2_366.sdi

发现生成了与test2相关的3个文件,这3个文件的作用分别为:

1、test2.MYD:存放数据信息
2、test2.MYI:存放索引信息
3、test2_366.sdi:存放表结构信息

有的版本表结构信息是存储在表名.frm文件中。

4、总结

本文大概讲了一下我们插入数据库的用户记录是存储在哪些目录哪些文件里的,注意不同版本的数据库存储的文件是有区别的,不过都大差不差,了解一下就行。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词