- 博客(8)
- 收藏
- 关注
原创 小心陷入MySQL索引的坑
你可能会遇到这样的情况:这个字段我需不需要加索引?对于这个问题,我们常用的判断手段就是:查询会不会用到这个字段,如果这个字段经常在查询的条件中,我们可能会考虑加个索引。但是如果只根据这个条件判断,你可能会加了一个错误的索引
2021-11-19 15:09:21 1861
原创 从机械硬盘和固态硬盘的结构来看IO
“磁盘”这个词,对于程序员来说并不陌生,我们知道它是一种存储介质,主要用来存储数据的,可以说常用的中间件基本上都离不开它,比如我们常用的MySQL数据库、kafka消息引擎,甚至redis缓存都离不开磁盘。我们在优化某个业务逻辑的时候,经常需要用到缓存,尽量让热数据都从缓存里读取,因为我们知道磁盘是缓慢的,特别在高并发的场景下,我们要保证极少的请求走磁盘IO。不知道你有没有思考过以下问题: 机械硬盘为什么慢? 机械硬盘有多慢? kafka也是写磁盘的,它却挺快的,为什么?..
2021-11-16 08:56:23 42627 48
原创 你真的了解MySQL的order by吗
排序这个词,我的第一感觉是几乎所有App都有排序的地方,淘宝商品有按照购买时间的排序、B站的评论有按照热度排序的...,当然我们今天说的并不是大数据下该如何优雅的排序,如何提升排序性能的问题,我们说一说MySQL中的排序。对于MySQL,一说到排序,你第一时间想到的是什么?关键字order by?order by的字段最好有索引?叶子结点已经是顺序的?还是说尽量不要在MySQL内部排序?事情的起因现在假设有一张用户的朋友表:CREATETABLE`user`(`id`int(...
2021-11-09 09:21:28 5335 10
原创 内存管理:程序是如何被优雅的装载到内存中的
内存作为计算机中一项比较重要的资源,它的主要作用就是解决CPU和磁盘之间速度的鸿沟,但是由于内存条是需要插入到主板上的,因此对于一台计算机来说,由于物理限制,它的内存不可能无限大的。我们知道我们写的代码最终是要从磁盘被加载到内存中的,然后再被CPU执行,不知道你有没有想过,为什么一些大型游戏大到10几G,却可以在只有8G内存的电脑上运行?甚至在玩游戏期间,我们还可以聊微信、听音乐...,这么多进程看着同时在运行,它们在内存中是如何被管理的?带着这些疑问我们来看看计算系统内存管理那些事。内存的交换技术..
2021-11-04 09:29:02 4313 12
原创 redis IO模型的演进
前言redis作为应用最广泛的nosql数据库之一,大大小小也经历过很多次升级。在4.0版本之前,单线程+IO多路复用使得redis的性能已经达到一个非常高的高度了。作者也说过,之所以设计成单线程是因为redis的瓶颈不在cpu上,而且单线程也不需要考虑多线程带来的锁开销问题。然而随着时间的推移,单线程越来越不满足一些应用场景了,比如针对大key删除会造成主线程阻塞的问题,redis4.0出了一个异步线程。针对单线程由于无法利用多核cpu的特性而导致无法满足更高的并发,redis6.0也推出了多线程模式
2021-11-02 21:30:51 1704 3
原创 20张图-常见分布式理论与解决方案
对于分布式系统,最简单的理解就是一堆机器对外提供服务,相比单体服务,它可以承受更高的负载,但是分布式系统也带了一系列问题,比如如何解决某个节点故障的问题?如何解决数据一致性的问题?如何解决数据倾斜的问题?今天通过这篇文章,带大家搞懂和分布式相关的常见理论和解决方案。CAP理论先从定义开始:C(Consistence):一致性,所有的节点访问的是最新的数据副本,这是什么意思呢?我们知道在分布式系统中,为了高可用,往往一个节点会有若干个数据副本,简称Follower节点,比较常见的模式是我们的数据更
2021-11-01 09:24:00 1734 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人