1030024444162706_个人页

个人头像照片 1030024444162706
个人头像照片 个人头像照片
16
0
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2024年05月

  • 05.20 09:42:44
    发表了文章 2024-05-20 09:42:44

    ✅Innodb加索引,这个时候会锁表吗?

    MySQL 5.6 引入 Online DDL 技术,允许在创建或删除 InnoDB 索引时不阻塞其他会话,减少了锁定和性能影响。不同 DDL 操作支持不同方式,如 COPY、INSTANT 和 INPLACE,具体见官方文档。虽然 Online DDL 可减少阻塞,但可能在索引构建期间仍有锁定,建议在非高峰时段执行并做好测试和规划。MySQL 5.6 之前的 DDL 操作会导致表锁定,而 Online DDL 旨在减少这种阻塞,但并非所有 DDL 语句都适用。了解各种算法如 COPY、INPLACE 和 INSTANT,以及它们的工作原理,有助于优化 DDL 操作。
  • 05.17 09:29:29
    发表了文章 2024-05-17 09:29:29

    ✅乐观锁与悲观锁如何实现

    在MySQL中,悲观锁通过`SELECT ... FOR UPDATE`在InnoDB引擎实现,需关闭自动提交,确保数据修改时的独占性,防止并发修改。乐观锁则利用CAS机制,通过版本号避免冲突,更新时检查数据是否已变更。悲观锁适合写操作频繁且并发高的场景,乐观锁适合读多写少,效率较高但可能导致更新失败。选择哪种锁取决于业务需求和并发情况。
  • 05.15 09:09:14
    发表了文章 2024-05-15 09:09:14

    ✅什么是排他锁、共享锁、意向锁

    共享锁(读锁)允许并发读取数据,阻止修改;排他锁(写锁)则允许读取和修改,排斥其他锁。在MySQL中,`SELECT ... LOCK IN SHARE MODE;`添加共享锁,`SELECT ... FOR UPDATE;`添加排他锁。意向锁用于多粒度锁定,解决行锁与表锁的并发问题,分为意向共享锁(读)和意向排他锁(写),在事务请求行锁或表锁时自动获取,释放于事务结束。
  • 05.13 09:41:39
    发表了文章 2024-05-13 09:41:39

    MySQL的行级锁锁的到底是什么?

    本文简述了InnoDB的行级锁机制,包括记录锁、间隙锁和Next-Key锁。记录锁锁定索引记录,防止其他事务对相同值的行进行操作;间隙锁锁定索引记录间的间隙,防止插入。Next-Key锁是两者的结合,锁定记录及其前后间隙。在可重复读(RR)隔离级别下,加锁策略涉及Next-Key锁,但会因查询条件退化为行锁或间隙锁。MySQL的加锁机制遵循两个原则和两个优化,例如唯一索引等值查询时退化为行锁。RR级别虽能防止幻读,但也可能降低并发并引发死锁,因此有些场景下会选择读已提交(RC)级别。
  • 05.11 09:14:12
    发表了文章 2024-05-11 09:14:12

    介绍下InnoDB的锁机制?

    InnoDB存储引擎的锁分为共享锁(S锁,读锁)和排他锁(X锁,写锁)。共享锁允许多个事务并发读取数据,不允许修改;排他锁允许读取和修改数据,阻止其他事务加锁。SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE分别用于获取共享锁和排他锁。此外,还有意向锁(IX,IS)用于协调行级锁和表级锁的并发问题,意向锁在事务请求锁时自动获取。记录锁锁定索引记录,插入记录锁用于插入操作前的间隙锁定,而AUTO-INC锁确保自增列的有序性。
  • 05.02 18:26:32
    发表了文章 2024-05-02 18:26:32

    ✅浅聊MVCC?

    MVCC(多版本并发控制)是数据库的一种并发控制方法,通过快照读和当前读实现优雅的并发操作。快照读读取快照数据,而当前读获取最新数据,涉及加锁。Undo Log存储记录的旧版本,用于回滚事务和MVCC的快照读。行记录包含隐式字段如db_trx_id和db_roll_ptr,用于追踪记录版本。Read View解决数据可见性问题,根据事务ID判断记录是否对当前事务可见。MVCC结合Read View和Undo Log确保在可重复读隔离级别下避免不可重复读问题。
  • 04.28 09:28:51
    发表了文章 2024-04-28 09:28:51

    Innodb的RR到底有没有解决幻读?

    InnoDB的Repeatable Read隔离级别结合间隙锁和MVCC能缓解大部分幻读问题,但不完全解决。彻底解决幻读需使用Serializable隔离级别。MVCC通过快照读避免事务内多次查询的幻读,而间隙锁在当前读时锁定间隙,防止新插入记录。然而,当事务中既有快照读又有当前读时,仍可能出现幻读。解决幻读的最佳选择是使用Serializable隔离级别,但可能增加死锁风险。
  • 04.25 09:38:16
    发表了文章 2024-04-25 09:38:16

    ✅为什么MySQL默认使用RR隔离级别?

    Oracle默认隔离级别为RC,MySQL选择RR。Oracle的Read Committed最适合默认,因为它不锁定读取的数据,利于并发。而MySQL的RR级别防止了某些并发问题,特别是考虑到其历史上的statement格式binlog,该格式在READ COMMITTED下可能导致主从数据不一致。MySQL的RR通过行级锁定保证数据一致性,适合有主从复制的环境。
  • 03.25 09:58:05
    发表了文章 2024-03-25 09:58:05

    对线面试官 - 如何理解MySQL的索引覆盖和索引下推

    索引下推是MySQL 5.6引入的优化,允许部分WHERE条件在索引中处理,减少回表次数。例如,对于索引(zipcode, lastname, firstname),查询`WHERE zipcode='95054' AND lastname LIKE '%etrunia%'`时,索引下推先过滤zipcode,然后在索引中应用lastname条件,降低回表需求。索引下推可在EXPLAIN的`Using index condition`中看到。
  • 03.21 15:57:02
    发表了文章 2024-03-21 15:57:02

    ✅到底有没有必要分库分表,如何考量的

    是否需要分库分表取决于数据量、负载、增长速度、查询需求、扩展性、容错性和维护成本。当单表数据量接近2000万时,由于B+树结构,查询效率可能下降。B+树的高度和数据页限制了单表容量,通常保持在3-4层,以保证查询性能。以3层B+树、16KB数据页和1KB/行数据为例,可存约2000万条数据。权衡业务需求和技术因素,适时决定是否分表。
  • 03.18 15:51:28
    发表了文章 2024-03-18 15:51:28

    真正线上索引失效的问题是如何排查的

    MySQL索引失效是一种常见问题,在处理慢查询时经常需要考虑索引失效的可能性。 针对索引失效的排查,关键步骤包括确定需要分析的SQL语句,并通过`EXPLAIN`查看其执行计划。主要关注`type`、`key`和`extra`这几个字段。
  • 03.15 10:49:26
    发表了文章 2024-03-15 10:49:26

    MySQL的JOIN到底是怎么玩的

    在MySQL中,查询操作通常会涉及到联结不同表格,而JOIN命令则在这一过程中扮演了关键角色。在JOIN操作中,我们通常会使用三种不同的方式,分别是内连接、左连接以及右连接。
  • 03.14 11:15:48
    发表了文章 2024-03-14 11:15:48

    日活3kw下,如何应对实际业务场景中SQL过慢的优化挑战?

    在面试中,SQL调优是一个常见的问题,通过这个问题可以考察应聘者对于提升SQL性能的理解和掌握程度。通常来说,SQL调优需要按照以下步骤展开。

