MySQL的存储引擎
存储引擎的概念
存储引擎:负责将数据存储在物理存储设备(如磁盘)上的结构和机制。存储引擎决定了数据库如何管理、组织和访问数据。)
因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。默认的存储引擎为InnoDB
常用协议的端口号
http :80
https : 443
tcp:23
ftp : 21
ssh : 22
tomcat :8080
oracle : 1521
rocketmq:987
存储引擎的相关命令
启动MySQL
在管理员窗口输入以下指令
net start mysql
再输入
mysql -u root -p
输入密码,即可启动MySQL程序
查看MySQL提供的所有存储引擎
mysql> show engines;
上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。
查看MySQL当前默认的存储引擎
mysql> show variables like '%storage_engine%';
查看所有的数据库:show databases
使用数据库:use 数据库名
查看数据库中所有的表: show tables
查看表的存储引擎
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实现并不统一