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