MySQL体系结构和存储引擎

一、database 与 instance

数据库:物理操作系统文件或其他形式文件的集合。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放在内存中的文件,但是定义仍然不变。
实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存区可以被运行的后台线程所共享。数据库实例才是真正的用于操作数据库文件的。
这两个词往往可以互换使用,不过概念完全不同。在MySQL数据库中,实例与数据库的关系通常是一一对应的。但是在集群的情况下可能存在一个数据库被多个数据实例使用。

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

二、数据库体系结构

MySQL由以下几个部分组成:
·连接池组件
·管理服务和工具组件
·SQL接口组件
·查询分析器组件
·优化器组件
·缓冲(Cache)组件
·插件式存储引擎(是基于表的,而不是基于数据库。)
·物理文件

InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(Online Transaction Processing)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。
InnoDB存储引擎将数据放在一个逻辑的表空间中,这个表空间就像黑盒一样由InnoDB存储引擎自身进行管理。

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

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

三、Socket套接字

TCP/IP
TCP/IP套接字方式是MySQL在任何平台下都提供的连接方式,也是网络中使用得最多的一种方式。简单来说,这种方式在TCP/IP连接上建立一个基于网络的连接请求,一般情况下客户端(client)在一台服务器上,而MySQL实例(server端)在另一台服务器上,这两台机器通过一个TCP/IP网络连接。

UNIX
在Linux和UNIX环境下,可以使用UNIX域套接字。UNIX域套接字其实不是一个网络协议,只能在MySQL客户端和数据库实例在一台服务器上的情况下使用。用户可以在配置文件中指定套接字文件的路径,如 --socket=/tmp/mysql.sock。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值