数据库常用的两种引擎有Innodb和Myisam,关于二者的区别参考:https://www.cnblogs.com/qlqwjy/p/7965460.html

1.关于数据库的存储在两种引擎的存储是一样的

  数据库的存储的都是在data目录下新建一个与数据库名字相同的文件夹,且每个文件夹内默认存放一个db.opt文件。删掉数据库也会删掉对应的文件夹。

如果我们采用的是windows操作系统,并且是默认安装位置,存放数据库的目录是在:  C:\ProgramData\MySQL\MySQL Server 5.7\Data  ,比如我查看我的数据库:

  1. mysql> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | hibernate |
  7. | mysql |
  8. | performance_schema |
  9. | sys |
  10. | testdb |
  11. +--------------------+
  12. 6 rows in set (0.00 sec)

查看目录:

  当然了,生成数据库的文件位置我们可以自己指定,windows是my.ini配置文件,如下面的配置会将我们的数据库生成到G盘对应目录:

  1. # Path to the database root
  2. datadir=G:\mysql572\Data

2.关于Innodb引擎存储表结构以及数据的位置

  innnodb存储表结构的时候是 frm文件存储,比如我们有个表叫test,在其数据库对应的文件夹下会有test.fm文件生成。其实myisam也是这样的存储方式。

  innodb采用表空间(tablespace)来管理数据,存储表数据和索引,

    InnoDB数据库文件(即InnoDB文件集,ib-file set):

    ibdata1、ibdata2等:系统表空间文件,存储InnoDB系统信息和用户数据库表数据和索引,所有表共用。(共用表空间),其存放位置是在Data文件夹内。可以通过以下配置进行设置其大小与可扩展:

  1. innodb_data_file_path = ibdata1:50M:autoextend

注意:下面是mysql5.6.6之后的单表空间

  在mysql5.6.6可以对每个表都设置一个表空间(单表表空间文件),开启可以通过全局变量开启,开启之后每个表都有一个对应的.ibd与其对应,比如上面有一个表的名字为  test  ,则在其数据库文件夹下就会有  test.frm(存放表结构)与test.ibd(存放数据与索引等信息)

  1. # When innodb_file_per_table is enabled (the default in 5.6.6 and higher), InnoDB stores the data and indexes for each newly created table
  2. # in a separate .ibd file, rather than in the system tablespace.
  3. innodb_file_per_table=1

  

  查看是否开启单独表空间:

  1. mysql> show variables like '%innodb_file_per_table%';
  2. +-----------------------+-------+
  3. | Variable_name | Value |
  4. +-----------------------+-------+
  5. | innodb_file_per_table | ON |
  6. +-----------------------+-------+
  7. 1 row in set, 1 warning (0.00 sec)

  例如下面就是单表空间开启:-------------------(数据库的名字是testdb,@6bxxx是表名字为中文)

补充:共用表空间和单独表空间的优缺点如下

独立表空间的优点:
1.每个表都有自已独立的表空间。
2.每个表的数据和索引都会存在自已的表空间中。
3.可以实现单表在不同的数据库中移动。
4.空间可以回收(drop/truncate table方式操作表空间不能自动回收)
5.对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。

缺点:
单表增加比共享空间方式更大。

共享表空间的优点:
1)可以放表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同的文件上)。
所以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,
也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。
2)表数据和表描述放在一起方便管理。 
缺点:
所有的数据和索引存放到一个文件中,将有一个很常大的文件,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间
中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日志系统这类应用最不适合用共享表空间。

总结:MySQL数据库是由N多表组成的,每个表有自己的表定义文件.frm文件,表索引文件,表数据文件。INNODB的索引文件和数据文件是在一起的,MYISAM是分开的。
  对于表空间,INNODB分成共享表空间和独享表空间2种。共享的情况下,所有表的数据都存在一个文件里,独享情况下,每个表单独文件存储此表的数据。

3. 关于Myisam引擎的数据存储结构

  Myisam存储表结构的时候是 frm文件存储,比如我们有个表叫test,在其数据库对应的文件夹下会有test.fm文件生成。

  .MYD (MYData)是数据文件的扩展名

  .MYI是索引(my index)。

  上面三种存储结构都是在数据库对应的目录下面。

例如:

4.查看数据库的引擎与修改数据库默认引擎

1.  关于引擎的查询使用如下:

看你的mysql现在已提供什么存储引擎:
  mysql> show engines;
 
看你的mysql当前默认的存储引擎:
  mysql> show variables like '%storage_engine%';
你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
  mysql> show create table 表名;
2、设置InnoDB为默认引擎:(类似于修改全局变量)
  在配置文件my.ini中的 [mysqld] 下面加入下面配置:(mysql5.7默认已经将innodb作为默认的搜索引擎)
    default-storage-engine=INNODB 

