MySql体系结构和存储引擎

《MySQL系列-InnoDB引擎01》MySQL体系结构和存储引擎 NDB有一个问题值得注意的是,NDB存储引擎的连接操作(JOIN)是在MySQL数据库层完成,而不是存储引擎层完成,这意味着复杂的连接操作,需要巨大的网络开销。TCP/IP套接字是MySQL数据库在任何平台下都提供的连接方式,也是网络中使用最多的一种方式,这种方式在TCP/IP连接上建立一个基于网络的连接请求,一般情况下客户端(client)在一台服务器上,而MySQL实例(server)在另一台服务器上,这两台服务器通过TCP/IP网络连接。而校验的标准就是根据MySQL数据库中的user权限视图。 阅读详情

一、数据库和数据库实例

数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;

数据库实例是程序,是位于用户与操作系统之间的一层数据库管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

1、MySql被设计为一个单进程多线程的数据库,MySql数据库实例在系统上的表现就是一个进程。

root@TryHard:~# ps -ef | grep mysqld
mysql     1015     1  0  2016 ?        00:48:00 /usr/sbin/mysqld

可以看到MySql数据库服务器进程的进程号是1015。

2、启动数据库的时候,MySql会读取配置文件,它会根据配置文件的参数来启动数据库。在MySql数据库中,可以没有配置文件参数,在这种情况下,MySql会按照编译时的默认参数设置启动实例。

下面是查看MySql数据库实例启动时,会在哪些位置查找配置文件,以及读取配置文件的顺序。

root@TryHard:~# mysql --help

在上面命令的输出中会有下面两行输出。

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

可以看出MySql启动时会读取的配置文件以及读取配置文件的顺序。

3、配置文件中有一个参数是datadir,该参数指定了数据库在磁盘中将数据所存储的目录。

这里写图片描述

二、MySql体系结构

下面是MySql的结构图:
这里写图片描述

从图中可以看到MySql主要由以下几部分组成:
1、连接池组件
2、管理服务和工具组件
3、SQL接口组件
4、查询分析器组件
5、优化器组件
6、缓冲(Cache)组件
7、插件式存储引擎
8、物理文件

MySql数据库区别于其它数据库的最重要的一个特点就是其插件式的表存储引擎。MySql插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如Sql分析器和优化器等。
存储引擎是基于表的,而不是数据库。

1、InnoDB存储引擎
InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。

InnoDB存储引擎将数据放在一个逻辑的表空间中,这个表空间就像黑盒子一样由InnoDB存储引擎自身进行管理。
从MySql4.1版本开始,它可以将每个InnoDB存储引擎的表单独存放在一个独立的ibd文件中。
InnoDB存储引擎通过使用多版本并发控制来获得高并发性,并且实现了SQL标准的4中隔离级别,默认是repeatable级别。
同时,InnoDB存储引擎使用一种被称为next-key locking的策略来避免幻读现象的产生。
InnoDB存储引擎还提供了插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用的功能。
对于表中数据的存储,InnoDB存储引擎采用了聚集的方式,因此每张表的存储都是按照主键的顺序进程存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。

2、MyISAM存储引擎
MyISAM存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用。
MyISAM存储引擎另一个与众不同的地方是它的缓冲池只缓存索引文件,而不缓冲数据文件。数据文件的缓存交给操作系统本身来完成。在5.1.23版本之后,64位的操作系统可以支持大于4GB的索引缓冲区。

MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。

3、NDB存储引擎
NDB存储引擎是一个集群存储引擎,NDB存储引擎的特点是数据全部放在内存中,因此主键查找的速度非常快。
NDB存储引擎的连接操作(join)是在MySql数据库层完成的,而不是在存储引擎层完成的。这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢。

4、Memory存储引擎
Memory存储引擎将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它适合用于存储临时数据的临时表,以及数据仓库中的纬度表。
Memory存储引擎默认使用哈希索引,而不是B+树索引。
虽然Memory存储引擎速度快,但是它支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型。最重要的是,存储变长字段时是按照定常字段的方式进行的,因此会浪费内存。

5、Archive存储引擎
Archive存储引擎只支持insert和select操作,从5.1版本开始支持索引。Archive存储引擎使用zlib算法将数据行进行压缩后存储,压缩比一般可达1:10。
Archive存储引擎非常适合存储归档数据,如日志信息。
Archive存储引擎使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能。

