时间飞逝,距离6月底的汇总文《架构师之路,半年文章50篇精选》又过去了3个月。画外音:上半年系统性的写了一些底层硬核、ServiceMesh、架构设计、算法、数据库、业务实践、带队作战、一分钟系列的文章,欢迎点击上述标题阅读。如果大伙有错过的文章,本文是一个很好的补课机会。数据库实践:《两类非常隐蔽的全表扫描,不能命中索引》《数据库允许空值(null),往往是悲剧的开始》《同一个SQL语句,为啥性
分类:
其他好文 时间:
2020-11-10 11:34:05
阅读次数:
12
继续回答星球水友提问:沈老师,MyISAM只支持表锁,但网上文章却说,在并发插入量比较大的时候,比较适合使用MyISAM,这矛盾吗?这个问题,涉及MySQL表锁的一些细节,借着这个问题,系统性说下表锁的“所以然”。画外音:网上不少文章只说结论,不说为什么,容易让人蒙圈。MySQL表锁知识系统性梳理。哪些存储引擎使用表锁?MySQL,除InnoDB支持行锁外,MySQL的其他存储引擎均只使用表锁,例
分类:
数据库 时间:
2020-11-10 11:33:20
阅读次数:
13
继续回答星球水友提问:沈老师,我听网上说,MySQL数据表,在数据量比较大的情况下,主键不宜过长,是不是这样呢?这又是为什么呢?这个问题嘛,不能一概而论:(1)如果是InnoDB存储引擎,主键不宜过长;(2)如果是MyISAM存储引擎,影响不大;先举个简单的栗子说明一下前序知识。假设有数据表:t(idPK,nameKEY,sex,flag);其中:(1)id是主键;(2)name建了普通索引;假设
分类:
数据库 时间:
2020-11-10 11:33:03
阅读次数:
12
继续回答知识星球水友提问。问题域:数据量大、并发量高场景,如何在流量低峰期,平滑实施表结构变更?画外音,一般来说,是指增加表的属性,因为:(1)如果是减column,升级程序不使用即可;(2)如果是修改column,程序兼容性容易出问题;首先,一起看下有哪些常见方案。方案一:在线修改表结构。画外音:altertableaddcolumn数据量大的情况下,锁表时间会较长,造成拒绝服务,一般不可行。方
分类:
数据库 时间:
2020-11-10 11:32:08
阅读次数:
12
继续回答星球水友提问。沈哥,我们有个业务,类似于“标题分词检索”,并发量非常大,大概20W次每秒,数据量不是很大,大概500W级别,而且数据不会频繁更新,平均每天更新一次,请问有什么好的方案么?这是一个典型的,短文本分词搜索的问题,简单聊聊自己的经验。常见的文本检索方案有哪些?(1)数据库LIKE法将标题数据存放在数据库中,使用like来查询,方案非常简单,能支持简单的模糊搜索,但不支持分词。画外
分类:
其他好文 时间:
2020-11-10 11:31:19
阅读次数:
7
继续解答星球水友提问。===沈老师,我们有个业务,同一个用户在并发“查询,逻辑计算,扣款”的情况下,余额可能出现不一致,请问有什么优化方法么?===扣款的业务场景是怎样的?用户购买商品的过程中,要对余额进行查询与修改,大致的业务流程如下:第一步,从数据库查询用户现有余额:SELECTmoneyFROMt_yueWHEREuid=$uid;不妨设查询出来的$old_money=100元。第二步,业务
分类:
其他好文 时间:
2020-11-10 11:30:56
阅读次数:
8
继续答星球水友提问,30WQPS的点赞计数业务,如何设计?可以看到,这个业务的特点是:(1)吞吐量超高;(2)能够接受一定数据不一致;画外音:计数有微小不准确,不是大问题。先用最朴素的思想,只考虑点赞计数,可以怎么做?有几点是最容易想到的:(1)肯定不能用数据库抗实时读写流量;(2)redis天然支持固化,可以用高可用redis集群来做固化存储;(3)也可以用MySQL来做固化存储,redis做缓
分类:
其他好文 时间:
2020-11-10 11:30:42
阅读次数:
6
==星球水友提问==沈老师,你好,想请教一个身份证信息检索的问题。公司有一个每秒5万并发查询的业务,(假设)根据身份证MD5查询身份证信息,目前有1000亿条数据,纯文本存储,前几天看你写LevelDB,请问这个业务能利用LevelDB内存数据库进行存储么?有没有其他优化方案?画外音:LevelDB《内存KV缓存/数据库》。==问题描述完==上一位星球水友问的是36亿日志后台分页查询,紧接着又来了
分类:
其他好文 时间:
2020-11-10 11:30:25
阅读次数:
10
沈老师,你好,想请教一个数据库查询日志,前台页面显示的问题。需求:(1)按照某些特定检索条件查询日志;(2)通过前台Web页面查询并显示相关日志信息;(3)检索需求包含用户,时间段区间,类型等特定字段;希望做到:(1)查询速度尽可能快;(2)支持分页查询;目前方案:日志信息存储在Oracle中,根据日期对Oracle做了分区处理,每天生成一个分区表,每个分区表中的数据总量大概在1000W左右。在相
分类:
其他好文 时间:
2020-11-10 11:30:08
阅读次数:
11
前几天,杨紫琼同学在知识星球提问,说公司要切换MQ,从一个旧的服务商升级为新的服务商,问有没有什么好方案。这个需求估计还挺普遍的,这里分享一些经验。一、MQ架构简述如上图,使用MQ异步通信,一般分为三层:消息发送方:使用MQ客户端生成消息。MQ-client::SendMsg(topic,msg);MQ服务:中转消息。消息接收方:使用MQ客户端消费消息。MQ-client::RecvMsg(top
分类:
其他好文 时间:
2020-11-10 11:29:49
阅读次数:
8