【MySQL数据库】第一章解读:MySQL架构与历史

前言:

      本章概要描述mysql服务器架构、各种存储引擎间的主要区别及区别的重要性

      回顾MySQL历史背景、基准测试,通过简化细节和演示案例来讨论MySQL的原理

正文:

      MySQL架构可在多种不同场景中应用,可嵌入到应用程序中农,支持数据仓库、内容索引、部署软件、高可用冗余系统、在线事务处理系统等;

       MySQL最重要的特性是他的存储引擎架构,使得查询处理及其他系统任务和数据存储、提取分离;

1.1MySQL逻辑架构

1.png

1.2并发控制

锁粒度:

锁策略:在锁开销和数据安全性间寻求平衡,每个存储引擎可实现指定锁策略和粒度

表锁:table lock  最基本的 开销最小 锁定整表 

行级锁:row lock 最大程度支持并发  最大的锁开销 在存储引擎层(以自己的方式)实现

1.3事务

独立工作单元,一组原子性SQL查询

隔离级别:

四种,每种规定了事务中所作的修改,较低的隔离可以执行更高的并发、开销也更低

READ UNCOMMITTED未提交读

        事务中的修改及时没有提交,对其他事务也是可见的;事务读取未提交的数据:脏读;很少使用

READ COMMITTED提交读

        almost库默认隔离级别,非MySQL;事务从开始到结束只看见已提交的事务所作的修改,本身所做的修改对其他事务不可见;不可重复读:两次执行同样的查询,结果可能不一样(其他事务的修改)

REPEATABLE READ可重复读

        MySQL默认,解决了脏读,同一事务多次读同样结果;幻读:当某个事务在读取某个范围内的记录时、另一个事务在该范围内插入新的记录,当前事务再次读取该范围记录、幻行

SERIALIZABLE:可串行化

        最高,强制事务串行执行,避免幻读问题,读取每行数据时加锁(可导致大量超时和锁争用),很少使用

1.png

死锁

1、两个多个事务在同一个资源上相互占用并请求锁定对方占用的资源;

2、多个事务试图以不同的顺序锁定资源,可能产生死锁;

3、多个事务同时锁定同一个资源;

锁的行为和顺序和存取引擎相关,同样的顺序执行语句,一些存储引擎会产生死锁一些不会;

死锁产生的双重原因:因为真正的数据冲突(很难避免),因为存储引擎的实现方式导致;

死锁发送后,只有部分或完全回滚其中一个事务,才能打破死锁:InnoDB即回滚持有最少行级排他锁的事务; 

1.3.4MySQL中的事务:存储引擎实现

MySQL两种事务型存储引擎:InnoDB、NDB Cluster

自动提交AUTOCOMMIT;

      默认采用自动提交模式,如果不显式开始一个事务,则每个查询都被当做一个事务执行提交操作,可通过AUTOCOMMIT变量来启用=1  =ON 、禁用=0  =OFF(all查询都在一个事务中直到显式commit rollback)事务结束同时开始新的事务,修改这个变量对非事务型表没有任何影响;

MySQL可以通过set transaction isolation level设置隔离级别,新的级别在下一个事务开始时生效,配置文件设置整个库的,也可只改变当前会话的隔离级别

set session transaction isolation level read committed;

建议:不管何时都不要显示执行LOCK TABLES ,不管使用的是什么存储引擎

1.4多版本并发控制MVCC

        数据库MySQL、Oracle、postgresql等都实现了MVCC,各自实现机制不同【源】

        MVCC:每个连接到数据库的读、在某个瞬间看到的是数据库的快照,写操作在提交之前对外不可见;【源】

       更新时,将旧数据标记为过时且在别处增加新版本的数据(多个版本的数据,只有一个最新),容许读取之前的数据

特点:

1、每行数据都存在一个版本,每次数据更新时都更新该版本

2、修改时copy出当前版本、随意修改,各事务间不干扰

3、保存时比较版本号,成功commit则覆盖原纪录,失败则放弃rollback

4、只在REPEATABLE READ 和READ COMMITTED两个隔离级别下工作

1.5MySQL存储引擎

     mysql将每个数据库保存位数据目录下的一个子目录,创建表示,mysql在子目录下创建与表同名的.frm文件保存表的定义,不同存储引擎保存数据和索引的方式不同,但表的定义在MySQL服务层同一处理;

