MySQL的存储引擎

存储引擎的概念

存储引擎:负责将数据存储在物理存储设备(如磁盘)上的结构和机制。存储引擎决定了数据库如何管理、组织和访问数据。)

因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。默认的存储引擎为InnoDB

常用协议的端口号

http :80

https : 443

tcp:23

ftp : 21

ssh : 22

tomcat :8080

oracle : 1521

rocketmq:987

存储引擎的相关命令

启动MySQL

在管理员窗口输入以下指令

bash 复制代码
net start mysql

再输入

bash 复制代码
mysql -u root -p 

输入密码,即可启动MySQL程序

查看MySQL提供的所有存储引擎

sql 复制代码
mysql> show engines;

上图我们可以查看出MySQL 当前默认的存储引擎是InnoDB ,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。

查看MySQL当前默认的存储引擎

sql 复制代码
mysql> show variables like '%storage_engine%';

查看所有的数据库:show databases

使用数据库:use 数据库名

查看数据库中所有的表: show tables

查看表的存储引擎

sql 复制代码
show table status like "table_name" ;

常用的存储引擎

InnoDB

类型:基于行的逻辑结构(Row-based)。

特点:支持ACID事务、自动提交和回滚、复杂的索引、事务隔离级别高。

优缺点:优点是功能强大,适合大多数应用;缺点是在高并发或大规模数据下的性能可能不如其他引擎。

MyISAM

类型:基于列的逻辑结构(Column-based)。

特点:不支持事务、支持复杂查询和高级操作。通常用于小型数据库。

优缺点:优点是简单高效,适合小规模应用;缺点是不适合需要事务的支持的应用。

MyISAM和InnoDB的区别

MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。

大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的比如读密集的情况下。(如果你不介意 MyISAM 崩溃恢复问题的话)。

两者对比

  • 是否支持行级锁: MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。
  • 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
  • 是否支持外键: MyISAM不支持,而InnoDB支持。
  • 是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一
相关推荐
JavaGuide4 小时前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql
怒放吧德德7 小时前
MySQL篇:MySQL主从集群同步延迟问题
后端·mysql·面试
数据智能老司机8 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
Eip不易也不e8 小时前
教程之同时安装两个版本的 mysql
mysql
数据智能老司机8 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿9 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
Kagol9 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
无名之逆9 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601019 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机9 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构