MySQL系列-基本概念介绍

1、前言

主要讲解什么是Mysql、它有什么特点等。
参考百度词条,以及关于存储引擎的https://blog.csdn.net/Rcain_R/article/details/136633237
MySQL中文官网

https://mysql.p2hp.com/

2、什么是MySQL

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
MySQL使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性, MySQL 为多种编程语言提供了API使用,并且支持多线程,支持多用户,优化的SQL查询算法,有效速度地提升了 MySQL 的查询速度。

3、特点

  • 运行速度快
    MySQL体积虽小,但是他的执行速度比较快
  • 使用成本低
    开源的,并且提供免费版本,缩减开发成本
  • 容易使用
    复杂程度较低,易于使用
  • 可移植性强
    运行在多种系统平台上,对于应用开发提供了极大的灵活性和便利性

4、MySQL的主要功能

MySQL拥有丰富的功能,使其成为一款功能强大的关系型数据库管理系统。以下是MySQL的一些主要功能:

  1. 数据存储和管理:MySQL可以存储和管理大量的数据,支持多种数据类型,包括整数、浮点数、字符串、日期等。

  2. 数据查询和分析:MySQL提供了强大的查询功能,支持复杂的SQL查询语句,能够对数据进行高效的检索、过滤和分析。

  3. 数据安全和权限管理:MySQL具有完善的安全特性,包括用户权限管理、数据加密、访问控制等,保护数据库免受未经授权的访问和恶意攻击。

  4. 数据备份和恢复:MySQL支持数据备份和恢复功能,能够定期备份数据,以防数据丢失或损坏。

  5. 数据复制和高可用性:MySQL支持数据复制和主从复制功能,能够实现数据的实时同步和高可用性,保证数据库的稳定运行。

  6. 数据性能优化:MySQL提供了多种性能优化功能,包括索引优化、查询优化、缓存优化等,能够提高数据库的性能和响应速度。

  7. 事务管理:MySQL支持事务处理功能,能够保证数据的一致性和完整性,支持事务的提交和回滚操作。

  8. 多语言支持:MySQL支持多种编程语言接口,包括C、C++、Java、Python等,能够方便地与各种应用程序集成。

总的来说,MySQL具有丰富的功能和灵活的配置选项,能够满足不同场景下的数据存储、管理和分析需求。同时,MySQL也在不断更新和改进,为用户提供更加强大和稳定的数据库服务。

4、存储引擎

存储引擎是 MySQL 中所特有的一个术语,实际上是存储数据、建立索引、更新/查询数据等技术的一套实现方法,存储引擎所面向的操作对象是数据表,而不是数据库,Mysql的存储引擎是InnoDB,MyISAM等。

4.1、InnoDB

MySQL的默认数据库引擎。它提供了事务安全(ACID兼容)的表,支持行级锁定和外键约束。InnoDB还具有崩溃恢复能力,对于需要高并发读写和事务支持的应用场景非常适用。

  • 默认存储引擎,支持事务处理(ACID特性),具备崩溃恢复能力。
  • 支持行级锁定,提高并发性能,尤其是在多用户同时更新同一表的不同行时。
  • 支持外键约束,确保数据引用完整性。
  • 采用聚簇索引,数据行和相邻的键值索引存储在一起,优化了点查询和范围查询的性能。
  • 从MySQL 5.6.4开始支持全文索引。

MySQL中的InnoDB存储引擎是一个高度可靠的事务型存储引擎,它的设计目标是满足高并发事务处理和数据安全的需求。
以下是InnoDB存储引擎的主要特点:
1. 事务支持

  • InnoDB完全支持ACID(原子性、一致性、隔离性、持久性)事务特性,保证了数据的完整性和一致性。
  • 提供了事务管理机制,允许用户执行BEGIN, COMMIT, ROLLBACK等事务操作。

2.行级锁定

InnoDB使用行级锁定,大大提高了多用户并发环境下的性能,尤其在频繁修改不同记录的情形下,可以减少锁冲突,提升并发读写的效率。

3.外键约束:

支持外键约束(FOREIGN KEY),确保了数据库表间的数据引用完整性。

4.MVCC(多版本并发控制)

实现了多版本并发控制机制,从而在多个事务同时读取相同数据时,减少了锁竞争,提升了并发性能,同时也支持“可重复读”(Repeatable
Read)事务隔离级别,有效避免了幻读现象。

5.崩溃恢复

内置崩溃恢复机制,即使在数据库宕机或系统崩溃后,也能通过redo日志(重做日志)和undo日志(回滚日志)来恢复未完成的事务和回滚已提交的事务。

6.缓冲池

使用缓冲池技术,将频繁读写的页缓存在内存中,减少磁盘I/O操作,提高整体性能。

7.其他高级特性

