首页
学习
活动
专区
工具
TVP
发布

架构师之路

专栏作者
459
文章
487023
阅读量
207
订阅数
1亿数据量MySQL,如何实现秒级扩容?
数据库上层都有一个微服务,服务层记录“业务库”与“数据库实例配置”的映射关系,通过数据库连接池向数据库路由sql语句。
架构师之路
2024-01-23
1690
连接池居然这么简单?
服务连接池,数据库连接池,缓存连接池,连接池是微服务分层架构中不可或缺的一个组件,本篇讲讲连接池的原理,以及实现细节。
架构师之路
2023-01-04
3230
500W数据,20Wqps分词检索,架构如何设计?
沈哥,我们有个业务,类似于“标题分词检索”,并发量非常大,大概20W次每秒,数据量不是很大,大概500W级别,而且数据不会频繁更新,平均每天更新一次,请问有什么好的方案么?
架构师之路
2023-01-04
7340
feed与秒杀,撑住10Wqps,架构方案一样吗?
《并发扣款,如何保证一致性?》一文,描述了高并发情况下,并发扣款的一致性,幂等性,以及ABA问题。
架构师之路
2023-01-04
4350
并发扣款,如何保证一致性?
沈老师,我们有个业务,同一个用户在并发“查询,逻辑计算,扣款”的情况下,余额可能出现不一致,请问有什么优化方法么? 今天和大家聊一聊这个问题。
架构师之路
2023-01-04
6910
如何系统性学习数据库知识? | 个人经验分享
之前发了一些文章: 《频繁插入,用什么存储引擎更合适?》 《MySQL性能调优,必须掌握这一个工具》 《数据库允许空值(null),往往是悲剧的开始》 《插入时,究竟发生了什么?》 数据库是应用开发中不可或缺的一环,很多朋友会问我,如何系统性学习数据库知识,今天和大家简单分享一下。 首先,要搞透数据库,要学哪几方面的知识? 以我对MySQL的学习为例,至少三个方面的内容需要了解与掌握的: 其一,应用层面:各行各业,是如何使用MySQL来解决各类业务问题的。 画外音:研发工程师必须掌握。 其二,内核层面:M
架构师之路
2022-10-10
1K0
秒换存储引擎,又多了一种架构方案? | 数据库系列
在做业务架构的过程中,你是否遇到过类似的痛点? (1)数据量太大,容量复杂性上移到业务层; (2)并发量太大,性能复杂性上移到业务层; (3)前台与后台存储异构,满足不同查询需求; (4)线上与线下存储异构,满足大数据需求; (5)存储系统迁移成本高,不敢轻易做重构; (6)... 职业生涯十五年,基本都在使用MySQL做线上业务的存储。最近这几年,遇到的问题慢慢多起来,严重影响了研发效率。TiDB近年甚火,于是最近做了一些调研,与大家分享。 如一贯风格,更多的聊:TiDB究竟解决什么问题,以及为什么这
架构师之路
2022-10-08
5070
频繁插入,用什么存储引擎更合适?| 数据库系列
有童鞋在后台留言: 沈老师,MyISAM只支持表锁,但网上文章却说,在并发插入量比较大的时候,比较适合使用MyISAM,这矛盾吗? 这个问题,涉及MySQL表锁的一些细节,借着这个问题,系统性说下表锁的“所以然”。 画外音:网上不少文章只说结论,不说为什么,容易让人蒙圈。 MySQL表锁知识系统性梳理。 哪些存储引擎使用表锁? MySQL,除InnoDB支持行锁外,MySQL的其他存储引擎均只使用表锁,例如:MyISAM, MEMORY, MERGE等。 表锁有什么好处? (1)表锁占用内存少很多,行锁的数
架构师之路
2022-09-27
9850
我被嘲笑了:被查询的列,为啥要放到索引里?(1分钟系列)
《MySQL性能调优,这个工具最有用》留了一个尾巴: select id,name where name='shenjian' select id,name,sex where name='shenjian' 多查询了一个属性,为何检索过程完全不同? 什么是回表查询? 什么是索引覆盖? 如何实现索引覆盖? 哪些场景,可以利用索引覆盖来优化SQL? 这些,这是今天要分享的内容。 画外音:本文试验基于MySQL5.6-InnoDB。 一、什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类
架构师之路
2022-08-26
3380
有没有人,计划开源一套工业级“秒杀”系统架构?
想要搞透一套架构方案,最根本的方法,就是去实践它。 可是,大部分程序员,遇不到这样的业务,接触不到这样的场景啊,怎么办呢? 有个朋友自动化的搭了一套,能让所有人瞬间体验与调优高并发的秒杀架构,分享给大家! 对于秒杀类业务,系统上能如何优化呢? 方向上,主要有两点: 第一,将请求尽量拦截在系统上游,而不要让锁冲突落到数据库。 传统秒杀系统之所以挂,是因为请求都压到了后端数据层,数据读写锁冲突严重,并发高响应慢,几乎所有请求都超时,访问流量大,下单成功的有效流量小。 第二,充分利用缓存。 秒杀买票,这是一个
架构师之路
2022-06-24
4850
疫情之下,组织一场线下的技术大会有多难?(免费福利)
送过不少技术大会的免费票:北京的,上海的,深圳的... ,这次,广州的来了。 疫情之下,线下组织一场技术大会太难了,很多大会要么取消,要么无限期延期,要么转战线上了。为了技术的交流,为了技术的传播,为了技术的氛围,艰难之下,依然有孤勇者。 相比传统门票动辄几千块的技术大会,这个大会,门票只有几十,实在是业界良心。刷脸找举办方要了一些免费票,送给大家。 画外音:见文末。 事件:Gdevops全球敏捷架构运维峰会 地点:广州 时间:6月17日 话题方向:云原生、数据库、架构、存储,运维、金融科技等 一些话题大
架构师之路
2022-06-07
1.9K0
插入时,究竟发生了什么?(非开车,纯技术交流)
《MySQL自增ID,居然大部分人都搞错了?》中的作业题,有少量答对的人,但原理讲得不透,今天简单说下作业题中的答案,以及相关知识点。 作业题是这样的: drop table t1; create table t1(     id int not null auto_increment,     name varchar(10) unique,     count int default 0,     primary key(id),     index(name) )engine=innodb; ins
架构师之路
2022-06-06
3490
MySQL自增ID,居然大部分人都搞错了!?
《MySQL删除数据的三种方式》中的作业题,99%的人答错,有点出乎意料。 画外音:评论中不乏嘲笑知识点简单的小伙伴。 今天简单说下作业题中的答案,以及知识点。 作业题是这样的: 实验步骤如上图: 第一步:建表,设定自增列; 第二步:指定id=1插入,锚定第一行是id是1; 第三步:不指定id,依赖自增机制,插入3行; 画外音:此时id应该变为2,3,4了? 第四步:delete删除所有记录; 画外音:坑就容易出在这里。 第五步:指定id=0插入; 第六步:指定id=1插入; 第七步:不指定id,依赖自
架构师之路
2022-05-18
8880
MySQL到底支不支持哈希索引?(收藏)
(1)InnoDB用户无法手动创建哈希索引,这一层上说,InnoDB确实不支持哈希索引;
架构师之路
2022-04-26
9250
突然掉电,为啥MySQL也不会丢失数据?(收藏)
MySQL采用buffer机制,避免每次读写进行磁盘IO,提升效率: 《缓冲池(buffer pool)》 《写缓冲(change buffer)》 《日志缓冲(log buffer)》 MySQL的buffer一页的大小是16K,文件系统一页的大小是4K,也就是说,MySQL将buffer中一页数据刷入磁盘,要写4个文件系统里的页。 如上图所示,MySQL里page=1的页,物理上对应磁盘上的1+2+3+4四个格。 那么,问题来了,这个操作并非原子,如果执行到一半断电,会不会出现问题呢? 会,这就是所谓
架构师之路
2022-04-19
1.6K0
MySQL事务已提交,数据却丢了,赶紧检查下这个配置!!!(收藏)
有个水友提问: 沈老师,我们有一次MySQL崩溃,重启后发现有些已经提交的事务对数据的修改丢失了,不是说事务能保证ACID特性么,想问下什么情况下可能导致“事务已经提交,数据却丢失”呢? 这个问题有点复杂,得先从redo log说起。 为什么要有redo log? 事务提交后,必须将事务对数据页的修改刷(fsync)到磁盘上,才能保证事务的ACID特性。 这个刷盘,是一个随机写,随机写性能较低,如果每次事务提交都刷盘,会极大影响数据库的性能。 随机写性能差,有什么优化方法呢? 架构设计中有两个常见的优化方法
架构师之路
2022-04-08
9560
MySQL写缓冲(change buffer),终于懂了!!!(收藏)
上篇《MySQL缓冲池(buffer pool),终于懂了》,介绍了InnoDB缓冲池的工作原理。 简单回顾一下: (1)MySQL数据存储包含内存与磁盘两个部分; (2)内存缓冲池(buffer pool)以页为单位,缓存最热的数据页(data page)与索引页(index page); (3)InnoDB以变种LRU算法管理缓冲池,并能够解决“预读失效”与“缓冲池污染”的问题; 画外音:细节详见《MySQL缓冲池(buffer pool),终于懂了》。 毫无疑问,对于读请求,缓冲池能够减少磁盘IO,
架构师之路
2022-03-30
1.1K0
MySQL缓冲池(buffer pool),终于懂了!!!(收藏)
应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。 操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。 MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。 今天,和大家聊一聊InnoDB的缓冲池。 InnoDB的缓冲池缓存什么?有什么用? 缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的作用。 速度快,那为啥不把
架构师之路
2022-03-24
1.2K0
架构师之路,21年干货精选
2021年,迅猛过去了。 今天,给大家做一个分类精选,选取12.31之前发布的,阅读还不错的100篇,大家点击标题,直接阅读。如果之前有错过的文章,这是一个很好的补课机会。 这几篇,首先推荐大家读一读: 《我们从来都反对“大中台,小前台”的架构设计!》2.1W+《关于MySQL,这篇都没人赞,太没天理了!》1.3W+《关于MySQL异步复制,MGR内核原理!》《求解“微信群覆盖”的三种方法:暴力,染色,链表,并查集》关于底层内核的文章,似乎阅读越来越低了。 今年花在开源学习上的时间并不多: 《1万行代码,单
架构师之路
2022-03-04
9870
InnoDB,快照读,在RR和RC下有何差异?(很多人,以为自己懂了...)
MySQL数据库,InnoDB存储引擎,为了提高并发,使用MVCC机制,在并发事务时,通过读取数据行的历史数据版本,不加锁,来提高并发的一种不加锁一致性读(Consistent Nonlocking Read)。
架构师之路
2022-02-12
5430
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档