InnoDB:默认事务型引擎、最重要、广泛使用

     处理大量短期事务;其性能和自动崩溃恢复特性、非事务型存储的需求中也很流行

     数据存储在由InnoDB管理的表空间中,由一系列数据文件组成;

     使用MVCC支持高并发,并实现了四个标准的隔离级别,默认是REPEATABLE READ可重复读,通过间隙锁next-key locking防止幻读,间隙锁使得InnoDB锁定查询设计的行还锁定索引中的间隙防止唤影行;

间隙锁:

  当使用范围条件并请求锁时,InnoDB给符合条件的已有数据记录的索引项加锁,对应键值在条件范围内但是不存在的记录(间隙)加锁,间隙锁:【源】

//如emp表中有101条记录,其empid的值分别是 1,2,...,100,101Select * from  emp where empid > 100 for update;

    InnoDB对符合条件的empid值为101的记录加锁,也会对empid大于101(这些记录并不存在)的“间隙”加锁;

      1、上面的例子,如果不使用间隙锁,如果其他事务插入大于100的记录,本事务再次执行则幻读,但是会造成锁等待,在并发插入比较多时、要尽量优化业务逻辑,使用相等条件来访问更新数据,避免使用范围条件;

      2、 在使用相等条件请求给一个不存在的记录加锁时,也会使用间隙锁,当我们通过参数删除一条记录时,如果参数在数据库中不存在,库会扫描索引,发现不存在,delete语句获得一个间隙锁,库向左扫描扫到第一个比给定参数小的值,向右扫描到第一个比给定参数大的值,构建一个区间,锁住整个区间内数据;【源】

1.5.2MyIsSAM存储引擎

   全文索引、压缩、空间函数,不支持事务和行级锁,崩溃后无法安全恢复

存储:

    将表存储在两个文件中:数据.MYD、索引文件.MYI

DESTOON B2B网站 DESTOON B2B网站

DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分

DESTOON B2B网站 648 查看详情 DESTOON B2B网站

    表可以包含动态或静态(长度固定)行,MySQL据表定义来决定采用何种行格式

    表如是变长行,默认配置只能处理256TB数据(指向记录的指针长度6字节),改变表指针长度,修改表的MAX_ROWS和AVG_ROW_LENGTH,两者相乘=表可到达的max大小,修改会导致重建整个表、表all索引;

特性:

    1、对整张表加锁,读、共享锁,写、排他锁,但在读的同时可从表中插入新记录:并发插入

    2、修复:可手工、自动执行检查和修复操作,CHECK TABLE mytable检查表错误,REPAIR TABLE mytable进行修复,执行修复可能会丢失些数据,如果服务器关闭,myisamchk命令行根据检查和修复操作;

    3、索引特性:支持全文索引,基于分词创建的索引,支持复杂查询

    4、延迟更新索引键Delayed Key Write,如果指定了DELAY_KEY_WRITE选项,每次修改完,不会立即将修改的索引数据写入磁盘,写入到内存的键缓冲区,清理此区或关闭表时将对应的索引块写入到磁盘,提升写性能,但是在库或主机崩溃时造成索引损坏、需要执行修复操作

压缩表:

    表在创建并导入数据后,不再修改,比较适合,可使用myisampack对MyISAM表压缩(打包),压缩表不能修改(除非先解除压缩、修改数据、再次压缩);减少磁盘空间占用、磁盘IO,提升查询性能,也支持只读索引;

    现在的硬件能力,读取压缩表数据时解压的开销不大,减少IO带来的好处大得多,压缩时表记录独立压缩,读取单行时不需要解压整个表

性能:

   设计简单,紧密格式存储;典型的性能问题是表锁的问题,长期处于locked状态:找表锁

1.5.3内建的其他存储引擎

Archive:适合日志和数据采集类应用,针对高速插入和压缩优化,支持行级锁和专业缓存区,缓存写利用zlib压缩插入的行,select扫描全表;

Blackhole:复制架构和日志审核,其服务器记录blackhole表日志,可复制数据到备库 日志;

CSV:数据交换机制,将CSV文件作为MySQL表来处理,不支持索引;

Federated:访问其他MySQL服务器的代理,创建远程mysql的客户端连接将查询传输到远程服务器执行,提取发送需要的数据,默认禁用;

