[mysql]mysql技术内幕 InnoDB存储引擎读书笔记-MySQL体系结构和存储引擎(一)

数据库和实例

数据库和数据库实例是两个很容易混淆的概念

数据库:是一组文件,大多是以frm、MYD、MYI、ibd结尾的文件,数据库文件可能不是操作系统上的也可能是内存中的

实例:数据库实例才是真正用于操作数据库文件的,这里需要提一下,MySQL是单进程多线程的。在MySQL中数据库和实例是一一对应的。

MySQL由以下部分组成:

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插入式存储引擎:存储引擎是基于表的,不是基于数据库的
  • 物理文件

其主要流程如下

[mysql]mysql技术内幕 InnoDB存储引擎读书笔记-MySQL体系结构和存储引擎(一)_第1张图片

MySQL存储引擎

MySQL的存储引擎是区别于其他数据库的一个重要特性,存储引擎带来的好处就是每个引擎都有各自的特色,饿哦们可以根据具体的饮用使用不同的引擎建立不同的表,因为MySQL是开源的我们甚至可以修改源码来得到想要的特性,以下是对一些存储引擎的基本介绍:

  • InnDB引擎

    InnDB引擎支持事务,其特点是行锁设计,支持外键。InnODB引擎默认读取不会产生锁。从5.5.8版本开始InnoDB是默认存储引擎。InnoDB使用多版本并发控制(MVCC)来获得高并发性,且实现了SQL标准的4种隔离级别,默认为repeatable级别。同时使用一种next-key-locking的策略来避免幻读现象的产生。对于表中数据的存储,InnoDB采用了聚集的方式,一次每张表的存储都是按主键的顺序进行存放。如果没有显示的在表定义时制定主键,InnoDB会为每一行生成一个6字节的rowid,并以此为主键。 

  • MylSAM引擎

MylSAM不支持事务,表锁设计,支持全文索引。他不支持事务,究其根本不难理解,因为并不是所有应用都需要支持事务,只是简单的表查询是不需要事务的支持。MylSAM的另一个特点就是它 的缓存池址缓存索引文件,而不是数据文件,这个大多数数据库不同 。MylSAM引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。 

  • NDB引擎

NDB引擎是一个集群存储引擎,类似于Oracle的RAC集群。NDB的特点是数据全部存放在内存中(从MySQL5.1版本开始,可以将非索引数据放在磁盘上),因此主键查找的速度极快。  

  • Memory引擎

Memory将表中的数据存放在内存中,如果数据库重启或发生奔溃,表中的数据都将消失,适用于存储临时数据的临时表。

  • Archive引擎

只支持insert和select操作,从MySQL5.1开始支持索引。非常适合存储归档数据,如日志信息。

  • Federated引擎

它不存储表,只是只想一台远程MySQL数据库服务器上的表。

  • Maria引擎

它的特点是支持缓存数据和索引文件,应用了行锁设计,提供MVCC功能,支持事务和非事务安全的选项。     

链接MySQL

下面介绍常用的链接方式,MySQL的链接方式本质是进程之间的通信

  • TCP/IP 套接字    是MySQL在所有平台都支持的链接方式,也是最常见的一种方式,值得注意的是当客户端想MySQL发送TCP/IP链接时,MySQL会先检查权限图,来判断客户端IP是否允许链接到MySQL实例。
  • 命名管道和共享内存    如果两个需要通信的进程在同一个服务器上,那么就可以使用命名管道。
  • UNIX域套接字    只能在MYSQL客户端和数据库实例在同一台服务器上的情况下使用,

你可能感兴趣的:(java,MySQL)