mysql dba系统学习(12)mysql的数据文件 mysql dba系统学习(13)mysql的体系结构
2016-12-21 23:06
495 查看
mysql的数据文件
一,系统参数datadir
在MySQL 中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件 datadir指定的目录是数据库目录的上级目录,一般的创建数据库的时候会创建两个数据库mysql和test,如果再创建一个数据库的话就会多出一个对应的数据库文件夹
mysql> show variables like "%datadir%";
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| datadir | /usr/local/mysql/var/ |
+---------------+-----------------------
mysql> system ls /usr/local/mysql/var/
ibdata1 ib_logfile1 test test4.pid test4.wolf.org.pid
ib_logfile0 mysql test4.log test4.wolf.org.err
mysql> create database chen;
Query OK, 1 row affected (0.03 sec)
mysql> system ls /usr/local/mysql/var/
chen ib_logfile0 mysql test4.logtest4.wolf.org.err
ibdata1 ib_logfile1 test test4.pidtest4.wolf.org.pid
二,MyISAM 引擎的数据文件
我们来在chen数据库里面创建一个表试试看,会产什么变化!!
mysql> use chen;
Database changed
mysql> create table tt(id int ,name varchar(20)) engine=myisam;
Query OK, 0 rows affected (0.15 sec)
结果生成如下文件
[root@test4 ~]# cd /usr/local/mysql/var/chen/
[root@test4 chen]# ll -h
total 20K
-rw-rw----. 1 mysql mysql 61 Sep 4 20:04 db.opt
-rw-rw----. 1 mysql mysql 8.4K Sep 4 20:22 tt.frm
-rw-rw----. 1 mysql mysql 0 Sep 4 20:22 tt.MYD
-rw-rw----. 1 mysql mysql 1.0K Sep 4 20:22 tt.MYI
“.frm”文件
与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”文件。所有的“.frm”文件都存放在所属数据库的文件夹下面。而且大小也不会变化
“.MYD”文件
“.MYD”文件是MyISAM 存储引擎专用,存放MyISAM 表的数据。每一个MyISAM 表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。
“.MYI”文件
“.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。
三,innodb
引擎的数据文件
innodb_file_per_table参数的作用是决定innodb引擎的数据是不是每个表一个文件,也就是说是不是每个表独享一个表文件。off表示的是共享,on表示的是独享
mysql> show variables like "%per_table%";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF |
+-----------------------+-------+
1 row in set (0.01 sec)
“.ibd”文件和ibdata
文件
这两种文件都是存放Innodb 数据的文件,之所以有两种文件来存放Innodb 的数据(包括索引),是因为Innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。 独享表空间存储方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和MyISAM数据相同的位置。
如果选用共享存储表空间来存放数据,则会使用ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。ibdata 文件可以通过innodb_data_home_dir 和innodb_data_file_path两个参数共同配置组成, innodb_data_home_dir 配置数据存放的总目录,
而innodb_data_file_path 配置每一个文件的名称。当然,也可以不配innodb_data_home_dir而直接在innodb_data_file_path参数配置的时候使用绝对路径来完成配置。
mysql> show variables like "%innodb_data%";
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | /usr/local/mysql/var |
+-----------------------+------------------------+
innodb_data_file_path中可以一次配置多个ibdata文件。文件可以是指定大小,也可以是自动扩展的,但是Innodb 限制了仅仅只有最后一个ibdata 文件能够配置成自动扩展类型。当我们需要添加新的ibdata 文件的时候,只能添加在innodb_data_file_path配置的最后,而且必须重启MySQL 才能完成ibdata 的添加工作。
我们把参数innodb_file_per_table设置成on试试有什么变化,那么这个时候就是一个表一个数据文件了。。。
mysql> show variables like "%per_table%";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
mysql> use chen
Database changed
mysql> create table cc(id int ,name varchar(20)) engine=innodb;
Query OK, 0 rows affected (0.14 sec)
mysql> insert into cc values(1,'rdcgggiiii');
Query OK, 1 row affected (0.08 sec)
mysql> insert into cc select * from cc;
Query OK, 1 row affected (0.62 sec)
Records: 1 Duplicates: 0 Warnings: 0
生成的.idb数据文件
[root@test4 chen]# pwd
/usr/local/mysql/var/chen
[root@test4 chen]# ls
cc.frm cc.ibd db.opt ss.frm tt.frm tt.MYD tt.MYI
mysql的体系结构
from: http://wolfword.blog.51cto.com/4892126/1288777 http://wolfword.blog.51cto.com/4892126/1288782
一,系统参数datadir
在MySQL 中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件 datadir指定的目录是数据库目录的上级目录,一般的创建数据库的时候会创建两个数据库mysql和test,如果再创建一个数据库的话就会多出一个对应的数据库文件夹
mysql> show variables like "%datadir%";
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| datadir | /usr/local/mysql/var/ |
+---------------+-----------------------
mysql> system ls /usr/local/mysql/var/
ibdata1 ib_logfile1 test test4.pid test4.wolf.org.pid
ib_logfile0 mysql test4.log test4.wolf.org.err
mysql> create database chen;
Query OK, 1 row affected (0.03 sec)
mysql> system ls /usr/local/mysql/var/
chen ib_logfile0 mysql test4.logtest4.wolf.org.err
ibdata1 ib_logfile1 test test4.pidtest4.wolf.org.pid
二,MyISAM 引擎的数据文件
我们来在chen数据库里面创建一个表试试看,会产什么变化!!
mysql> use chen;
Database changed
mysql> create table tt(id int ,name varchar(20)) engine=myisam;
Query OK, 0 rows affected (0.15 sec)
结果生成如下文件
[root@test4 ~]# cd /usr/local/mysql/var/chen/
[root@test4 chen]# ll -h
total 20K
-rw-rw----. 1 mysql mysql 61 Sep 4 20:04 db.opt
-rw-rw----. 1 mysql mysql 8.4K Sep 4 20:22 tt.frm
-rw-rw----. 1 mysql mysql 0 Sep 4 20:22 tt.MYD
-rw-rw----. 1 mysql mysql 1.0K Sep 4 20:22 tt.MYI
“.frm”文件
与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”文件。所有的“.frm”文件都存放在所属数据库的文件夹下面。而且大小也不会变化
“.MYD”文件
“.MYD”文件是MyISAM 存储引擎专用,存放MyISAM 表的数据。每一个MyISAM 表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。
“.MYI”文件
“.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。
三,innodb
引擎的数据文件
innodb_file_per_table参数的作用是决定innodb引擎的数据是不是每个表一个文件,也就是说是不是每个表独享一个表文件。off表示的是共享,on表示的是独享
mysql> show variables like "%per_table%";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF |
+-----------------------+-------+
1 row in set (0.01 sec)
“.ibd”文件和ibdata
文件
这两种文件都是存放Innodb 数据的文件,之所以有两种文件来存放Innodb 的数据(包括索引),是因为Innodb 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。 独享表空间存储方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和MyISAM数据相同的位置。
如果选用共享存储表空间来存放数据,则会使用ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。ibdata 文件可以通过innodb_data_home_dir 和innodb_data_file_path两个参数共同配置组成, innodb_data_home_dir 配置数据存放的总目录,
而innodb_data_file_path 配置每一个文件的名称。当然,也可以不配innodb_data_home_dir而直接在innodb_data_file_path参数配置的时候使用绝对路径来完成配置。
mysql> show variables like "%innodb_data%";
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | /usr/local/mysql/var |
+-----------------------+------------------------+
innodb_data_file_path中可以一次配置多个ibdata文件。文件可以是指定大小,也可以是自动扩展的,但是Innodb 限制了仅仅只有最后一个ibdata 文件能够配置成自动扩展类型。当我们需要添加新的ibdata 文件的时候,只能添加在innodb_data_file_path配置的最后,而且必须重启MySQL 才能完成ibdata 的添加工作。
我们把参数innodb_file_per_table设置成on试试有什么变化,那么这个时候就是一个表一个数据文件了。。。
mysql> show variables like "%per_table%";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
mysql> use chen
Database changed
mysql> create table cc(id int ,name varchar(20)) engine=innodb;
Query OK, 0 rows affected (0.14 sec)
mysql> insert into cc values(1,'rdcgggiiii');
Query OK, 1 row affected (0.08 sec)
mysql> insert into cc select * from cc;
Query OK, 1 row affected (0.62 sec)
Records: 1 Duplicates: 0 Warnings: 0
生成的.idb数据文件
[root@test4 chen]# pwd
/usr/local/mysql/var/chen
[root@test4 chen]# ls
cc.frm cc.ibd db.opt ss.frm tt.frm tt.MYD tt.MYI
mysql的体系结构
from: http://wolfword.blog.51cto.com/4892126/1288777 http://wolfword.blog.51cto.com/4892126/1288782
相关文章推荐
- mysql dba系统学习(12)mysql的数据文件
- mysql dba系统学习(13)mysql的体系结构
- mysql dba系统学习(8)查询日志文件功能
- mysql dba系统学习(8)查询日志文件功能 mysql dba系统学习(9)slow query log慢查询日志功能
- mysql dba系统学习(2)了解mysql的源码目录及源文件
- mysql dba系统学习(11)管理innodb引擎的redo log日志的一个问题
- UNIX环境高级编程学习之第六章系统数据文件和信息-取所有组名、GID
- 个人学习代码保存:例12.读取GridView文件中的数据到Excel文件
- 数据恢复学习伊始————文件系统(转自维基百科)
- mysql dba系统学习(4)mysql的多实例multi启动停止 推荐
- mysql dba系统学习(15)mysql用户管理之二
- UNIX环境高级编程学习之第六章系统数据文件和信息-修改第四章实现的Shell的“ls -l”功能
- mysql dba系统学习(7)二进制日志之三
- 数据库MySQL免安装版本在Windows系统上更改数据文件目录
- SAP BW_PA_文件_特征数据——视频学习笔记13
- mysql dba系统学习(9)slow query log慢查询日志功能
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- UNIX环境高级编程学习之第六章系统数据文件和信息 用链表的形式读出一个服务器的远程用户登入登出信息
- UNIX环境高级编程学习之第六章系统数据文件和信息-取所有用户名和UID, GID
- MySQL学习笔记12:数据类型