2022年10月

  • 10.24 18:03:23
    发表了文章 2022-10-24 18:03:23

    JVM-Java虚拟机内存模型

    Java内存模型在1.8之前和1.8之后略有不同,也就是运行时数据区域,请看如下图:
  • 10.24 18:02:06
    发表了文章 2022-10-24 18:02:06

    自定义注解判断参数为空

    使用Spring的 @Valid和@Validated不好嘛,干嘛要自己造轮子呢.......

2022年07月

  • 发表了文章 2024-05-20

    ✅Innodb加索引,这个时候会锁表吗?

  • 发表了文章 2024-05-17

    ✅乐观锁与悲观锁如何实现

  • 发表了文章 2024-05-15

    介绍下InnoDB的锁机制?

  • 发表了文章 2024-05-15

    ✅浅聊MVCC?

  • 发表了文章 2024-05-15

    Innodb的RR到底有没有解决幻读?

  • 发表了文章 2024-05-15

    ✅为什么MySQL默认使用RR隔离级别?

  • 发表了文章 2024-05-15

    ✅到底有没有必要分库分表,如何考量的

  • 发表了文章 2024-05-15

    对线面试官 - 如何理解MySQL的索引覆盖和索引下推

  • 发表了文章 2024-05-15

    真正线上索引失效的问题是如何排查的

  • 发表了文章 2024-05-15

    MySQL的JOIN到底是怎么玩的

  • 发表了文章 2024-05-15

    日活3kw下,如何应对实际业务场景中SQL过慢的优化挑战?

  • 发表了文章 2024-05-15

    ✅什么是排他锁、共享锁、意向锁

  • 发表了文章 2024-05-15

    MySQL的行级锁锁的到底是什么?

  • 发表了文章 2022-10-24

    JVM-Java虚拟机内存模型

  • 发表了文章 2022-10-24

    自定义注解判断参数为空

  • 发表了文章 2022-07-30

    走进 Redis,让你重新认识 redis。绝不是表面

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息