MySQL_day7

一、存储引擎
1.什么事存储引擎
类似于Linux系统中的文件系统
2.功能
数据读写,保证数据的安全和一致性,提高性能,提供热备,自动故障恢复,支持高可用
3.种类
show engines 可查看当前mysql中支持的所有引擎
存储引擎作用在表上,因此不同的表可以使用不同的存储引擎
常见的有:
innodb
myisam
memory
4.其他存储引擎
tokuDB
rocksDB
myrocks
以上三种存储引擎的共同特点:压缩比较高,数据插入性能极高,
newsql 有较多的功能特性
5.InnoDB存储引擎介绍

image.png

6.innodb核心特性
支持事务
行级锁
MVCC
外检
热备
自动故障恢复
show variables '%engines%'; 查看存储引擎
设置默认存储引擎,可写入配置文件实现永久生效
default-storage_engines=innodb
7.修改参数的生效级别
会话级别:set xxxx=xxx
只会影响当前会话
全局级别:set global xxx=xxx
不影响已开启的会话,只会影响之后新开的会话
因此,若要参数永久生效,可写入配置文件
8.确认存储引擎
show create table 表\G
show table status like '表'\G
9.表空间
碎片整理:alter table 表 engine=innodb
效果不如将表数据到处再重新导入好
ib_buffer_pool
保存以往的热数据
ibdata1
共享表空间 系统数据字典(统计信息),undo(回滚)表空间数据,可以理解为表的元数据 8.0版本回家undo也分离出去
ib_logfile:redo
重做日志,事务日志文件
ibtmp1
临时表空间磁盘位置,存储临时表
frm
存储表信息
ibd
表的数据行和索引
10.表空间

  • 共享表空间
    将所有的数据存储到同一个表空间中,管理较为混乱
    查看select @@innodb_file_per_table 等于1表示独立表空间0表示共享表空间
  • 从5.6开始默认表空间不再使用共享表空间,替换为独立表空间主要存储用户数据

11.事务的ACID特性

  • Atoic(原子性)
    所有的语句作为一个单元全部执行成功或者全部失败,不能出现中间状态。
  • Consistent(一致性)
    如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一直状态
  • isolation(隔离性)
    事务之间不会互相影响
  • Durable(持久性)
    事务成功完成之后,所有的更改都会准确的记录在数据库中,所做的更改不会丢失,完成的数据一定要写到磁盘
    12.事务的生命周期
    事务开始:begin
    事务结束:commit
    回滚事务:rollback
    不管有没有事务需求,一般都建议设置为0,可以很大程度上优化性能问题 autocommit=0
    若begin开始事务,没有commit,紧接着又begin 会提交之前的事务
    内存中更改的还没有写入磁盘数据为脏页
    CKPT 将内存脏页刷写到磁盘的动作
    TXID 事务ID号innoDB会为每一个事务生成一个事务号,伴随着整个事务
    redo log 轮询记录日志 记录着变化过程
    重做日志 事务日志的一中,其作用是实现持久化
    commit提交事务时,会将更改内容刷写到redo buffer 重做过程为构建脏页
    undo 回滚日志,将数据回复到修改之前的状态
    undo buffer 存入修改之前的表空间

你可能感兴趣的:(MySQL_day7)