6、Federated存储引擎
Federated存储引擎并不存放数据,它只是指向一台远程MySql数据库服务器上的表。

7、Maria存储引擎
Maria存储引擎是新开发的引擎,设计目标主要是用来取代原有得到MyISAM存储引擎。
Maria存储引擎的主要特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的BLOB字符类型的处理性能 。

8、其它存储引擎
MySql还支持的存储引擎包括Merge,CSV,Sphinx和Infobright。

三、MySql的问题

1、MySql数据库支持全文索引吗?
支持。MyISAM、InnoDB和Sphinx存储引擎都支持全文索引。
2、当表的数据量大于1000万时MySql的性能会急剧下降吗?
不会。因为MySql是数据库,不是文件,随着数据行数的增加,性能当然会有所下降,但是这些下降不是线性的。如果用户选择了正确的存储引擎,以及正确的配置,再多的数据量MySql也能承受。

四、各存储引擎之间的比较

这里写图片描述

可以通过show engines语句查看当前使用的MySql支持的存储引擎,也可以通过查找information_schema数据库下的engines表。

这里写图片描述

五、连接MySql

连接MySql数据库的操作其实是一个连接进程和MySql数据库实例进行通信。
从程序设计的角度来说,本质上是进程通信。进程通信方式主要有:管道,命令管道,命名字,TCP/IP套接字,UNIX域套接字。

1、TCP/IP
TCP/IP套接字方式是MySql数据库在任何平台下都提供的连接方式,也是网络中使用的最多的一种方式。这种方式在TCP/IP连接上建立一个基于网络的连接请求,一般客户端在一台主机上,而MySql数据库实例在另一台主机上。

#mysql -h 192.168.0.1 -u xxx -p
Enter password:

在通过TCP/IP连接到MySql实例时,MySql数据库会先检查一张权限视图,用来判断发起请求的客户端IP是否允许连接到MySql数据库实例。
在数据库mysql中的user表中记录着这些用户。

这里写图片描述

2、命名管道和共享内存
如果两个需要通信的进程在同一台主机上,那么可以使用命名管道。
在MySql数据库中需要在配置文件中启用–enable-named-pipe选项。
在4.1之后的版本中,还提供了共享内存的连接方式,这是通过在配置文件中添加–shared-memory实现的。如果想使用共享内存的方式,在连接时,MySql客户端还必须使用–protocol=memory选项。

3、UNIX域套接字
在Linux和Unix下,还可以使用UNIX域套接字。
UNIX域套接字其实不是网络协议,只有当客户端和数据库实例在同个主机上时,才可以使用。
用户可以在配置文件中指定套接字文件的路径,如–socket=/tmp/mysql.sock。
用户可以通过下面的命令查找UNIX域套接字文件的位置:

mysql> show variables like 'socket';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| socket        | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+
1 row in set (0.00 sec)

然后可以通过下面的方式连接数据库服务器:

root@TryHard:~# mysql -u root -S /var/run/mysqld/mysqld.sock -p
Enter password: 
浅析MySQL体系结构与存储引擎 数据库和实例 、MySQL体系结构 、MySQL存储引擎 、存储引擎的选择 阅读详情

相关推荐

第01讲:MySQL体系结构与存储引擎

我们学习了 MySQL 数据库的体系结构,SQL 的执行流程,存储引擎和分类,重点讲解了 InnoDB 存储引擎的体系结构、特性,对比了 InnoDB 和 MyISAM存储引擎的功能和性能,在各方面 InnoDB 都完胜 MyISAM,InnoDB 也是 MySQL 今后重点发力的地方,很多地方都默认采用 InnoDB 进行存储,还有 InnoDB 引擎内部的组成和各版本对比,如下图所示。InnoDB 存储引擎的核心特性包括:MVCC、锁、锁算法和分类、事务、表空间和数据页、内存线程以及状态查询。

开发小菜鸟的专栏 175

MySQL服务与存储引擎间的接口

MySQL定义了一系列抽象存储引擎API,以支持插件式存储引擎架构。在历史版本中,这些接口被为"table handler"。我们这里所说的存储引擎(Storage Engine),是指数据的存储/读取相关的逻辑模块。而存储引擎API(table handler)是指Storage Engine与MySQL优化器间的接口。比如,新增一个存储引擎---Storage Engine,如何实现MyS

itopcat的专栏 4401

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3650

MySQL InnoDB存储引擎