Memory:快速访问不会被修改的数据,数据保存在内存、不IO,表结构重启后还在但数据没了

     1、查找 或 映射 表 ,2、缓存周期性聚合数据, 3、保存数据分析中产生的中间数据

     支持hash索引,表级锁,查找快并发写入性能低,不支持BLOB/TEXT类型的列,每行长度固定,内存浪费

Merge:myisam变种,多个myisam合并的虚拟表

NDB集群引擎:

1.5.4第三方存储引擎

OLTP类:

XtraDB基于InnoDB改进,性能、可测量性、操作灵活

PBXT:ACID/MVCC,引擎级别的复制、外键约束,较复杂架构对固态存储SSD适当支持,较大值类型BLOB优化

TokuDB:大数据,高压缩比,大数据量创大量索引

RethinkDB:固态存储

面向列的

列单独存储,压缩效率高

Infobright:大数据量,数据分析、仓库应用设计的,高度压缩,按照块(一组元数据)排序;块结构准索引,不支持索引(量大索引也没用),如查询无法再存储层使用面向列的模式执行,则需要在服务器层转换成按行处理

社区存储引擎:***

1.5.5选择合适的引擎

 除非需要用到某些InnoDB不具备的特性,且无办法可以替代,否则优先选择InnoDB引擎

不要混合使用多种存储引擎,如果需要不同的存储引擎:

1、事务:需要事务支出,InnoDB XtraDB;不需要 主要是select insert 那MyISAM

2、备份:定期关闭服务器来执行备份,该因素可忽略;在线热备份,InnoDB

3、崩溃恢复:数据量较大,MyISAM崩后损坏概率比InnoDB高很多、恢复速度慢

4、持有的特性:

1.5.6转换表的引擎

ALTER TABLE:最简单

ALTER TABLE mytable ENGINE=InnoDB

此会执行很长时间,MySQL按行将数据从原表复制到新表中,在复制期间可能会消耗掉系统all的I/O能力,同时原表上加读锁;会失去和原引擎相关的all特性

导出与导入:

mysqldump工具将数据导出到文件,修改文件中CREATE_TABLE语句的存储引擎选项,同时修改表名(同一个库不能存在相同的表名),mysqldump默认会自动在CREATE_TABLE语句前加上DROP TABLE语句

创建与查询:CREATE SELECT 

综合上述两种方法:先建新存储引擎表,利用INSERT……SELECT语法导数

CREATE TABLE innodb_table LIKE myisam_tableALTER TABLE innodb_table ENGINE=InnoDB;INSERT INTO innodb_table SELECT * FROM myisam_table;数据量大的话,分批处理(放事务中)

1.6MySQL时间线Timeline

 早期MySQL破坏性创新,有诸多限制,且很多功能只能说是二流的,但特性支持和较低的使用成本,使受欢迎;5.x早起引入视图、存储过程等,期望成为“企业级”数据库,但不算成功,5.5显著改善

1.png

1.7MySQL开发模式

遵循GPL开源协议,全部源代码开发给社区,部分插件收费;

1.8总结

mysql分层架构,上层是服务器层的访问和查询执行引擎,下层存储引擎(最重要)

相关文章:

【MySQL数据库】第二章解读:MySQL基准测试

【MySQL数据库】第三章解读:服务器性能剖析(上)

以上就是【MySQL数据库】第一章解读:MySQL架构与历史的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1038947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 04:20:56
下一篇 2025年12月2日 04:21:17

