首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
5.1 MySQL存储引擎
5.1.1 MySQL存储引擎的概念
5.1.2 查询MySQL中支持的存储引擎
5.1.3 InnoDB存储引擎
5.1.4 MyISAM存储引擎
5.1.5 MEMORY存储引擎
5.1.6 选择存储引擎
5.1.7 设置数据表的存储引擎
5.2 MySQL数据类型
5.2.1 数字类型
5.2.2 字符串类型
5.2.3 日期和时间类型
6.1 创建数据表(CREATE TABLE语句)
6.2 查看表结构
6.2.1 使用SHOW COLUMNS语句查看
6.2.2 使用DESCRIBE语句查看
6.3 修改表结构(ALTER TABLE语句)
6.3.1 添加新字段和修改字段定义
6.3.2 修改字段名/类型
6.3.3 删除字段
6.3.4 修改表名
6.4 重命名表(RENAME TABLE语句)
6.5 复制表(CREATE TABLE…LIKE语句)
6.6 删除表(DROP TABLE语句)
7.1 运算符
7.1.1 算术运算符
7.1.2 比较运算符
7.1.3 逻辑运算符
7.1.4 位运算符
7.2 流程控制语句
7.2.1 IF语句
7.2.2 CASE语句
7.2.3 WHILE循环语句
7.2.4 LOOP循环语句
7.2.5 REPEAT循环语句
8.1 增添数据
8.1.1 使用INSERT…VALUES语句插入数据
8.1.2 使用INSERT…SET语句插入数据
8.1.3 使用INSERT...SELECT语句插入查询结果
8.2 修改数据
8.3 删除数据
8.3.1 使用DELETE语句删除数据
8.3.2 使用TRUNCATE TABLE语句删除数据
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(二)
小册名称:MySQL从入门到精通(二)
### 5.1.1 MySQL存储引擎的概念 在MySQL数据库中,存储引擎是一个非常重要的概念,它定义了数据如何在数据库中存储、检索、更新和删除的方式。MySQL的灵活性很大程度上来源于其支持多种存储引擎的能力,每种存储引擎都有其独特的功能和性能特性,适用于不同的应用场景。了解MySQL存储引擎的概念及其差异,对于数据库设计、优化以及维护至关重要。 #### 5.1.1.1 存储引擎概述 MySQL的架构是插件式的,这意味着用户可以根据需要选择或开发适合自身应用的存储引擎。MySQL服务器通过存储引擎API与存储引擎进行交互,这种设计使得MySQL能够支持多种存储引擎,同时保持核心服务器功能的简洁和高效。 存储引擎负责数据的存储和提取,包括数据的物理存储、索引的创建与维护、事务处理、锁机制等。不同的存储引擎在这些方面有着不同的实现,从而提供了多样化的数据存储和管理方式。 #### 5.1.1.2 MySQL主要存储引擎介绍 ##### 1. InnoDB **InnoDB** 是MySQL的默认存储引擎,自MySQL 5.5.5版本起,InnoDB成为默认的存储引擎。它支持事务处理(ACID兼容)、行级锁定和外键约束,是处理大量短期事务的最佳选择。InnoDB还提供了崩溃恢复能力,通过redo log和undo log确保数据的完整性和一致性。 - **事务支持**:InnoDB支持标准的ACID事务处理,包括提交(COMMIT)、回滚(ROLLBACK)和保存点(SAVEPOINT)。 - **行级锁定**:与MyISAM的表级锁定相比,InnoDB的行级锁定大幅提高了并发性能。 - **外键约束**:InnoDB支持外键约束,有助于维护数据库的数据完整性和参照完整性。 - **缓冲池**:InnoDB使用缓冲池来缓存数据和索引,减少对磁盘的I/O操作,提高查询效率。 ##### 2. MyISAM **MyISAM** 是MySQL早期的默认存储引擎,尽管在MySQL 5.5.5之后被InnoDB取代,但在某些特定场景下(如只读或大量SELECT操作的表)仍被使用。MyISAM不支持事务处理、行级锁定和外键约束,但它在全表扫描和全文索引方面表现优异。 - **表级锁定**:MyISAM使用表级锁定,这在高并发环境下可能导致性能瓶颈。 - **全文索引**:MyISAM支持全文索引,适用于需要文本搜索的应用。 - **文件存储**:MyISAM将数据存储在三个文件中:.frm(表定义)、.MYD(数据文件)、.MYI(索引文件)。 ##### 3. Memory **Memory** 存储引擎将所有数据存储在内存中,访问速度极快,但重启数据库后数据会丢失(除非使用特定的表选项将数据保存在磁盘上)。Memory存储引擎适用于临时表或缓存数据。 - **内存存储**:所有数据存储在内存中,提供极快的访问速度。 - **哈希索引**:默认使用哈希索引,但也可以指定使用BTREE索引。 - **临时表**:常用于创建临时表,以加快查询速度。 ##### 4. Archive **Archive** 存储引擎专为存储大量归档数据而设计,它使用行级压缩来减少存储空间的需求,并且只支持INSERT和SELECT操作,不支持DELETE和UPDATE操作(但可以通过删除整个表来删除数据)。 - **行级压缩**:通过压缩数据行来减少存储空间。 - **专用场景**:适用于日志记录、数据仓库等归档数据的存储。 ##### 5. Federated **Federated** 存储引擎允许MySQL数据库服务器访问远程MySQL服务器上的数据,就像访问本地表一样。它实际上并不存储数据,而是将查询请求转发到远程服务器,并将结果返回给客户端。 - **远程访问**:通过Federated存储引擎,可以轻松实现跨服务器的数据访问。 - **透明性**:对于应用程序而言,访问远程表就像访问本地表一样简单。 #### 5.1.1.3 如何选择存储引擎 选择哪种存储引擎取决于应用的具体需求,包括事务处理、并发性、数据一致性、备份恢复、存储空间等因素。以下是一些选择存储引擎时需要考虑的因素: - **是否需要事务处理**:如果应用需要事务支持,InnoDB是首选。 - **并发性能**:InnoDB的行级锁定通常比MyISAM的表级锁定提供更好的并发性能。 - **全文索引**:如果应用需要全文搜索功能,MyISAM可能是一个不错的选择(尽管InnoDB也支持全文索引,但性能可能因版本而异)。 - **存储空间**:Archive存储引擎对于归档数据来说非常节省空间。 - **数据持久性**:InnoDB提供了崩溃恢复能力,而Memory存储引擎在重启后会丢失数据(除非使用特定选项)。 #### 5.1.1.4 存储引擎的修改与查看 在MySQL中,可以在创建表时指定存储引擎,也可以在表创建后修改其存储引擎。 - **创建表时指定存储引擎**: ```sql CREATE TABLE my_table ( id INT AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY (id) ) ENGINE=InnoDB; ``` - **修改表的存储引擎**: ```sql ALTER TABLE my_table ENGINE=MyISAM; ``` - **查看表的存储引擎**: ```sql SHOW TABLE STATUS LIKE 'my_table'\G ``` 或者使用`INFORMATION_SCHEMA.TABLES`表查询: ```sql SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'my_table'; ``` #### 5.1.1.5 结论 MySQL的存储引擎机制为数据库设计者提供了极大的灵活性和选择空间。了解不同存储引擎的特性及其适用场景,是构建高效、可靠数据库系统的关键。通过合理选择和使用存储引擎,可以优化数据库的性能,满足应用的各种需求。在实际应用中,建议根据具体的应用场景和需求,综合考虑各种因素,选择最适合的存储引擎。
上一篇:
5.1 MySQL存储引擎
下一篇:
5.1.2 查询MySQL中支持的存储引擎
该分类下的相关小册推荐:
细说MySQL(零基础到高级应用)
MySQL必知必会核心内容
MySQL从入门到精通(三)
MySQL从入门到精通(一)
MySQL8.0入门与实践
MySQL从入门到精通(四)
MySQL必会核心问题
MySQL从入门到精通(五)
MySQL 实战 45 讲
SQL零基础到熟练应用(增删改查)