补充:err日志记录文件在两种引擎中也是一样的:MicroWin10-1535.err

我们可以在系统中通过全局变量查询日志位置:(.\代表Data目录所在文件夹,后面是日志文件名称)

  1. mysql> show variables like 'log_error';
  2. +---------------+-----------------------+
  3. | Variable_name | Value |
  4. +---------------+-----------------------+
  5. | log_error | .\MicroWin10-.err |
  6. +---------------+-----------------------+
  7. row in set, warning (0.01 sec)

如果想修改日志文件位置以及名称,我们可以在my.ini文件进行配置:

  1. # Binary Logging.
  2. log-error="MicroWin10-1535.err"

  

innodb和myisam数据库文件存储详解以及mysql表空间的更多相关文章

  1. Innodb、MYISAM的文件存储结构

    MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQLserver所创建的数据库文件和MySQL所用存储引擎创建的数据库文件. 查看MySql数据库物理文件存 ...

  2. 重新学习MySQL数据库7:详解MyIsam与InnoDB引擎的锁实现

    重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同. 三类常见引擎: MyIsam :不支持事务,不 ...

  3. (转)Mysql数据库之Binlog日志使用总结Linux下用户组、文件权限详解

    Linux下用户组.文件权限详解 原文:http://blog.csdn.net/sdulibh/article/details/51566772 用户组 在linux中的每个用户必须属于一个组,不能 ...

  4. DB2创建数据库常用参数详解

    转自http://czmmiao.iteye.com/blog/1335801 DB2创建数据库常用参数详解 本文只介绍DB2 create database语法中的常用参数http://publib ...

  5. Hbase存储详解

    转自:http://my.oschina.net/mkh/blog/349866 Hbase存储详解 started by chad walters and jim 2006.11 G release ...

  6. SqlServer数据库性能优化详解

    数据库性能优化详解 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量.为达到此目的,需要了解应用程序的需求和数据 ...

  7. 数据库开发-pymysql详解

    数据库开发-pymysql详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python支持的MySQL驱动 1>.什么是驱动 与MySQL通信就是典型的CS模式.Se ...

  8. Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  9. 【山外笔记-数据库】Memcached详解教程

    本文打印版文档下载地址 [山外笔记-数据库]Memcached详解教程-打印版.pdf 一.Memcached数据库概述 1.Memcached简介 (1)Memcached是一个自由开源的,高性能, ...

随机推荐

  1. 小学四则运算APP 第一个冲刺 第二天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次程序是为了解决上次判断的问题,但是还是出现新的问题页面无法调整,需要进行改进 本次改进代码 ...

  2. Arduino下读取DHT22温湿度(不使用第三方库)

    代码如下: #include <inttypes.h> /* * LED */ unsigned ; /* * DHT22配置程序 */ unsigned ; #define DHT_OK ...

  3. JDBC学习笔记——PreparedStatement的使用

    PreparedStatement public interface PreparedStatement extends Statement;可以看到PreparedStatement是Stateme ...

  4. AIX上安装配置DB2

    在2台P550数据库主机上安装DB2 V8.2,两台数据库主机间进行数据库HA配置,实现数据库双机互备. 本文档编写以磁盘大小360G,数据库名CRAMS_JS为例. 设备准备 请系统管理员协助划分D ...

  5. 小程序开发 js里面array操作的方法列表。

  6. OneZero第四周第二次站立会议(2016.4.12)

    1. 时间: 13:00--13:10  共计10分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...

  7. 从0到1搭建基于Kafka、Flume和Hive的海量数据分析系统(一)数据收集应用

    大数据时代,一大技术特征是对海量数据采集.存储和分析的多组件解决方案.而其中对来自于传感器.APP的SDK和各类互联网应用的原生日志数据的采集存储则是基本中的基本.本系列文章将从0到1,概述一下搭建基 ...

  8. 洛谷P4831 Scarlet loves WenHuaKe

    这道题告诉我们推式子的时候头要够铁. 题意 问一个\(n\times m\)的棋盘,摆上\(n\times 2\)个中国象棋的炮使其两两不能攻击的方案数,对\(998244353\)取模. \((n\ ...

  9. 5月14日 绿城育华NOIP巨石杯试卷解析

    [题外话] 感谢UBUNTU为保存程序做出贡献:https://paste.ubuntu.com : 感谢洛谷OJ的私人题库保存题面:https://www.luogu.org : 现在我的题解的所有 ...

  10. 【bzoj3160】 万径人踪灭

    http://www.lydsy.com/JudgeOnline/problem.php?id=3160 (题目链接) 题意 给定一个由'a'和'b'构成的字符串,求不连续回文子序列的个数. Solu ...