![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 58
分享MySQL索引,MySQL事务等
buzhbuzh
这个作者很懒,什么都没留下…
展开
-
【redis】redis的架构
一文件事件处理器二 redisIO多路复用2.1 IO类型同步阻塞: 调用方阻塞在缓冲区中同步非阻塞(IO多路复用): 查询缓冲区是否有数据,如果没有数据,直接返回。异步非阻塞: 缓冲区如果有数据,会调用调用方留下的接口通知调用方。select函数在Linux中,我们可以使用select函数实现I/O端口的复用,传递给select函数的参数会告诉内核:我们所关心的文件描述符对于每一个文件描述符,我们所关心的状态我们要等待多长时间从select函数返回后,内核告诉我们下面信息原创 2022-04-17 19:39:48 · 756 阅读 · 1 评论 -
【MySQL】慢查询优化
一 SQL的执行过程1、首先查询缓存(这一步骤新版本MYSQL已经不用了)2、解析器进行解析3、优化器进行优化4、执行语句二 慢查询2.1 慢查询的危害慢查询–>连接池打满–>超时异常–>操作失败–>用户重试–>情况继续恶化–>MySQL继续恶化2.2 索引的结构1、每一个数据页都是16K,仅仅叶子节点存储数据。2、多叉树,减少层高,减少IO的次数。3、叶子节点之间是双向链表。B+树的优点:1、减少了层高,减少了IO次数。2.3 慢查询的优化原创 2022-04-17 15:18:41 · 862 阅读 · 0 评论 -
【数据库和缓存】数据库和缓存一致性的保证
一 方案一 缓存不设置失效期写入: 先写入数据库,发送MQ,缓存监听MQ更新缓存。读取: 只读取缓存。二 缓存和数据库操作的解析缓存可以更新、删除、数据库只能更新。所以一共有四个方案:(1)更新数据库、更新缓存(2)更新缓存、更新数据库(3)删除缓存、更新数据库(4)更新数据库、删除缓存二 方案二 先更新缓存、更新数据库(错误方案)线程A更新缓存–>线程B更新缓存–>线程B更新数据库–>线程A更新数据库。这种情况下会导致数据库被错误覆盖。三 方案三 先删除缓存、在原创 2022-04-16 19:48:36 · 465 阅读 · 0 评论 -
【系统设计】数据库和Kafka保证一致性
一 背景写DB后发消息,如何保证两者的一致性性?二 方案2.1 事务(错误方案)写DB和发消息通过事务保证,发消息失败后,数据库进行回滚。这种情况下,如果发消息超时、但是发送成功了,会导致数据库进行回滚、但是消息发送成功了。2.2 引入binlog机制核心思想是将分布式事务简化为本地事务+重试+下游调用方幂等。步骤1、DB写入,写入消息记录表。2、监听消息记录表的binlog,发送数据。3、如果数据发送成功,更新消息记录表。4、定时拉取消息记录表中的数据,发送消息。消息记录表C原创 2022-04-15 10:56:44 · 2451 阅读 · 0 评论