InnoDB 是 MySQL 的默认事务型引擎,也是最重要、使用最广泛的存储引擎。它被设计用来处理大量的短期(short-lived)事务,短期事务大部分情况是正常提交的,很少回被回滚。InnoDB 的性能和自动崩溃恢复特性,使得它在非事务型存储的需求中也很流行。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑 InnoDB 引擎。InnoDB 的数据存储在表空间(tablespace...

u014378181的博客 781

安卓设备安全相关技术

当前安卓设备使用的加密方案是基于Soc中一块可写入的rom实现,称为熔丝,其结果不可逆。 1、secureboot 2、AVB(Android Verify Boot) 3、dm-verity(device mapper) 4、keymaster 5、crypto 6、rpmb(replay private memory block) 7、TEE(Trust execute environment) 8、SELinux .........

weixin_43797328的博客 4839

STM32 A/B分区OTA升级实战:从原理到避坑指南

本文详细解析STM32 A/B分区OTA升级的核心原理与实战实现,涵盖双分区设计、Bootloader开发、固件传输验证及常见问题解决方案。重点介绍通过A/B分区实现无缝升级与安全回滚的机制,帮助开发者规避典型陷阱,提升嵌入式系统远程更新的可靠性与效率。

qqq44的博客 1109

MySQL InnoDB内部结构图

ylqmf的专栏 3034

Autodesk全家桶:从AutoCAD到Maya,设计师必备的7款神器全解析

本文全面解析Autodesk全家桶中的7款设计师必备软件,包括AutoCAD、Revit、Inventor、Fusion 360、Maya和3ds Max等。从二维制图到三维建模,从建筑信息模型(BIM)到影视动画制作,这些工具在工程设计、建筑可视化和数字创意领域展现出强大的协同效应。通过实战案例展示如何整合工作流,显著提升设计效率与项目质量。

weixin_29237635的博客 461

MySQL InnoDB存储引擎体系架构 —— 内存管理

        笔者最近研究MySQL的Innodb引擎底层方面的技术,打算写一系列关于MySQL优化方面的技术文章,今天给大家分享的内容是MySQL InnoDB内存和缓冲池方面的知识。         我们都知道,InnoDB引擎是基于磁盘存储的,但由于物理硬盘访问速度与内存访问速度存在着巨大的鸿沟,InnoDB常用缓冲池技术来提高数据库的性能。         与常用的缓存思想类似,在数...

nuoWei_SenLin的博客 9338

高通Camera HAL3调试实战:如何用camxoverridesettings.txt高效抓取日志与dump图像数据

本文深入探讨了高通Camera HAL3调试中camxoverridesettings.txt文件的高效应用,重点介绍了如何通过该文件精准控制日志输出级别与dump图像数据,帮助开发者快速定位移动影像系统中的问题。文章详细解析了日志分级配置、图像数据捕获技巧及典型问题排查流程,为高通Camera HAL3项目开发提供了实用技术点。

weixin_30315905的博客 863

点到面点云配准(Point To Plane)算法知识详解和详细推导,C++代码实现

点到面 ICP (Iterative Closest Point) 是在 3D 点云配准中常见的一种变体,通过最小化点到对应面(由法向量定义的局部平面)的距离来提高收敛速度和精度。

qq_36812406的博客 1811

《MySQL技术内幕——InnoDB存储引擎》读书笔记(一)——MySQL体系结构和存储引擎

一、定义数据库和数据库实例 数据库 (database): 物理操作系统文件或其他形式文件类型的集合 实例(instance) :  MySQL数据库由后台线程以及一个共享内存区组成,共享内存可以被运行的后台线程所共享,数据库实例才是真正用于操作数据库文件的 MySQL数据库实例在系统上的表现就是一个进程。 当启动实例时,MySQL数据库会去读配置文件,根据配置文件

王慧龙的专栏 1507

【100%通过率】2023华为od机试C卷【电脑病毒感染】C语言 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1043

MySQL 体系结构与存储引擎

通过深入理解MySQL体系结构和存储引擎特性,可以针对不同业务场景做出最优的数据库设计和配置选择,从而获得最佳的性能和可靠性。协议支持:TCP/IP、Unix Socket、Named Pipe。:高并发写选择InnoDB,读多写少考虑MyISAM。文件:表空间文件(每个表单独文件):系统表空间、独立表空间、通用表空间。:如MySQL 8.0的哈希索引优化。使用非聚集索引(索引和数据分离):回滚日志(存储在系统表空间):接收SQL语句,返回结果。:SQL解析器,生成解析树。:查询优化器,生成执行计划。

m0_70296476的博客 1142

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1394

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MySQL体系结构和存储引擎

MySQL 的体系结构是一个分层的模块化设计,各组件协同工作以高效处理数据请求、保证事务一致性,并支持灵活扩展。

new9232的博客 925

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

mysql-MySQL体系结构和存储引擎

对于数据库中页的修改操作,首先修改在缓冲池中的页,然后再以一定的频率(checkpoint机制)刷新。InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。在数据库中进行读取页的操作,首先将从磁盘读到的页放在缓冲池中,这个过程称为将页“FIX”在缓冲池。缓冲池是一个很大的内存区域,其中存放各种类型的页,那么如何对这么大的内存区域进行管理呢?后台线程的主要作用是负责刷新内存池中的数据,保证缓存池中的内存缓存的是最近的数据。否则,读取磁盘上的页。缓冲池的大小直接影响着数据库的整体性能。

以爱护甲,爱满枫林。 811

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MySQL - 体系结构与存储引擎

MySQL - 体系结构与存储引擎

weixin_46619605的博客 1351

MySQL体系结构与存储引擎

目录一、性能化简介1.1 通过性能剖析进行优化 参考自《高性能MySQL》 对于服务器端的开发来说,服务器的性能不言而喻,这是直接影响用户体验的,那么针对服务器性能方面的问题,我们最常碰到的主要有三个请求: 如何判断服务器性能到了最佳状态? 某条语句为什么执行不够快? 用户投诉的停顿、堆积、或者卡死的某些间歇性疑难故障如何解决? 带着这三个问题,我们抓住测量服务器的时间花费在哪个阶段,这一关键点来开始学习服务器关于性能的知识。 一、性能化简介 首先要了解服务器性能,我们要知道性能的评判标准是什么? 性

lensen明 452

MySQL 体系结构及存储引擎

MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 MySQL InnoDB 锁 MySQL InnoDB MVCC MySQL InnoDB 实现高并发原理 MySQL InnoDB 快照读在RR和RC下有何差异 MySQL 体系结构 MySQ...

殷建卫 690

【读书笔记】《MySQL技术NM InnoDB存储引擎》第一章 MySQL体系结构和存储引擎

《MySQL技术内幕 InnoDB存储引擎》第一章 MySQL体系结构和存储引擎 读书笔记

优快云博客 854

MySQL探秘:从体系结构到存储引擎

在当今数字化时代,数据无疑是企业和组织的核心资产之一。而数据库管理系统作为存储、管理和处理这些数据的关键工具,其重要性不言而喻。在众多数据库管理系统中,MySQL 凭借其卓越的性能、开源的特性以及广泛的应用场景,成为了数据库领域的中流砥柱。无论是小型初创企业,还是大型跨国公司,MySQL 都能为其提供高效、可靠的数据管理解决方案,助力业务的稳定发展。接下来,让我们深入探索 MySQL 的体系结构与存储引擎,揭开其强大功能背后的奥秘。连接层是 MySQL 与外部世界交互的入口,它承担着处理客户端连接请求的重任

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 655

MySQL之体系结构和存储引擎

体系结构和存储引擎1. 定义数据库和实例2. MySQL 体系结构3. MySQL 存储引擎3.1 InnoDB3.2 MyISAM3.3 NDB3.4 Memory3.5 Archive3.6 Federated3.7 Maria3.8 BlackHole3.9 CSV4. MyISAM VS InnoDB5. 连接 MySQL5.1 TCP/IP5.2 管道5.3 共享内存5.4 UNIX 域套接字 1. 定义数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:MySQL 数据库由

wang_zhao_的博客 909

MySQL的体系结构及存储引擎

MySQL的体系结构及存储引擎

hulin的博客 268

mysql体系结构内存,MySQL的体系结构及存储引擎

一、MySQL的体系结构概述整个 MYSQL Server由以下组成Connection Pool:连接池组件Management Services & Utilities:管理服务和工具细件SQL Interface:SQL接口组件Parser:查询分析器组件Optimizer:优化器组件Caches& Buffers:缓冲池组件Pluggable Storage Engines...

weixin_35647899的博客 191
上一篇: 腾讯后台开发面试经验
下一篇: InnoDB存储引擎——后台线程
readyao
博客等级 码龄11年 243粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值