内容概述
数据库存储引擎概述
数据库存储引擎种类
数据库存储引擎特性
数据库存储引擎应用
数据库存储引擎结构
1. 数据库存储引擎概述
作用:数据库存储引擎主要负责数据库信息有序存储和调取(类似于文件系统)
--存储引擎结构(存储数据角度--段区页--磁道---block--扇区)
--存储架构角度- 表空间信息-- 各种表空间文件
2. 数据库存储引擎种类
## 查看可以应用的存储引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
3. 数据库存储引擎特性(Innodb)
4. 数据库存储引擎应用
存储引擎设置
## 查看数据库默认存储引擎
mysql> select @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| InnoDB |
+--------------------------+
## 永久修改存储引擎配置
vim /etc/my.cnf
[mysqld]
default_storage_engine=InnoDB
## 修改单张表的存储引擎
ALTER TABLE 表名 ENGINE = InnoDB;
5. 数据库存储引擎结构
磁盘结构部分:
类型一:共享表空间
文件:ibdata1
早期:所有数据库相关的数据统一存储在共享表空间文件中
目前:共享表空间中数据已经做了拆分,此时只保留change buffer 数据信息进行保存
类型二:独立表空间
文件:表名.ibd
作用:主要用于存储表的结构和数据信息
管理:
mysql> select @@innodb_file_per_table;
+-------------------------+
| @@innodb_file_per_table |
+-------------------------+
| 1 |
+-------------------------+
-- 当默认设置为1表示所有用户数据单独存储到ibd文件中,当设置为0时会将数据信息存储到ibdata文件中
作用:
01:可以实现快速的数据迁移
数据库服务器A xxx大表 -------数据库服务器B xxx大表
02: 当服务程序异常时,可以利用表空间文件修复数据
tips:要恢复数据的表结构需要清楚 ibd数据 -- 创建好表
类型三:undo 表空间
作用:可以将事务变化前的数据页信息进行保存,便于进行数据的回滚操作
文件:undo_00x
配置:
mysql> select @@innodb_undo_tablespaces;
+---------------------------+
| @@innodb_undo_tablespaces |
+---------------------------+
| 2 |
+---------------------------+
-- 设置undo日志文件的个数
mysql> select @@innodb_max_undo_log_size;
+----------------------------+
| @@innodb_max_undo_log_size |
+----------------------------+
| 1073741824 |
+----------------------------+
-- 设置单独undo文件存储日志数据量 默认一个G
类型四:temp 表空间
作用:用于存储临时数据信息,比如 排序的数据信息,分组的数据信息
文件:ibtmp1
类型五:redo 事务日志
作用:用于存储数据操作记录信息,实现方法:利用WAL技术
文件:ib_logfileX
配置:
mysql> select @@innodb_max_undo_log_size;
+----------------------------+
| @@innodb_max_undo_log_size |
+----------------------------+
| 1073741824 |
+----------------------------+
类型六:ib_buffer_pool 预热文件
作用:预热文件可以用于缓冲和缓存,可以存储热数据页
文件:ib_buffer_pool
类型七:Doublewrite Buffer(DWB)文件
作用:可以保证数据页信心存储,不会出现坏页或者出现坏页时,可以修复坏页
文件:#ib_16384_0.dblwr #ib_16384_1.dblwr
内存结构部分:
类型一:AHI
作用:用于存储热点数据页的内存地址信息,可以快速调取数据页中数据,减少走索引树IO的消耗
类型二:change buffer
作用:将辅助索引树中,变化的索引数据页信息进行临时存储,避免辅助索引树结构频繁变化,导致ye'wu
访问索引树受到影响
类型三:Buffer Pool
作用:包含了AHI内存数据信息 + change buffer 内存数据信息 + 磁盘加载数据页信息和索引页信息
配置:
mysql> select @@innodb_buffer_pool_size;
+---------------------------+
| @@innodb_buffer_pool_size |
+---------------------------+
| 134217728 |
+---------------------------+
评论