MySQL体系结构和存储引擎

本文深入解析MySQL的多种存储引擎特性,包括InnoDB、MyISAM、NDB、Memory、Archive、Federated及Maria等,对比各引擎优势,探讨其适用场景。同时,介绍MySQL的体系结构与连接方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • MySQL体系结构的特点:插件式的表存储引擎
MySQLOracle
架构单进程多线程。与SQL Server类似多进程架构(Oracle的Windows版本也是单进程多线程架构)
无参数文件时启动实例按编译时的默认参数设置启动启动会报错
  • MySQL参数文件在哪?
#查看mysql查找其配置文件的路径
mysql --help | grep my.cnf 
#配置文件中读取的参数值会以读到的最后一个文件的为准
/etc/my.cnf  /etc/mysql/my.cnf  /usr/local/mysql/etc/my.cnf  ~/.my.cnf

1. 体系结构

数据库是文件的集合,依照某种数据模型组织起来并存放于二级存储器中的数据集合;
数据库实例是程序,位于用户和操作系统之间的一层数据管理软件。用户,应用程序对数据的任何操作都通过实例。

在这里插入图片描述

2.存储引擎

2.1 InnoDB
  • 主要面向OLTP在线事务处理。
  • 支持事务,行锁,外键,MVCC多版本并发控制,实现了4种隔离级别,类似Oracle的非锁定读。
  • 聚集(clustered)方式:表中顺序按主键顺序存放,无主键时,会生成6字节ROWID作为主键。
  • 一些网站使用InnoDB处理插入/更新的操作平均800次/秒。
2.2 MyISAM
  • 主要面向OLAP应用。不支持事务,表锁,支持全文索引。
  • 特别:缓冲池只缓存索引文件,不缓存数据文件,数据文件的缓存交由操作系统本身来完成。
  • MYD(数据文件) MYI(索引文件)
2.3 NDB
  • 集群存储引擎。类似ORACLE的RAC集群
架构
NDB集群存储引擎share nothing。独享CPU/内存/硬盘,并行效率高
Oracle RAC集群share everything。共享CPU/内存/硬盘,并行效率低
  • 数据全部存放在内存(5.1后非索引数据可放到磁盘)。主键查找极快,添加DN节点可线性提升性能,高可用高性能。
  • JOIN操作是在数据库层,网络开销大。
2.4 Memory
  • 数据存放在内存中,适合临时表,数据仓库中的纬度表。
  • 默认使用Hash索引,而不是B+树索引。
  • 支持表锁。不支持TEXT,BLOB列。存储VARCHAR是按照定长CHAR方式。
  • 中间结果集超过容量或含有TEXT,BLOB,数据库会把其存放到磁盘中。
2.5 Arichive
  • 提供高速插入和压缩功能。使用zlib算法压缩后存储,比例可达1:10.。
  • 只支持INSERT和SELECT,适合归档数据如日志信息。
  • 行锁实现高并发插入,但并非事务安全。
2.6 Federated
  • 不存放数据,指向一台远程MySQL服务器上的表。类似SQL Server的链接服务器和Oracle的透明网关。但只支持Mysql的表。
2.7 Maria
  • 设计目标是取代MyISAM从而成为默认存储引擎。
  • 支持缓存数据和索引文件。行锁,MVCC,支持事务和非事务安全的选项,更好的BLOB类型的处理性能。
2.8 其他

Merge CSV Sphinx Infobright

3.存储引擎比较

//查看支持的存储引擎
SHOW ENGINES; 
//或者查询系统表
SELECT * FROM INFORMATION_SCHEMA.ENGINES

在这里插入图片描述

4.连接MySQL

常见的进程通信方式:管道、命名管道、TCP/IP套接字、UNIX域套接字

4.1 TCP/IP

MYSQL在任何平台都提供的连接方式。
连接实例时,MYSQL会先检查权限视图,判断客户端IP是否允许连接。

USE MYSQL;
SELECT HOST, USER, PASSWORD FROM USER;
4.2 命名管道和共享内存

WINDOWS一些平台,通信的两线程在同一服务器上可使用命名管道。配置文件中启用enable-named-pipe。
4.1版本后提供共享内存连接方式,配置文件添加–shared-memory,客户端连接必须使用–protocol=memory

4.3 UNIX域套接字

Linux和UNIX环境下使用。不是网络协议,所以客户端和数据库实例得在同一服务器
配置文件中指定套接字文件的路径,如–socket=/tmp/mysql.sock

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值