催人泪下!做技术打铁还需自身硬
前两天,我熬夜看完了整场国足对阵伊朗的亚洲杯八分之一决赛,最后的比分是国足0:3告负,无缘8强。结果确实不尽人意,其实每个中国球迷心里都知道,这场比赛凶多吉少,但为啥还是想看,因为一颗不死的心,因为希望有奇迹的发生。因为我心中有国足队长郑智。
想看这位真爱足球的国足老队长踢完国家队的这最后一场比赛。整场比赛的三个丢球现在再去抱怨是由于后卫的低级失误所导致的,已经变得很索然无味了。 我们要敢于承认差距,敢于接受错误与批评。
有些事儿想要成功,并不是简简单单通过花钱请一个高水平的教练就能解决的。像我们这些做技术的兄弟们也一样,做好技术是一条漫长而又艰辛的道路。怎么理解什么叫技术呢?“技”:就是我们所学习的专业知识;“术“:就是要把所学习知识到发扬出去,让更多的人受益。
今天选择给大家介绍一下MongoDB的核心Wired Tiger插件式存储引擎。也宣告我的个人公众号”我不叫那谁”正式成立。未来会与大家一起学习主流技术,后续会陆续更新MySQL,PG,MongoDB,python,go,hadoop等学习文章。(有兄弟抱怨我说,老分享MySQL和MongoDB的文章,能不能分享点PG,python等相关知识,放心各位老铁,下次就会更新!)
Wired Tiger存储引擎架构模型图如下:
MongoDB从3.0开始引入了WiredTiger存储引擎,但对于原来的MMAP V1(3.0版本默认)也有改动。
但WiredTiger无论是从锁的粒度(库级别锁提升为文档级别锁)通过MVCC实现文档级别的并发控制,允许多个客户端请求同时更新一个集合内存的多个文档,再也不需要在排队等待库级别的写锁。这在提升数据库读写性能的同时,也大大提高了系统的并发处理能力。
还有在存储方式上(WiredTiger在集合和索引级别分配文件,数据库中的所有集合和索引均存储在单独的文件中,集合或者索引删除后,对应的存储文件随即删除。方便回收磁盘空间)、还支持磁盘数据压缩也大大节约了磁盘使用成本。
所以从3.2版本起把WiredTiger作为默认的存储引擎。到此4.0版本支持多文档事务,4.2要支持分片级别的事务。
既然说到支持事务,那么就必须满足事务的ACID特性和应该有的事务隔离级别。
WiredTiger支持快照型的事务隔离级别(snapshot)
什么是事务的snapshot?这里给大家简单聊一些,其实就是事务开始或者进行操作之前对整个wired tiger存储引擎内部正在执行或者将要执行的事务进行一次快照,
保存当时整个引擎所有事务的状态,确定哪些事务是自己可见的,哪些事务是不可见。然后通过MVCC来实现事务的冲突检测。如图所示;
每个事务开始操作,都会记录它所操作的该条记录的版本号信息。事务a更新完之后,会把事务标号加1。然而这时的事务b就需要在加1的基础上去更新新的数据,来实现冲突检测。
Wired Tiger对内存的管理;
wiredTiger对内存使用会分为两大部分,一部分是内部内存,另外一部分是文件系统的缓存。如下图
内部内存可以默认值是物理内存的50%(忽略内存小于1G的情况)。那么剩下来的内存交由文件系统使用,对于wired tiger数据保存是压缩完之后的状态。所以数据从磁盘读到内存,是需要经历如下图;数据所呈现的格式是不一样的。MongoDB会把经常使用到的数据放到IC中,WiredTiger会通过文件系统缓存,自动使用其他所有的空闲内存,放在文件系统缓存里面的数据,与磁盘上的数据格式一致,可以有效减少磁盘I/O。
cache结构梳理图:
数据在内存中是以btree的结构形式进行存储,会通过wired tiger块管理器把数据先读取到IC中,然后更新它之后,页会变成脏页。最后再次调用块管理器,MongoDB内部默认60s会把脏data刷到磁盘。
以上就是我对于Wired Tiger的理解分析。
我们做技术的兄弟们,很不容易,每天面临各种各样的挑战与生活压力带给我们的心酸与痛楚。想要成功,自己的基本功还是要过硬。希望国足的失利能带给你我一些深刻的反思与未来成功的启示。
资源下载
关注公众号:数据和云(OraNews)回复关键字获取
2018DTCC , 数据库大会PPT
2018DTC,2018 DTC 大会 PPT
DBALIFE ,“DBA 的一天”海报
DBA04 ,DBA 手记4 电子书
122ARCH ,Oracle 12.2体系结构图
2018OOW ,Oracle OpenWorld 资料
产品推荐
云和恩墨Bethune Pro企业版,集监控,巡检,安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!
催人泪下!做技术打铁还需自身硬相关推荐
- 关于团队|打铁还需自身硬
一个团队需要有一个团队的精神,这个精神是一种传承,是一种在工作中,在做人做事中应该遵守的东西.而我们的团队精神是什么呢? 作为一名大学生, 如果你不多看书,看好书,多看新闻,多去和别人交流,去行走,那 ...
- Android Weekly - 42 : 打铁还需自身硬
技术文章 Android Native | 内存问题的终极武器 --MTE https://juejin.cn/post/7013595058125406238 Android R 常见 GC 类型与 ...
- IT人不要一直做技术
发表于:2009-03-04 09:51:44 楼主 IT人不要一直做技术 [引子]感觉这篇文章很有深意,正是我所想说的话.希望大家有借鉴. [原文] 我现在是自己做,但我此前有多年在从事软件开发工作 ...
- 做技术的为什么很难发财?
大家经常说一个观点,做技术的很难发财.你去观察统计下身边老板,好像大多数也不是做技术出身. 那为什么做技术的人很难发财呢?是不是技术不重要? 我个人觉得这个问题可以从以下几个角度分析.本文仅供 ...
- 【深度好文】过了30岁,做技术开发、工程师还有前途吗?
岁月是把杀猪刀,这话确实不假:80后工程师大部分已开始奔四,90后工程师群体已人到中年,然后00后奔袭而来...在这样一个充满变化.机遇.挑战.竞争的时代,我们每个人仿佛都被卷入历史的滚滚洪流,很难独 ...
- 以“术”彰“道”,用匠心做技术—对话阿里云MVP刘洪峰
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 一直以来,我们印象里的刘洪峰都是那个热衷布道的物联网老兵"刘老师".可 ...
- 电子行业求职,技术才是硬道理
http://cv.qiaobutang.com/knowledge/articles/5194a6750cf2f49d1f1de39f 前言: 谈起电子产业(也称电子信息产业),相信每个生活在现代社 ...
- 校招生值得去阿里淘系做技术吗?
在网上看到一个话题:去阿里淘系做技术怎么样?值得应届生毕业去吗? 我们邀请了两位通过校招进入淘系技术的同学来回答这一问题. 空骋:浙大计算机专业硕士毕业,图形学算法方向,2018校招入职淘系技术,至今 ...
- 以“术”彰“道”,用匠心做技术—对话阿里云 MVP刘洪峰
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 一直以来,我们印象里的刘洪峰都是那个热衷布道的物联网老兵"刘老师".可 ...
最新文章
- Mybatis中Oracle和Mysql的Count字段问题
- 配置BIND 9 DNS Views 的原理和需求
- python中remove用法_Python 列表 remove() 使用方法及示例
- 怎么判断日出时间早晚_早晚都要擦精华液?问了美容师,发现我弄错了!效果差还浪费...
- 概率论-4.1 大数定律
- 虚拟云服务器有哪些,虚拟云主机和服务器有什么区别
- display:none和visiblity:hidden区别
- 一种适用于FDD+TDD基站天线阵列的多天线共存方式
- 小米平板1android驱动,小米平板3usb驱动
- meshlab调整平行光源
- BaseAdataer基本设配器
- 什么是CAD的模型和布局?
- Cousera吴恩达机器学习week5笔记
- 【产品管理】产品管理四要素
- 文件服务器的配置实训报告,《服务器配置与调试实训报告》要点
- 什么是项目管理?范围、时间、成本、质量
- 既快又准并且低开销,一作亲解 MICRO 2021论文:一种自动化功耗模拟架构
- 【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议
- 信息安全工程师报考完毕!
- ubuntu 更新 apt 源
热门文章
- 第三方开源项目名称_如何为您的开源项目选择品牌名称
- 牛客网 [编程题]餐馆
- Linux强行取消挂载
- 四旋翼双环PID控制
- java 类文件分析_分析Java .class文件
- excel 字符串拼接_Python|处理字符串
- 单链表实现一元多项式相加_python面试系列 01如何实现单链表的逆序
- php 变量源码,PHP源码中变量存储方式
- java 不加锁_在java中,在高并发的时候,不加锁的时候。
- java 双声道音频_Android 播放音频如何实现双声道效果