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实现并不统一
相关推荐
Musennn1 小时前
MySQL刷题相关简单语法集合
数据库·mysql
Think Spatial 空间思维2 小时前
【HTTPS基础概念与原理】TLS握手过程详解
数据库·网络协议·https
逝水如流年轻往返染尘2 小时前
MySQL表的增删查改
mysql
laowangpython2 小时前
MySQL基础面试通关秘籍(附高频考点解析)
数据库·mysql·其他·面试
mooyuan天天2 小时前
SQL注入报错“Illegal mix of collations for operation ‘UNION‘”解决办法
数据库·web安全·sql注入·dvwa靶场·sql报错
运维-大白同学2 小时前
go-数据库基本操作
开发语言·数据库·golang
R-sz3 小时前
通过从数据库加载MinIO配置并初始化MinioClient,spring boot之Minio上传
数据库·oracle
洛阳泰山3 小时前
Windows系统部署MongoDB数据库图文教程
数据库·windows·mongodb
医只鸡腿子3 小时前
3.2/Q2,Charls最新文章解读
数据库·数据挖掘·数据分析·深度优先·数据库开发
bang___bang_4 小时前
PostgreSQL内幕剖析——结构与架构
数据库·postgresql