最新要闻
- 世界观焦点:英媒:多特蒙德中场贝林厄姆将决定自己的未来
- 观察:今年五一档已定档10部新片 王一博《长空之王》超65万人想看
- 天天热讯:海上巨无霸 我国自主研制的全球最大集装箱船今天交付
- 全球讯息:日本H3火箭首秀失败初步调查结果公布:电源系统异常
- 重获新“声”!清华开发出可穿戴人工喉咙:还原准确率超90%
- 天天热点评!美国一邮轮300多人患病呕吐腹泻:疑似感染诺如病毒
- 热资讯!说唱女歌手转行卖烧烤年入百万 直言:梦想和生活不矛盾
- 全球观察:索尼α7 IV发布2.00版本固件:增加Creators' App支持
- 全风化和强风化哪个硬?全风化和强风化的区别是什么?
- 牛转乾坤是什么意思?牛转乾坤放在家里哪个位置?
- 离不开你是哪部电视剧主题曲?离不开你的原唱是谁?
- 惊艳世俗的名字有哪些?惊艳世俗的小说句子有哪些?
- 卧铺有充电的地方吗?卧铺补票怎么补怎么收费?
- 双胡须造型着实罕见!腾势N7申报:首款激光雷达比亚迪来了
- 网易3A级赛车手游《巅峰极速》今日首测 全球超百款跑车正版授权
- 汽车和小孩被劫 定位要先续流量费!大众汽车宣布重大决定
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球速讯:1 MySql基础介绍
- 1 mysql逻辑架构
- 1.1 连接管理与安全性
- 1.2 优化与执行
- 2 并发控制
- 2.1 锁粒度
- 2.2 表锁
- 2.3 行级锁
- 3 事务
- 3.1 数据库事务四特性
- 3.2 隔离级别
- 3.3 死锁
- 3.4 事务日志
- 3.5 MySql中的事务
- 4 多版本并发控制MVCC
- 5 MySql常用存储引擎
- 5.1 InnoDB
- 5.2 MyISAM
- 6 InnoDB如何使用MVCC解决幻读
1 mysql逻辑架构
mysql逻辑架构图:
Mysql服务器、存储引擎 是两个独立的组件,彼此通过api交互
- 第一层:连接处理、授权认证、安全管理
- 第二层:核心服务功能
- 查询解析、分析、优化、缓存以及所有的内置函数(日期、时间、数学、加密函数等)
- 跨存储引擎的功能:存储过程、触发器、视图等。
- 第三层:存储引擎,负责MySQL中数据的存储和提取。
- 服务器通过API与存储引擎进行通信。
- 存储引擎不会去解析SQL,不同存储引擎之间也不会相互通信,仅响应上层服务器的请求。
1.1 连接管理与安全性
- 服务器为每个客户端单独开辟一个线程(或线程池(少量线程)以应对大量连接),处理来自该客户端的所有连接。
- 认证方式:
- 用户名+密码+主机信息(ip 端口)
- 安全套接字SSL(后续章节详解 todo)
- 连接权限校验
1.2 优化与执行
优化器工作内容:
(资料图片仅供参考)
- 先解析查询,并创建解析树,再优化,如:重写查询、决定表的读取顺序、选择合适的索引等。使用【优化器解释explain】来查看其优化内容
- 优化器并不关心表使用什么存储引擎,但存储引擎对于优化查询有影响:优化器会请求存储引擎提供容量或某个具体操作的开销信息,以及表数据的统计信息等。
- 对于SELECT语句,在解析查询之前,服务器会先检查查询缓存,如果能够在其中找到对应的查询,服务器就不必再执行查询解析、优化和执行的整个过程,而是直接返回查询缓存中的结果集。
2 并发控制
Mysql有两个层面的并发控制:服务器层和存储引擎层
2.1 锁粒度
- 每个存储引擎都可以实现自己的锁策略和锁粒度。
- 两种基本锁粒度:表锁、行级锁
2.2 表锁
- Mysql最基本的锁策略,也是开销最小的策略。它会锁定整张表。对表进行写操作前,需先获得写锁。读写互斥,读读不互斥
- 写锁比读锁有更高的优先级,一个写锁请求可能会被插入到读锁队列的前面(反之读锁则不能插入到写锁的前面)。
- 尽管存储引擎可以管理自己的锁,MySQL服务器还是会使用各种有效的表锁来实现不同的目的。例如,Mysql服务器会为诸如ALTER TABLE之类的语句使用表锁,而忽略存储引擎的锁机制。
2.3 行级锁
- 只在存储引擎层实现,而MySQL服务器层没有实现。
- 并发性好,但锁开销大
3 事务
3.1 数据库事务四特性
事务是指一组逻辑操作,它们要么一起成功,要么一起失败。
ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
- 原子性:事务是一个不可分割的最小单元,事务中的操作要么都发生,要么都不发生。
- 一致性:如果事务执行之前数据库是一个完整的状态,那么事务结束后(无论事务是否执行成功)数据库仍然是一个完整的状态。(DB中所有的数据都符合DB的约束规范)
- 隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
- 持久性:事务一旦被提交,它对数据库的影响是永久性的
3.2 隔离级别
SQL标准定义了四种隔离级别:
隔离级别 | 说明 | 问题 |
---|---|---|
读未提交(Read Uncommitted) | 事务A可读取事务B未提交的数据 | 引发 脏读 |
读已提交(Read Committed) | 事务A只能读取其它已提交事务的数据; | 引发 不可重复读 |
可重复读(Repeatable Read) | 保证同一事务中多次读取同样的记录的结果是一致的;Mysql默认事务隔离级别 | 解决了脏读;但引发 幻读 |
可串行化(Serializable) | 强制事务串行执行,在读的每一行数据行上加锁 | 大量的超时和锁竞争 |
脏读:一个事务读取了另外一个未提交事务数据
不可重复读取:在当前事务中,读取了另一事务提交的更新或者删除的数据。异常情形:同一事务先后执行相同的select语句时可能看到不一样的结果
幻读:当事务A在读取某个范围内的记录时,事务B又在该范围内插入了新的记录,当事务A再次读取该范围的记录时,会产生幻行(读取到新插入的记录);多版本控制(MVVC)解决幻读
总结:
3.3 死锁
数据库系统实现了多种锁检测和死锁超时机制:
- 方式一:当检测到死锁的循环依赖,立即返回一个错误。
- 方式二:当查询的时间达到锁等待超时的设定值后,放弃锁请求
- InnoDB处理死锁的方法:将持有最少行级排他锁的事务进行回滚
3.4 事务日志
事务日志的目的是提交事务效率。
- 首先数据库的数据可以被缓存到内存
- 修改表数据时,会先修改内存中的数据,再把该修改行为以追加的方式记录到事务日志
- 事务日志保存到磁盘后,后台线程稍后把修改的数据刷新到磁盘
- 它是一种预写日志策略(write ahead logger),修改数据需要写两次磁盘
3.5 MySql中的事务
一、自动提交
默认采用自动提交模式(auto commit)
- 自动提交模式:如果不是显式地开启一个事务,那么每一条sql指令都会当做一个事务来执行。
- 非自动提交模式:所有sql指令都在一个事务中,直到显式地执行COMMIT提交或者ROLLBACK回滚,该事务结束,同时又开始了新的事务。
二、在事务中混合使用存储引擎
MySQL服务器层不管理事务,事务是由下层的存储引擎实现的。所以在同一个事务中,使用多种存储引擎是不可靠的。
三、隐式和显式锁定todo
4 多版本并发控制MVCC
目标:减少不必要的锁操作
实现原理:
一、两个前提:
- 每个事务开始之前,会以递增方式生成一个系统版本号。以下简称:VNum
- 在每一行记录增加两个隐藏列:一个保存行的创建时间、一个保存行的删除时间。这两个时间概念用系统版本号来代替
二、对于不同的sql指令,InnoDB执行不同的操作:
INSERT:为新插入的每一行保存VNum作为行版本号。DELETE:为删除的每一行保存VNum作为行删除标识。UPDATE:为插入一行新记录,保存VNum作为行版本号,同时保存VNum到原来的行作为行删除标识。SELECT:InnoDB会根据以下两个条件检查每行记录:
- 只查找版本早于当前事务版本的数据行(也就是,行的系统版本号小于或等于事务的系统版本号),这样可以确保事务读取的行,要么是在事务开始前已经存在的,要么是事务自身插入或者修改过的。
- 行的删除版本要么未定义,要么大于当前事务版本号。这可以确保事务读取到的行,在事务开始之前未被删除。
只有符合上述两个条件的记录,才能返回作为查询结果。
温馨提示:数据库的删除、更新,跟浅义上的理解不一样:1、delete并非把数据从磁盘删除;update它是先插入后删除。在后续学习笔记会对此进行更深入讲解。
5 MySql常用存储引擎
5.1 InnoDB
- InnoDB采用MVCC来支持高并发,实现了四个标准的隔离级别,默认级别:REPEATABLE READ (可重复读)
- 通过间隙锁(next-key locking)策略防止幻读的出现 (后续章节详解 todo)
- InnoDB的表是基于聚族索引建立 (后续章节详解 todo)
- 存储格式是平台独立,可以将数据和索引文件跨平台复制。
- 其它优化:可预测性预读、自适应hash索引、插入缓冲区等 (后续章节详解 todo)
- 支持真正热备份(后续章节详解 todo)
5.2 MyISAM
不支持:事务、行级锁、奔溃后安全恢复适用于:表比较小、读多写少的场景
特性:
一、加锁与并发对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁。在表有读取查询的同时,也可以往表中插入新的记录(并发插人)二、奔溃修复崩溃后无法安全恢复三、索引特性支持全文索引:对于MyISAM表,即使是BL0B和TEXT等长字段,也可以基于其前500个字符创建索引
6 InnoDB如何使用MVCC解决幻读
后续章节详解 todo可参照:InnoDB事务模型和锁定
关键词:
java代码审计-XSS
全球今日讯!vue中将base64流数据转成pdf文件可打印
环球速讯:1 MySql基础介绍
世界观焦点:英媒:多特蒙德中场贝林厄姆将决定自己的未来
观察:今年五一档已定档10部新片 王一博《长空之王》超65万人想看
天天热讯:海上巨无霸 我国自主研制的全球最大集装箱船今天交付
全球讯息:日本H3火箭首秀失败初步调查结果公布:电源系统异常
重获新“声”!清华开发出可穿戴人工喉咙:还原准确率超90%
天天热点评!美国一邮轮300多人患病呕吐腹泻:疑似感染诺如病毒
React Hooks源码深度解析
当前热文:虹科分享 | B站崩了怎么办?Redis企业版数据库多云战略分析
每日速读!Math.atan2求角度解析
快速打包、发布和管理应用——AppUploader工具介绍
星纪魅族集团宣布成立 全面推行新战略,新理念
热资讯!说唱女歌手转行卖烧烤年入百万 直言:梦想和生活不矛盾
全球观察:索尼α7 IV发布2.00版本固件:增加Creators' App支持
全风化和强风化哪个硬?全风化和强风化的区别是什么?
牛转乾坤是什么意思?牛转乾坤放在家里哪个位置?
离不开你是哪部电视剧主题曲?离不开你的原唱是谁?
惊艳世俗的名字有哪些?惊艳世俗的小说句子有哪些?
卧铺有充电的地方吗?卧铺补票怎么补怎么收费?
每日关注!C++笔记--数组、函数、预处理
索爱mk16i支持通话录音吗?索爱mk16i拍照效果怎么样?
双胡须造型着实罕见!腾势N7申报:首款激光雷达比亚迪来了
网易3A级赛车手游《巅峰极速》今日首测 全球超百款跑车正版授权
汽车和小孩被劫 定位要先续流量费!大众汽车宣布重大决定
讯息:股价涨停 中国上市公司永鼎回应美国室温超导技术:目前不可行
当前看点!财运好的男人手相 什么手相最有财运
IM通讯协议专题学习(六):手把手教你如何在Android上从零使用Protobuf
GO语言学习笔记-方法篇 Study for Go ! Chapter five - Method
每日看点!面试被问到了解哪些开发模型?看这一篇就够了!
热键是什么意思?热键冲突怎么解决?
微信怎么群发消息?微信怎么分组管理好友?
环球微资讯!绝无系统广告!蔚来手机真机曝光:神似索尼
每日看点!比亚迪F品牌越野SUV谍照曝光:对标奔驰大G 价格40万起
每天少睡一两个小时算熬夜?专家提醒:大脑会变笨
A4车主免费变成“A5”车主?奥迪做出重大决定
委员建议在农村淘汰老头乐!推广更好的新能源汽车
qq拍一拍怎么设置?qq拍一拍怎么撤回?
三星n7108d能升级到什么版本?三星N7108D手机参数
springboot~ConditionalOnProperty注解的使用
环球信息:给C#auto属性一个初始值的最佳方法是什么?
当前报道:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(java解题)
【热闻】在2020年JD Power CSI墨西哥研究中 雪佛兰低于平均水平
每日动态!国内油价仍在上行区间 下一轮预计涨0.07-0.08元/升
每日短讯:世界最长寿女性去世 享年128岁:经历两次世界大战、全球大流行病
焦点速读:回头率爆表!闹市试驾哪吒S:20万级最吸引人的轿跑
报复性消费来了 2023年快递突破200亿件 百亿件仅28天
今日热搜:上大教授蔡传兵:室温超导距离实际应用还很遥远
世界头条:《洋葱》原唱_洋葱歌曲原唱
世界即时看!10Wqps评论中台,如何架构?B站是这么做的!!!
简讯:前端设计模式——中介者模式
全球今日报丨Typora语法
Linux 中如何开启端口
环球微资讯!多地或迎来30℃的“春天”:今夏是否会遭遇极端高温?专家回应
每日热讯!宜家储物柜竟成网红打卡地 上海宜家禁止在仓库拍照
每日消息!农民工大哥火车上用盆炫10袋泡面 饭量让网友惊叹:干活能吃更多
环球观焦点:海尔为何能反超格力
天天快消息!微软坚信Switch可原生运行《使命召唤》:没有理由不能优化
环球快播:Kubernetes 的 HPA 原理详解
世界热资讯!当我把ChatGPT拉进群聊里,我的朋友都玩疯了
NTP校时服务器(时钟服务器)在安防监控系统里的重要性
天天新动态:以宿主机用户身份运行Docker容器
环球讯息:配置中心 | .NET 集成 Nacos 配置中心
3月9日生意社DBP基准价为9475.00元/吨
环球今头条!中核首席专家:人造太阳有望在30年后实现供能 核聚变商用
【天天报资讯】有你在的城市吗?中国“民富”50城:沪京苏杭位列前4 长三角仍是最富庶地区
0.536秒!清华学子拍到中国空间站凌月 画面震撼:网友为中国航天点赞
每日讯息!15年耗费万亿日元 日本国产飞机梦碎:原型机被拆解
【全球新视野】夫妻200万造别墅找陌生人抱团养老 每月1500元 网友并不看好
世界观天下!湖北现购车狂潮 东风系最高降9万遭疯抢 乘联会:其他省份或效仿
全球播报:专家权威点评比亚迪CTB技术:刀片与车身完美结合 只能在比亚迪才能实现
天天亮点!促销潮蔓延 汽车全面降价已来临?比亚迪或是最大功臣!
前沿资讯!怎么做才能不丢消息?
世界快看:读Java性能权威指南(第2版)笔记11_堆内存上
当前时讯:新生儿史低 日本恐将不复存在:工业正在崩溃边缘
每日消息!湖北现购车狂潮:最高发9万元补贴 12万买合资B级车
云计算的历史演进
狗屁不通文章生成器在线网页版 (2023年最新)
当前时讯:1万元!TP-Link发布Wi-Fi 7挖矿路由器:比RTX 4090快得多
世界今热点:2岁娃总发烧咳嗽 一查肺里有个洞:8个月前嗑南瓜子 壳进入肺部
非洲部落活人献祭的食人树:真的存在吗?
热文:有人在《绝地求生》里把炸弹扔了2000米远!还没开挂
世界热门:《星空》确定延期至9月6日发售 直面会6月11日举行
四川雅安旅游景点 四川雅安有哪些好玩的地方
盐山县聚成管道防腐保温厂
青岛西海岸新区2023年第一批产权型人才住房项目配售条件
【世界新视野】认养大熊猫1年10万终身100万:成龙认养了2只
岚图CEO讽刺路虎汽车抄袭:我们鼓励原创
世界焦点!类魂游戏《卧龙:苍天陨落》10场最难BOSS战:吕布让玩家绝望
环球消息!0.vim常用命令
【C++】购书系统问题测试&功能补充
环球热门:Celery框架的基本使用与介绍
班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
通用表表达式
【全球独家】关于docker镜像IMAGE的备份和还原操作
【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为