Mysql的一些基础

61 阅读3分钟

一、数据库基础

(一)什么是关系型数据库?

关系型数据库是基于关系模型(表结构)的数据库,数据以行和列的形式存储在表中。每个表都有一个唯一的标识符(主键),表与表之间通过外键建立关联。

基础点

  • 表(Table):数据的集合,由行和列组成。
  • 行(Row):表中的一条记录。
  • 列(Column):表中的字段,表示数据的属性。
  • 主键(Primary Key):唯一标识一条记录的字段。
  • 外键(Foreign Key):用于建立表与表之间的关联(不推荐使用外键)。

常见关系型数据库有MySQL、PostgreSQL、Oracle、SQL Server等。

(二)MySQL的基本架构

MySQL的架构可以分为三层:

  • 连接层:负责客户端与服务器的连接管理。
  • SQL层:负责SQL语句的解析、优化和执行。
  • 存储引擎层:负责数据的存储和检索。

(三)SQL语句分类

  • DDL(数据定义语言):用于定义或修改数据库结构,如CREATE、ALTER、DROP。
  • DML(数据操作语言):用于操作数据,如INSERT、UPDATE、DELETE。
  • DQL(数据查询语言):用于查询数据,如SELECT。
  • DCL(数据控制语言):用于控制数据库权限,如GRANT、REVOKE。

(四)事务与ACID特性

事务是数据库操作的基本单位,具有以下四个特性(ACID):

  • 原子性(Atomicity):事务要么全部成功,要么全部失败。
  • 一致性(Consistency):事务前后数据状态一致。
  • 隔离性(Isolation):事务之间相互隔离。
  • 持久性(Durability):事务提交后数据永久保存。

二、数据存储引擎

(一)什么是存储引擎?

存储引擎是MySQL中负责数据的存储和检索的组件。不同的存储引擎有不同的特点和适用场景。

(二)InnoDB vs MyISAM

  • InnoDB:

    • 支持事务、外键。
    • 行级锁,适合高并发场景。
    • 默认存储引擎(MySQL 5.5+)。
  • MyISAM:

    • 不支持事务、外键。
    • 表级锁,适合读多写少场景。
    • 支持全文索引。

(三)为什么选择InnoDB?

InnoDB成为MySQL默认存储引擎的原因:

  • 事务支持:InnoDB支持ACID事务,适合需要保证数据一致性的场景。
  • 行级锁:InnoDB使用行级锁,减少了锁冲突,提高了并发性能。
  • 外键约束:InnoDB支持外键,保证了数据的完整性。
  • 崩溃恢复:InnoDB具有强大的崩溃恢复能力,确保数据安全。

三、数据库索引的规则

(一)什么是索引?

索引是加速数据检索的数据结构,类似于书的目录。通过索引,MySQL可以快速定位到目标数据,而不需要扫描整个表。

(二)索引的类型

  • 主键索引(PRIMARY KEY):唯一且非空。
  • 唯一索引(UNIQUE KEY):唯一但可为空。
  • 普通索引(INDEX):加速查询。
  • 全文索引(FULLTEXT):用于全文搜索。

(三)为什么选择B+树作为索引结构?

B+树是MySQL默认的索引结构,原因如下:

  • 平衡树结构:B+树是一种平衡树,保证了查询效率的稳定性。
  • 适合范围查询:B+树的叶子节点通过指针连接,适合范围查询。
  • 磁盘I/O优化:B+树的节点大小通常与磁盘页大小一致,减少了磁盘I/O次数。
  • 支持高并发:B+树的读写操作效率高,适合高并发场景。
  • 简单的来说B+树三层就能存下百万级别的数据

image.png

(四)索引的使用规则

  • 最左前缀原则:联合索引中,从左到右匹配。

  • 索引覆盖:查询字段全部在索引中,避免回表。

  • 索引失效的场景:

    • 使用!=、NOT IN。
    • 对索引列进行函数操作。

四、总结

MySQL是Java开发中最常用的关系型数据库之一。InnoDB因其事务支持、行级锁和外键约束成为默认存储引擎。B+树因其平衡性、范围查询优化和磁盘I/O优化成为索引的首选数据结构。在实际开发中,合理使用索引和连接池可以显著提升性能