自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 七、行锁功过:怎么减少行锁对性能的影响?

前面介绍了 MySQL 的全局锁和表级锁,接下来我们就来讲讲 MySQL 的行锁。MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB 是支持行锁的,这也是 MyISAM 被InnoDB 替代的重要原因之一。我们主要来聊聊 InnoDB 的行锁,以及如何通过减少锁冲突来提升业务并发度。

2022-10-31 09:15:00 173 1

原创 六、全局锁和表锁 :给表加个字段怎么有这么 多阻碍?

接下来聊聊 MySQL 的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。**根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。**本节主要先了解下全局锁和表级锁。

2022-10-30 09:00:00 101

原创 五、浅聊索引相关概念

我们先来看一下一个问题:在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句。在 k 索引树上找到 k=3 的记录,取得 ID = 300;再到 ID 索引树查到 ID=300 对应的 R3;在 k 索引树取下一个值 k=5,取得 ID=500;再回到 ID 索引树查到 ID=500 对应的 R4;在 k 索引树取下一个值 k=6,不满足条件,循环结束。

2022-10-30 08:00:00 260

原创 四、深入浅出索引模型

提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下,那我估计你可得找一会儿。同样,对于数据库的表而言,索引其实就是它的“目录”。

2022-10-29 08:00:00 92

原创 事务隔离:为什么你改了我却看不见

提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 100 块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到“事务”这个概念了。简单来说,事务就是要保证一组数据库操作,要么全部成功,要么全部失败。

2022-10-28 08:15:00 188

原创 一条SQL更新语句是如何执行的

例如:前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。那么,一条更新语句的执行流程又是怎样的呢?连接器,执行语句前要先连接数据库,这是连接器的工作;查询缓存,在一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表 T上所有缓存结果都清空。这也就是我们一般不建议使用查询缓存的原因。分析器,分析器会通过词法和语法解析知道这是一条更新语句。优化器,决定要使用 ID 这个索引。执行器,找到这一行,然后更新。redolog(重做日志)和。

2022-10-27 08:00:00 131

原创 一条SQL查询语句是如何执行的

但是全部使用长连接后,你可能会发现,有些时候 MySQL 占用内存涨得特别快,这是因为 MySQL在执行过程中临时使用的内存是管理在连接对象里面的。这就意味着,一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。建立连接的过程通常是比较复杂的,所以建议在使用中要尽量减少建立连接的动作,也就是尽量使用长连接。你可以看到,如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。

2022-10-26 08:00:00 55

原创 【nginx】常用配置

ngix常用配置

2022-08-03 17:28:07 113

原创 【Redis 简介】

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。Redis 优势性能极高 – Redis能读的速度是11

2021-11-24 09:26:50 84

原创 【ORACLE Explain 详解】

ORACLE Explain 详解前言1.什么是执行计划?2.怎么查看执行计划?3.怎么看懂Oracle执行计划3.1explain执行顺序3.2访问数据的方法3.2.1全表扫描(TABLE ACCESS FULL)3.2.2ROWID扫描(TABLE ACCESS BY ROWID)3.2.3访问索引(TABLE ACCESS BY INDEX SCAN)索引唯一扫描(INDEX UNIQUE SCAN)索引范围扫描(INDEX RANGE SCAN)索引全扫描(INDEX FULL SCAN)索引快速全

2021-11-23 19:01:36 26942

原创 arrayLIst-源代码学习

package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;public class ArrayList<E> extends AbstractList<E> ...

2019-08-02 13:56:27 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除