8.30笔记(引擎的宏微观结构)

++++++++++++++++++++++++++++++++++mysql存储引擎的宏观结构
最直观的存储方式
innodb:
ibdata1:系统数据字典信息(统计信息),UNDO(回滚信息)表空间等数据
ib_logfile0 ~ ib_logfileN: REDO日志文件,事务重做日志文件。
ibtmp1: 临时表空间磁盘位置,存储临时表(排序,分组,多表连接,子查询,逻辑备份等)
frm:存储表的列信息
ibd:表的数据行和索引
ib_buffer_pool:正常关机,存储缓存区的热数据

不同ibdata1存储数据是不同的
5.5中会存储临时数据+用户数据(数据行+索引)
5.6中还会存储临时数据
5.7系统数据字典信息(统计信息),UNDO(回滚信息)表空间等数据
8.0取消存储数据字典信息,undo也不会记录。
mysql再慢慢瘦身ibdata1共享表空间,把比较重要的数据独立出来。

myisam表结构:
myt.frm:数据字典信息(列以及定义属性)
myt.MYD:数据行
myt.MYI:索引存储(独立索引存储)


微观结构:
磁盘:
表空间:(段,区,页属于表空间)
起初为了解决存储空间的扩展问题。从mysql5.5开始引入共享表空间
    共享表空间:用来存储系统数据,日志,undo,临时表,用户数据索引等
	需要将所有数据存储到同一个表空间中 ,管理比较混乱
    5.5版本出现的管理模式,也是默认的管理模式。
    5.6版本以,共享表空间保留,只用来存储:数据字典信息,undo,临时表。
    5.7 版本,临时表被独立出来了
    8.0版本,undo也被独立出去了
共享表空间设置:
    共享表空间设置(在搭建MySQL时,初始化数据之前设置到参数文件中)
    select @@innodb_data_file_path;
    show variables like '%extend%';
	方法1:在初始化时my.cnf中增加以下参数,大小可以指定:
    innodb_data_file_path=ibdata1:512M;ibdata2:512M:autoextend
	方法2,在以运行数据库添加扩展多个ibdata文件
	innodb_data_file_path=ibdata1:512M(这里要与已经生成的ibdata1大小一致);ibdata2:512M:autoextend
    #innodb_autoextend_increment=64
独立表空间:
    从5.6,默认表空间不再使用共享表空间,替换为独立表空间。单表单空间。
    主要存储的是用户数据
    存储特点为:一个表一个ibd文件,存储数据行和索引信息
    基本表结构元数据存储:
    xxx.frm
    最终结论:
      元数据            数据行+索引
    mysql表数据    =(ibdataX+frm)+ibd(段、区、页)
        DDL             DML+DQL
普通表空间:完全和oracle一致的表空间管理模式(用的较少)
undo表空间:存储回滚日志
临时表空间:存储临时表,5.7默认独立

管理:
用户数(自建表数据)默认存储方式,独立表空间模式,独立表空间和共享表空间
模式可以相互切换。
查看默认表空间模式:select @@innodb_file_per_table;
返回1则为独立表空间模式。0代表共享表空间模式。
如何切换:
一般把共享切换为独立
set global innodb_file_per_table=0;
重新登录。
修改完之后只影响新创建的表。
如何扩展共享表空间大小和个数。(在1970行)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值