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实现并不统一
相关推荐
ZZH1120KQ1 小时前
ORACLE的用户维护与权限操作
数据库·oracle
妮妮喔妮1 小时前
图片上传 el+node后端+数据库
javascript·数据库·vue.js
仰望星空的凡人6 小时前
【JS逆向基础】数据库之MongoDB
javascript·数据库·python·mongodb
duration~8 小时前
PostgreSQL并发控制
数据库·postgresql
给力学长8 小时前
自习室预约小程序的设计与实现
java·数据库·vue.js·elementui·小程序·uni-app·node.js
迷茫运维路10 小时前
MySQL5.7主从延迟高排查优化思路
数据库·主从延时高
菜鸟学Python10 小时前
Python web框架王者 Django 5.0发布:20周年了!
前端·数据库·python·django·sqlite
小云数据库服务专线10 小时前
GaussDB 查看会话连接数
数据库·gaussdb
墨迹的陌离12 小时前
【Linux】重生之从零开始学习运维之Mysql
linux·运维·服务器·数据库·学习·mysql
BigBigHang13 小时前
【docker】DM8达梦数据库的docker-compose以及一些启动踩坑
数据库·docker·容器