一、MySQL体系结构和存储引擎

时间:2023-08-26
本文章向大家介绍一、MySQL体系结构和存储引擎,主要内容包括1.1 定义数据库和实例、1.2 MySQL体系结构、1)InnoDB存储引擎、2)MyISAM 存储引擎、1.5 连接MySQL、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、MySQL体系结构和存储引擎

1.1 定义数据库和实例

  • 数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可以是 frm、MYD、MYI、ibd结尾的文件。
  • 实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行得后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。

这两个词有时可以互换使用,不过两者的概念完全不同。在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个数据库实例使用的情况。

当启动实例时,MySQL数据库会去读取配置文件,根据配置文件的参数来启动数据库实例。

linux /etc/my.cnf

win .cnf / .ini

配置文件中有一个参数 datadir,该参数指定了数据库所在的路径。linux 默认 datadir 为 /usr/local/mysql/data

1.2 MySQL体系结构

从概念上讲,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

存储引擎是基于表的,而不是数据库。

1)InnoDB存储引擎

支持事务,行锁,支持外键

通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认是 repeatable 级别。同时,使用一种被称为 next-key locking 的策略来避免幻读。除此之外,InnoDB存储引擎还提供了插入缓冲(insert buffer)、二次读写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

对于表中数据的存储,InnoDB存储引擎使用了聚集(clustered)的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的 ROWID,并以此作为主键。

next-key locking Innodb锁机制:Next-Key Lock 浅谈

插入缓冲(insert buffer) Mysql关键特性-插入缓冲 (Insert Buffer)

二次读写(double write)MySQL InnoDB特性:两次写(Double Write)

自适应哈希索引(adaptive hash index)MySQL 自适应哈希索引

预读(read ahead)MySQL的预读机制

2)MyISAM 存储引擎

不支持事务、表锁、支持全文索引

由 MYD 、MYI组成,MYD 用来存放数据文件,MYI 用来存放索引文件

1.5 连接MySQL

一个连接进程和MySQL数据库实例进行通信。从程序设计的角度来说,本质上是进程通信。如果对进程通信比较了解,可以知道常用的进程通信方式有管道、命名管道、命名字、TCP / IP 套接字、UNIX 域套接字。

在通过 TCP / IP 连接到 MySQL 实例时,MySQL数据库会先检查一张权限视图,用来判断发起请求的客户端IP是否允许连接到 MySQL实例。

原文地址:https://www.cnblogs.com/lhxBlogs/p/17658637.html