随笔分类 - MySQL
摘要:背景 业务在执行时,出现报错,日志如下所示: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-onl
阅读全文
摘要:背景 为了优化项目体验,需要记录一下SQL的执行时间以便进行进行优化。 解决 新建SQL表 基于Mybatis Interceptor实现SQL的执行时间的记录,以便进行优化。新建一张sql_log表,用于存储执行的sql语句。 create table `sql_log` ( `id` bigin
阅读全文
摘要:前言 日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息。MySQL中日志类型有很多种,但对于开发来说,最常见和最重要的就是binlog、redolog和undolog。本篇文章主要对这三种日志类型做一个简要的介绍。 前置知识 简单说一下,逻辑日志和物理日志的区别吧 逻辑日志:可
阅读全文
摘要:前言 MySQL在REPEATABLE READ级别解决了幻读问题,解决方案有两种,一种是MVCC版本控制链,具体可以参考这个,MVCC 多版本控制链,还有就是通过加锁的方式。这篇文章简要介绍一下MySQL是如何通过加锁来解决幻读问题的。 准备工作 还是一样,先创建一张表,如下所示: CREATE
阅读全文
摘要:前言 讲解多版本控制之前,先说一下结论吧: MVCC多版本控制链指的就是在使用READ COMMITTD、REPEATABLE READ这两种隔离级别的事务在执行普通的SELECT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能; READ COMMI
阅读全文
摘要:前言 索引相关知识笔记 索引 什么是索引?按照MySQL的官方定义,索引是存储引擎用于快速定位记录的一种数据结构。可能初看到这句话都是懵逼的。举个例子,给你一本《21天学会Java》这本书,现在想让你快速找到多线程相关知识在哪页,你会怎么做?当然是先找到目录,确定一个多线程相关知识在哪个章节,然后看
阅读全文