插入缓冲(Insert Buffer),优化了非唯一二级索引的插入操作;两次写(Double Write),用于防止因电源故障等原因导致的数据页损坏; 自适应哈希索引(Adaptive HashIndex),动态创建和维护哈希索引以加速查询;预读(Read Ahead),预先读取连续的数据页到内存,减少未来查询时的磁盘I/O。

4.2、MyISAM

这是MySQL的传统数据库引擎。它提供了较快的查询性能,特别是对于只读或大量读取的应用。然而,MyISAM不支持事务处理和外键约束,并且在高并发写入时可能表现不佳。

  • 在MySQL早期版本中是默认存储引擎,但后来被InnoDB取代。
  • 不支持事务和行级锁定,仅支持表级锁定,因此在高并发写入场景下性能较低。
  • 支持全文索引,适合全文搜索的应用场景。
  • 数据和索引分开存储在.MYD和.MYI文件中,适用于读取密集型应用。
  • 不支持外键约束,不提供崩溃恢复功能。

MyISAM是MySQL中常用的存储引擎之一,尤其在MySQL 5.5版本之前的版本中,它是默认的存储引擎。
MyISAM存储引擎具有一些独特的特点和适用场景。
1、特点

  • 非事务性:MyISAM不支持事务处理,这意味着它不能执行跨多个查询的事务。每个查询都是原子性的,但无法回滚。
  • 表级锁定:MyISAM使用表级锁定,当一个线程获得写锁定时,其他线程对表的读取和写入都会被阻塞。这可能导致较低的并发性能,特别是在写密集的应用中。
  • 全文索引:MyISAM支持全文索引,这对于需要进行文本搜索的应用非常有用。
  • 访问速度快:对于只读或大量读取的应用,MyISAM通常提供较快的查询性能。

2、文件结构
MyISAM存储引擎的表在磁盘上存储为三个文件:

  • frm 文件:存储表的定义结构。
  • MYD 文件:存储表的数据(MYData)。
  • MYI 文件:存储表的索引(MYIndex)。
    这种文件结构使得数据文件和索引文件可以放置在不同的目录,从而平均分布I/O负载,提高查询速度。

3、适用场景

  • 只读或大量读取的应用:对于主要进行读取操作的应用,MyISAM通常能提供较好的性能。
  • 全文搜索:如果应用需要进行全文搜索,MyISAM是一个很好的选择,因为它支持全文索引。
  • 不需要事务支持:如果应用不需要事务处理或复杂的并发控制,MyISAM可以是一个简单而高效的解决方案。

4.3、Memory (HEAP)

这是一种内存引擎,它将数据存储在内存中,因此提供了非常快的访问速度。但是,由于数据存储在内存中,因此数据容量受到内存大小的限制,并且当数据库服务器重启时,数据会丢失。

  • 这种引擎适用于缓存、会话管理等轻量级应用。
  • 数据全部存储在内存中,适合临时表或经常需要进行全表扫描的小型表。

因为数据存储在内存中,所以重启服务后数据会丢失,适用于短期存储或计算密集型任务。

4.4、NDB Cluster(或Cluster/NDB)

这是MySQL的簇式数据库引擎,专为高性能查找和高可用性而设计。它可以将数据分布在多台服务器上,提供高可扩展性和高并发性能,适用于大规模分布式系统。

  • 分布式存储引擎,专为高可用性和大规模并行处理而设计。
  • 数据分布在多台机器上,提供高可用性和可扩展性。

特别适合大数据量和高并发的在线事务处理和分析(OLTP/OLAP)场景。

4.5、CSV

这是一种文本文件引擎,可以将数据存储在CSV格式的文本文件中。它适用于需要与其他系统进行数据交换的场景,但同样不支持事务处理和外键约束。

4.6、BLACKHOLE

这是一种虚拟引擎,它不会存储任何数据。任何对这种引擎的写操作都会被忽略,而任何读操作都会返回空结果集。这种引擎通常用于临时禁止对数据库的应用程序输入。

4.7、FEDERATED

这是一种远程引擎,它允许连接到远程MySQL服务器并执行查询。

4.8、ARCHIVE

  • 这是一种用于存储和检索大量归档数据的引擎。
  • 专门用于大容量、只追加、很少更新和查询的场景,例如日志记录。
  • 不支持索引,只支持INSERT和SELECT操作。

4.9、Merge

这是一种将多个MyISAM表组合为一个表的引擎。
用于合并多个MyISAM表作为一个逻辑表来处理,常用于数据分析和数据仓库场景。

4.10、总结

在选择数据库引擎时,需要根据具体的业务需求和特点进行考虑。例如,如果应用需要事务支持和高并发读写,那么InnoDB可能是更好的选择;而如果应用主要是读取操作且对性能有较高要求,那么MyISAM可能更合适。同时,还需要考虑数据的持久性、备份和恢复策略等因素。

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值