mysql-存储引擎

2023-05-08  本文已影响0人  ssttIsme

存储引擎是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

show crate table 表名;

ENGINE=就是引擎名

root@localhost:bank>show create table bank;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                       |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| bank  | CREATE TABLE `bank` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `address` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

查看当前数据库支持的存储引擎

SHOW ENGINES;
root@localhost:bank>show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | 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         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

Engine代表有哪些存储引擎、Support是否支持、Comment是注释、XA协议与Savepoints保存点与事务相关

InnoDB

介绍

InnoDB是一种兼顾高可靠性和高性能的存储引擎,在MySQL 5.5之后,InnoDB是默认的MySQL存储引擎。

特点-事务、外键、行级锁

DML操作遵循ACID模型,支持事务
行级锁,提高并发访问性能;
支持外键ROREIGN KEY约束,保证数据的完整性和正确性。

文件

xxx.ibd:xxx代表的是表名,innodDB引擎的每张表都会对应一个表空间文件,存储该表的结构(frm,sdi(8.0后))、数据、索引。

root@localhost:bank>show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF   |
+-----------------------+-------+           

存储引擎特点

逻辑存储结构【>表示包含】:表空间Table>段Segment>Extent区>Page页>Row行

MyISAM

介绍

MyISAM是MySQL早期默认的存储引擎

特点-不支持事务、外键、表锁、访问速度快

不支持事务、不支持外键
支持标锁,不支持行锁
访问速度快

文件

sdi存储表结构、MYD存储数据、MYI存储索引

Memory

介绍

Memory引擎的表数据存储在内存中,由于受到硬件问题、断电问题的影响,只能将这些表作为临时表或者缓存使用。

特点-内存存放访问速度快、哈希索引

内存存放
hash索引(默认)
表锁
不支持外键

文件

只有sdi存储表结构信息(数据都是存在内存中)

存储引擎特点

特点 InnoDB MyISAM Memory
存储限制 64TB
事务安全 支持 - -
锁机制 行锁 表锁 表锁
支持外键 支持 - -
B+tree索引 支持 支持 支持
Hash索引 - - 支持
全文索引 5.6版本后支持 支持 -
磁盘空间使用 -
内存使用 中等
批量插入速度
上一篇下一篇

猜你喜欢

热点阅读