相关推荐

  • 有哪些比特币交易平台_2025十大比特币交易平台排名

    选择一个安全可靠的比特币交易平台是加密货币投资的第一步。本文将为您盘点2025年全球顶尖的十大比特币交易平台,帮助您根据自身需求,在交易深度、安全性、用户体验和产品多样性等方面做出明智的选择。 2025年十大比特币交易平台排名 以下排名综合考虑了平台的全球市场份额、流动性、产品创新、安全记录和用户口…

    2025年12月11日
    000
  • Polygon征服以太坊?Layer2革命性扩展原理曝光

    Polygon通过Rollups、PoS侧链与状态通道提升以太坊性能:1. 采用ZK-Rollups的zkEVM实现高效安全跨链交易;2. 利用PoS侧链提供低成本、高吞吐的EVM兼容环境;3. 借助状态通道支持链下高频微支付,仅提交最终状态上链。 binance币安交易所 Binance币安注册入…

    2025年12月11日
    000
  • 构建加密被动收入策略?staking与yield farming

    通过staking和yield farming可构建加密被动收入策略。首先选择支持质押的区块链项目,将原生代币转入储存包并委托验证节点以获取奖励;接着参与DeFi平台流动性池,存入等值代币获得LP凭证并质押赚取收益;随后通过定期复投奖励提升复合增长,优先选用自动复投协议优化效率;最后需分散资产配置,…

    2025年12月11日
    000
  • 稳定币为什么市场份额巨大?锚定机制的核心

    稳定币通过多种机制实现价格稳定,其中法币抵押型如USDT和USDC依赖1:1美元储备与定期审计,加密超额抵押型如DAI要求150%以上ETH抵押并自动清算,算法调节型通过增发或销毁调节供应,商品锚定型如PAXG则关联黄金等实物资产。 binance币安交易所 Binance币安注册入口: Binan…

    2025年12月11日
    000
  • Huobi火币官方入口 火币新版v3.6.2APP安全下载教程

    Huobi 火币官方入口|火币 v3.6.2 安全下载及安装教程 火币 htx(原 huobi) 是知名的数字资产交易平台,提供现货、合约、借贷、理财等多种服务。本文将为你提供 火币官网安全入口、v3.6.2 官方 app 下载通道 及账户注册与安装流程,帮助你安全上手。 官网入口 请通过火币官方渠…

    2025年12月11日
    000
  • 币安Web3入口官方直达 币安链生态v3.8版APP下载向导

    币安 Web3 入口官方直达|币安链生态 v3.8 版 APP 下载向导 币安 binance web3 提供去中心化钱 包、链上资产管理、跨链桥接、dapp 交互等多项功能,为用户进入 bnb chain 生态提供便捷通道。本文将整理 web3 官方访问方式 与 v3.8 版币安 app 的获取方…

    2025年12月11日
    000
  • 什么是“预言机”(Oracle)?Chainlink (LINK) 如何成为区块链世界的数据桥梁?

    区块链预言机并非是预测未来的工具,而是连接智能合约与链下真实世界数据的关键桥梁。由于区块链本身是一个封闭的确定性系统,智能合约无法主动获取外部信息,预言机则解决了这一核心难题,使得基于现实数据的去中心化应用(dapp)成为可能。 什么是区块链预言机? 1、区块链的核心特性之一是确定性,即在一个封闭环…

    2025年12月11日
    000
  • 流动性 vs. 质押(Staking):哪个才是2025年最佳的被动收入方式?

    区块链预言机是连接智能合约与外部数据的关键桥梁,解决链上封闭性问题;Chainlink通过去中心化预言机网络、多数据源验证、共识聚合机制和加密经济激励,提供安全可靠的数据服务,广泛应用于DeFi、保险等领域。 主流货币交易所推荐: 欧易OKX: Binance币安: 火币Huobi: Gateio芝…

    2025年12月11日
    000
  • 欧易APP安全下载 v6.147.1 OKX交易所官方正版安装包

    欧易app安全下载入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来欧易app官方最新版本v6.147.1的安全下载方式与使用详情,感兴趣的网友一起随小编来瞧瞧吧! OKX交易所官网入口: 欧易APP安全下载 v6.147.1: 1、平台提供全天候行情数据更新,涵盖多种数字资产交易对,用…

    2025年12月11日
    000
  • 欧易APP最新版下载 v6.147.0 OKX官方交易所安卓版下载

    欧易app最新版下载 v6.147.0 okx官方交易所安卓版下载在哪里?这是近期不少用户都在查询的内容,接下来由php小编为大家带来欧易app的官方下载地址以及相关功能详情,感兴趣的用户请继续往下看吧! 欧易交易所官网入口: 欧易APP最新版下载 v6.147.0: 实时行情与数据展示 1、提供全…

    2025年12月11日
    000
  • 比特币PC28计划:预测策略与风险揭秘

    比特币PC28结合数字资产与预测玩法,存在较高风险。首先通过历史数据统计分析,挖掘数字规律并利用图表识别冷热号码;其次关注比率变化,判断资金流向以动态调整策略;同时需警惕非官方平台、账户安全及转账风险;最后认识到比特币价格波动和市场情绪带来的系统性风险,即使预测正确也可能因币价下跌导致损失,必须设定…

    2025年12月11日
    000
  • 锁定币圈机构大鳄?4款链上追踪工具实战指南

    通过Arkham、OKLink、Cielo Finance和Nansen四大工具,用户可追踪链上地址背后的实体动向,分析交易数据,监控储存包活动,并识别聪明钱行为,从而洞察机构资金流向与市场趋势。 binance币安交易所 Binance币安注册入口: Binance币安APP下载: 欧易OKX交易…

    2025年12月11日
    000
  • 欧易官方客户端下载 v6.148.0 安卓手机版OKX交易所APP

    欧易官方客户端下载 v6.148.0 安卓手机版okx交易所app在哪里?这是不少网友都关注的,接下来由php小编为大家带来欧易官方客户端下载地址及使用详情,感兴趣的网友一起随小编来瞧瞧吧! 欧易交易所官网入口: 欧易官方客户端下载 v6.148.0: 平台核心功能概览 1、提供全球主流数字资产的交…

    2025年12月11日
    000
  • 2025年十一月最值得投资的十大最佳加密货币

    本文介绍了十种主流数字资产及其技术特点与应用,包括比特币(BTC)作为价值存储、以太坊(ETH)支持智能合约与DApps、Solana(SOL)实现高吞吐量交易、BNB用于BNB Chain生态支付与治理、XRP优化跨境支付、卡尔达诺(ADA)基于学术研究的权益证明机制。 欧易okx官网入口: 欧易…

    2025年12月11日
    000
  • 比特币找回术:实用指南,帮你找回丢失的币

    数字资产的丢失常因私钥或助记词保管不善造成。本文将介绍几种不同的方法,旨在帮助用户通过系统性的步骤,尝试找回自己持有的比特币资产。 1、币安Binance 币安Binance官网入口: 币安BinanceAPP下载链接: 2、欧易okx 欧易okx官网入口: 欧易okxAPP下载链接: 3、火币HT…

    2025年12月11日
    000
  • 苹果手机下载欧易交易所APP:简单步骤

    首先需使用非大陆地区Apple ID登录App Store,搜索并下载欧易APP;或通过欧易官网识别设备后跳转至对应地区商店完成安装。 由于应用商店的区域限制,在苹果手机上获取欧易APP需要一些特定的操作。用户需要通过更换App Store的账户地区来完成下载与安装。 欧易okx官网入口: 欧易ok…

    2025年12月11日
    000
  • 欧易交易所官网入口 欧易交易所app下载注册简单步骤教程

    首先访问欧易官网输入正确域名,通过下载App并按提示安装,注册时选择手机号或邮箱接收验证码,设置高强度密码并同意协议完成账户创建。 欧易okx官网入口: 欧易okxAPP下载链接: 本文将详细介绍如何找到欧易(OKX)交易所的官方网站入口,并提供其移动应用程序的下载与账户注册分步教学。 一、访问官方…

    2025年12月11日
    000
  • 欧易平台币币交易怎么做_欧易交易所币币交易教程

    首先确保资产已划转至交易账户,然后进入目标交易对页面,通过限价单或市价单进行币币交易。1、在欧易平台完成资金从“资金账户”到“交易账户”的划转;2、选择如BTC/USDT等交易对进入交易界面;3、使用限价单设定指定价格买卖,或选择市价单以当前最优价格快速成交,系统将自动执行并完成交易。 欧易okx官…

    2025年12月11日
    000
  • 什么是加密货币借贷平台?用户如何通过抵押资产来借入或贷出资金?

    加密货币借贷平台通过智能合约实现借入与贷出,用户可抵押数字资产获取贷款或存入资金赚取利息。首先需明确角色,完成注册并转入资产;借款人选择抵押币种,系统按50%-75%比率计算可借额度,须维持安全抵押率以防清算;出借人则在储蓄板块选择币种存款,按市场利率获收益,部分平台支持灵活提取;去中心化平台如Aa…

    2025年12月11日
    000
  • Layer 2扩容方案全解析:Arbitrum vs. Optimism,谁是2025年以太坊的最佳搭档?

    以太坊layer 2赛道竞争激烈,arbitrum与optimism作为两大巨头,在技术、生态和未来规划上各有千秋。谁能成为2025年以太坊生态的最佳扩容伙伴,值得我们深入探讨。 技术核心与实现差异 1、欺诈证明机制是两者核心区别。Arbitrum采用多轮交互式欺诈证明,理论上更高效且成本更低,而O…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信