MyISAM和InnoDB下创建数据库表

1、MyISAM下创建数据库表

use choose;
set  default_storage_engine=MyISAM
create table my_table(
    today datetime,
    name char(20)
);

执行完上面的代码,会在choose数据库目录文件下,创建四个文件:

  • db.opt -----> 主要记录当前数据库的默认字符集及字符序等信息
  • my_table.frm -----> 表结构定义文件
  • my_table.MYD -----> 用于存放数据
  • my_table.MYI -----> 用于存放索引
备份操作:

只需要将整个数据库目录(choose目录)复制一份即可

备份前需要用“ flush tables with read lock ;[禁止了所有数据库表的更新操作,但是无法禁止数据库表的查询操作] ” 将服务器内的数据刷新到数据库文件中,同时锁定所有的表,以保证期间不会有数据写入

备份后需要用“ unclock tables ; ” 进行解锁,MySQL服务实例即可以重新提供数据更新服务】

解释一个现象:

在这里插入图片描述

产生延迟的原因:

记录首先在MySQL服务器的内存中产生(23:30:28),然后写入到外存硬盘的MYD数据文件中(23:30:29),最后再将索引信息写入到MYI索引文件中(23:33:01)。所以产生时间延迟的主要原因在于缓存,通过缓存可以有效减少I/O请求次数,提高数据访问效率


2、InnoDB下创建数据库表

use choose;
set  default_storage_engine=InnoDB      
create table my_table(
    today datetime,
    name char(20)
);

执行完上面的代码,会在choose数据库目录文件下,创建两个文件:

  • db.opt -----> 主要记录当前数据库的默认字符集及字符序等信息
  • my_table.frm -----> 表结构定义文件

存储引擎由MyISAM修改为InnoDB

my_table表的 MYD数据文件 和 MYI索引文件 消失
实际上是数据与索引信息被写入到了 数据库根目录下ibdata1(choose数据库目录的上一层) 文件中

  • ibdata1 -----> 既保持数据信息又保存索引信息【ibdata1文件是InnoDB的共享空间文件】
  • ib_logfile1 和 ib_logfile0 -----> 重做日志文件,记录全部完成的事务,即执行了commit的事务
备份操作:

不仅需要将整个数据库目录(choose目录)复制,还需要复制ibdata1表空间文件,以及重做日志文件ib_logfile1 和 ib_logfile0

解释一个现象:

在这里插入图片描述

产生延迟的原因:

记录首先在MySQL服务器的内存中产生(00:21:34),然后写入到外存硬盘的共享表空间文件ibdata1中(00:21:35),最后再将重做日志信息写入到重做日志文件ib_logfile0中(00:21:36)


扩展:InnoDB表空间
1、共享表空间:
  • 作用:MySQL服务实例承载的所有数据库的所有InnoDB表的数据信息、索引信息、各种数据信息以及事物的回滚信息,全部存放在共享表空间文件中
  • 位置:位于数据库根目录
  • 文件名:ibdata1
  • 大小:默认初始大小10M
  • 可以使用“ show variables like ‘innodb_data_file_path’; ”来查看该文件的属性
2、独享表空间

如果将全局系统变量innodb_file_per_table的值设置为 NO 开启(默认为OFF),那么之后创建InnoDB存储引擎的新表时,这些表的数据信息、索引信息将保存到独享表空间文件中

  • 作用:存放表的数据信息、索引信息、各种数据信息以及事物的回滚等信息
  • 位置:位于数据库目录下
  • 文件名:表名.ibd

【注意】:任何InnoDB表的元数据信息都必须要存储在共享表空间中,所以共享表空间必须存在,即便将全局系统变量innodb_file_per_table的值设置为 NO 开启

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值