MySQL5.5以后版本的默认存储引擎
tablename.ibd
ibdataX(如果参数为OFF)
X表示一个数字演示参数ON
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
由此可见 file_per_table是开启的,可以为每一个表创造一个表空间
mysql> create table myinnodb(id int,c1 varchar(40)); # 新建一个表
找的你的数据库下面可以看到
myinnodb.ibd myinnodb.frm
演示参数OFF
mysql> set global innodb_file_per_table=OFF;
mysql> show variables like "innodb_file_per_table";
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF |
+-----------------------+-------+
1 row in set (0.00 sec)
mysql> create table myinnodb1(id int,cid varchar(20))engine=innodb;
查看数据库目录下只有
myinnodb1.frm # 存储的系统表空间
比较
optimize table
命令收缩文件大小建议对Innodb使用独立表空间
步骤
注意: Innodb数据字典信息,这种信息还是很重要的
Redo log
和Undo log
查看Redo log大小 以字节为单位 redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。
mysql> show variables like "innodb_log_buffer_size";
+------------------------+----------+
| Variable_name | Value |
+------------------------+----------+
| innodb_log_buffer_size | 16777216 |
+------------------------+----------+
1 row in set (0.00 sec)
cd /var/lib/mysql/
查看到这个目录下会有两个文件
ib_logfile0 和 ib_logfile1
这是因为默认的redo log的files是2
mysql> show variables like 'innodb_log_files_in_group';
+---------------------------+-------+
| Variable_name |Value |
+---------------------------+-------+
| innodb_log_files_in_group | 2 |
+---------------------------+-------+
1 row in set (0.00 sec)
Undo log用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。 包括MVCC
锁的类型
独占锁以及共享锁演示
begin # 开启一个事务
insert into myinnodb values(3,'bb');
update myinnodb set name='bbbb' where id =2; # 更新name字段的值为bbbb
其实innodb在锁的方面还是比较复杂的 了解即可
加入表级别的独占锁
mysql> lock table myinnodb write;
mysql> unlock table;
当存在锁的情况下 select的语句会被阻塞需要进行解锁
锁的粒度
阻塞和死锁
show engine innodb status # 间隔30s进行采样
主要是包括一些 I/O读写进程 一些配置页 缓存信息 索引等等
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
2020-09-17 23:22:26 0x7f371091e700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 21 seconds # 21秒的统计值