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

架构师之路

专栏成员
464
文章
515419
阅读量
210
订阅数
AI是怎么帮我写代码,写SQL的?(本文不卖课)
近期,ChatGPT风起云涌,“再不入局,就要被时代淘汰”的言论甚嚣尘上,借着这一波创业的朋友都不止3-4个,如果没记错,前几次抛出该言论的风口似乎是区块链,元宇宙,WEB3.0。 面对新技术,一如既往的,要保持着敬畏,保持着开放的心态:
架构师之路
2023-08-10
4310
连接池居然这么简单?
服务连接池,数据库连接池,缓存连接池,连接池是微服务分层架构中不可或缺的一个组件,本篇讲讲连接池的原理,以及实现细节。
架构师之路
2023-01-04
3560
500W数据,20Wqps分词检索,架构如何设计?
沈哥,我们有个业务,类似于“标题分词检索”,并发量非常大,大概20W次每秒,数据量不是很大,大概500W级别,而且数据不会频繁更新,平均每天更新一次,请问有什么好的方案么?
架构师之路
2023-01-04
7910
feed与秒杀,撑住10Wqps,架构方案一样吗?
《并发扣款,如何保证一致性?》一文,描述了高并发情况下,并发扣款的一致性,幂等性,以及ABA问题。
架构师之路
2023-01-04
5090
并发扣款,如何保证一致性?
沈老师,我们有个业务,同一个用户在并发“查询,逻辑计算,扣款”的情况下,余额可能出现不一致,请问有什么优化方法么? 今天和大家聊一聊这个问题。
架构师之路
2023-01-04
8180
如何系统性学习数据库知识? | 个人经验分享
之前发了一些文章: 《频繁插入,用什么存储引擎更合适?》 《MySQL性能调优,必须掌握这一个工具》 《数据库允许空值(null),往往是悲剧的开始》 《插入时,究竟发生了什么?》 数据库是应用开发中不可或缺的一环,很多朋友会问我,如何系统性学习数据库知识,今天和大家简单分享一下。 首先,要搞透数据库,要学哪几方面的知识? 以我对MySQL的学习为例,至少三个方面的内容需要了解与掌握的: 其一,应用层面:各行各业,是如何使用MySQL来解决各类业务问题的。 画外音:研发工程师必须掌握。 其二,内核层面:M
架构师之路
2022-10-10
1.1K0
秒换存储引擎,又多了一种架构方案? | 数据库系列
在做业务架构的过程中,你是否遇到过类似的痛点? (1)数据量太大,容量复杂性上移到业务层; (2)并发量太大,性能复杂性上移到业务层; (3)前台与后台存储异构,满足不同查询需求; (4)线上与线下存储异构,满足大数据需求; (5)存储系统迁移成本高,不敢轻易做重构; (6)... 职业生涯十五年,基本都在使用MySQL做线上业务的存储。最近这几年,遇到的问题慢慢多起来,严重影响了研发效率。TiDB近年甚火,于是最近做了一些调研,与大家分享。 如一贯风格,更多的聊:TiDB究竟解决什么问题,以及为什么这
架构师之路
2022-10-08
5290
频繁插入,用什么存储引擎更合适?| 数据库系列
有童鞋在后台留言: 沈老师,MyISAM只支持表锁,但网上文章却说,在并发插入量比较大的时候,比较适合使用MyISAM,这矛盾吗? 这个问题,涉及MySQL表锁的一些细节,借着这个问题,系统性说下表锁的“所以然”。 画外音:网上不少文章只说结论,不说为什么,容易让人蒙圈。 MySQL表锁知识系统性梳理。 哪些存储引擎使用表锁? MySQL,除InnoDB支持行锁外,MySQL的其他存储引擎均只使用表锁,例如:MyISAM, MEMORY, MERGE等。 表锁有什么好处? (1)表锁占用内存少很多,行锁的数
架构师之路
2022-09-27
1K0
我被嘲笑了:被查询的列,为啥要放到索引里?(1分钟系列)
《MySQL性能调优,这个工具最有用》留了一个尾巴: select id,name where name='shenjian' select id,name,sex where name='shenjian' 多查询了一个属性,为何检索过程完全不同? 什么是回表查询? 什么是索引覆盖? 如何实现索引覆盖? 哪些场景,可以利用索引覆盖来优化SQL? 这些,这是今天要分享的内容。 画外音:本文试验基于MySQL5.6-InnoDB。 一、什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类
架构师之路
2022-08-26
3890
MySQL性能调优,这个工具最有用(中)
《MySQL性能调优,这个工具最有用(上)》 详细叙述了explain结果中最重要的type字段(连接类型)的含义。 其实,explain结果中还有一个Extra字段,对分析与优化SQL有很大的帮助,今天花1分钟简单和大家聊一聊。 数据准备: create table user ( id int primary key, name varchar(20), sex varchar(5), index(name) )engine=innodb; insert into user values(1, 'sh
架构师之路
2022-08-26
5090
MySQL性能调优,必须掌握这一个工具!!!(1分钟系列)
《数据库允许空值(null),往往是悲剧的开始》一文通过explain来分析SQL的执行计划,来分析null对索引命中情况的影响。 explain是MySQL性能调优过程中必须掌握的工具,今天花1分钟简单说下,explain结果中常见的type结果及代表的含义,并且通过同一个SQL语句的性能差异,说明建立正确的索引多么重要。 explain结果中的type字段代表什么意思? MySQL的官网解释非常简洁,只用了3个单词:连接类型(the join type)。它描述了找到所需数据使用的扫描方式。 最为常见
架构师之路
2022-08-26
4400
数据库允许空值(null),往往是悲剧的开始(1分钟系列)
很多小知识点,我以为自己懂了,实际没搞透。 数据库字段允许空值(null)的问题,你遇到过吗? 实验过程: create table user ( id int, name varchar(20), index(id) )engine=innodb; 【说明:id为索引,非唯一(non unique),允许空(null)】 insert into user values(1,'shenjian'); insert into user values(2,'zhangsan'); insert into use
架构师之路
2022-07-18
6450
有没有人,计划开源一套工业级“秒杀”系统架构?
想要搞透一套架构方案,最根本的方法,就是去实践它。 可是,大部分程序员,遇不到这样的业务,接触不到这样的场景啊,怎么办呢? 有个朋友自动化的搭了一套,能让所有人瞬间体验与调优高并发的秒杀架构,分享给大家! 对于秒杀类业务,系统上能如何优化呢? 方向上,主要有两点: 第一,将请求尽量拦截在系统上游,而不要让锁冲突落到数据库。 传统秒杀系统之所以挂,是因为请求都压到了后端数据层,数据读写锁冲突严重,并发高响应慢,几乎所有请求都超时,访问流量大,下单成功的有效流量小。 第二,充分利用缓存。 秒杀买票,这是一个
架构师之路
2022-06-24
5140
疫情之下,组织一场线下的技术大会有多难?(免费福利)
送过不少技术大会的免费票:北京的,上海的,深圳的... ,这次,广州的来了。 疫情之下,线下组织一场技术大会太难了,很多大会要么取消,要么无限期延期,要么转战线上了。为了技术的交流,为了技术的传播,为了技术的氛围,艰难之下,依然有孤勇者。 相比传统门票动辄几千块的技术大会,这个大会,门票只有几十,实在是业界良心。刷脸找举办方要了一些免费票,送给大家。 画外音:见文末。 事件: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
3730
MySQL自增ID,居然大部分人都搞错了!?
《MySQL删除数据的三种方式》中的作业题,99%的人答错,有点出乎意料。 画外音:评论中不乏嘲笑知识点简单的小伙伴。 今天简单说下作业题中的答案,以及知识点。 作业题是这样的: 实验步骤如上图: 第一步:建表,设定自增列; 第二步:指定id=1插入,锚定第一行是id是1; 第三步:不指定id,依赖自增机制,插入3行; 画外音:此时id应该变为2,3,4了? 第四步:delete删除所有记录; 画外音:坑就容易出在这里。 第五步:指定id=0插入; 第六步:指定id=1插入; 第七步:不指定id,依赖自
架构师之路
2022-05-18
9280
MySQL到底支不支持哈希索引?(收藏)
(1)InnoDB用户无法手动创建哈希索引,这一层上说,InnoDB确实不支持哈希索引;
架构师之路
2022-04-26
9690
突然掉电,为啥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.7K0
MySQL事务已提交,数据却丢了,赶紧检查下这个配置!!!(收藏)
有个水友提问: 沈老师,我们有一次MySQL崩溃,重启后发现有些已经提交的事务对数据的修改丢失了,不是说事务能保证ACID特性么,想问下什么情况下可能导致“事务已经提交,数据却丢失”呢? 这个问题有点复杂,得先从redo log说起。 为什么要有redo log? 事务提交后,必须将事务对数据页的修改刷(fsync)到磁盘上,才能保证事务的ACID特性。 这个刷盘,是一个随机写,随机写性能较低,如果每次事务提交都刷盘,会极大影响数据库的性能。 随机写性能差,有什么优化方法呢? 架构设计中有两个常见的优化方法
架构师之路
2022-04-08
1.1K0
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.4K0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档