随笔分类 - mysql
摘要:一、基础概念 不一定的 假如我的表中有一个性别字段,他的区分度肯定是不高的,只有男和女两种。一般情况下,如果表中数据量很大的话,用这个字段查询会导致没办法过滤掉很多数据,就可能没办法发挥索引的效果 但是,如果有一种特殊情况,如男女比例是95:5,那么,这时候,如果我用"女'作为性别的查询条件的话,还
阅读全文
摘要:一、基础概念 MySQL的索引失效是一个比较常见的问题,这种情况一般会在慢SQL发生时需要考虑,考虑是否存在索引失效的问题 在排查索引失效的时候,第一步一定是找到要分析的SQL语句,然后通过 explain 查看他的执行计划。主要关注type(访问类型)、key(实际使用的索引) 和 extra(附
阅读全文
摘要:一、定义 在MySQL中,最左前缀匹配是指在查询中利用索引的最左边的一部分来进行匹配。指你执行查询时, 如果查询条件涉及到了组合索引的前几个列,MySQL 就可以利用这个复合索引来进行匹配。 组合索引,指的就是有多个字段组成的一个联合索引,如 idx_col1_col2_col3 (col1,col
阅读全文
摘要:一、定义 所谓快照读,就是读取快照数据,即快照生成的那一刻的数据,像我们常用的普通的 select 语句在不加锁情况下就是快照读如: select * from xx_table where ... 和快照读相对应的另外一个概念叫做当前读,当前读就是读取最新数据,所以加锁的 select,或者对数据
阅读全文
摘要:一、定义 ReadView 是 InnoDB 中一个至关重要的概念,它是实现MVCC的基础,同时他也是支持不同的事务隔离级别的基础,同时提高系统的并发能力和性能。 它到底是干啥的?简单来说,其实就是一句话:读视图(Read View) 主要来帮我们解决可见性的问题的, 即它会来告诉我们本次事务能看到
阅读全文
摘要:一、什么是事务的2阶段提交 ? 所谓的MySQL事务的2阶段提交,其实是在更新过程中,保证binlog 和 redolog一致性的一种手段。 上图中右侧部分即为2阶段提交。他的过程是: Prepare 准备阶段 这个阶段 SQL 已经成功执行并生成 redolog,处于prepare阶段 BinLo
阅读全文
摘要:一、定义 Redo Log(重做日志) 是 MySQL 数据库中的一种日志文件,用于记录对数据页的修改操作, 它的主要作用是确保事务持久性 和 崩溃恢复能力。 当数据库发生故障时,Redo Log 可以确保已提交的事务不会丢失,即使这些事务的修改尚未写入磁盘。 二、Redo Log 的作用 事务持久
阅读全文
摘要:一、binlog、redolog 和 undolog区别 ? 在MySQL数据库中,binlog、redolog 和 undolog 都是日志类型文件,但它们各自的作用和实现方式有所不同。 binlog主要用来对数据库进行数据备份、崩溃恢复和数据复制等操作, redo log 和 undo log
阅读全文
摘要:一、底层原理 在 MySQL 8.0 中,当使用 limit offset, count 进行分页查询时,如果 offset 非常大(例如 limit 200000, 10),性能会显著下降。 这是因为 MySQL 需要扫描 offset + count 行数据,然后丢弃前 offset 行,只返回
阅读全文
摘要:步骤一、启用慢查询日志 慢查询日志是MySQL记录执行时间超过指定阈值的SQL语句 配置慢查询日志 在MySQL配置文件(如my.cnf或my.ini)中设置以下参数: slow_query_log:是否启用慢查询日志 slow_query_log_file:指定慢查询日志文件的保存位置 long_
阅读全文
摘要:一、基础概念 事务(Transaction)就是把多个对数据库操作的SQL语句打包成一个"不可分割"的整体来执行,这些语句要么都执行成功,要么都不执行失败,MySQL支持事务,本文介绍基于MySQL5.6 1、逻辑架构和存储引擎 如上图所示,MySQL服务器逻辑架构从上往下可以分为三层: (1)第一
阅读全文
摘要:文章目录 1、更新语句在MySQL中是如何执行的 2、重要的内存结构—Buffer Pool缓冲池 3、undo日志文件如何让更新的数据可以回滚 4、更新Buffer Pool缓冲池中的缓存数据 5、Redo Log Buffer如何避免宕机时数据丢失 6、如果还没提交事务时MySQL宕机了怎么办
阅读全文
摘要:一、MVCC 全称 Multi-Version Concurrency Control,即多版本并发控制,用来解决读写冲突的无锁并发控制,可以在发生读写请求冲突时不用加锁解决,这个读是指的快照读(也叫一致性读或一致性无锁读),而不是当前读 当前读:像 select lock in share mod
阅读全文
posted @ 2024-07-16 21:55
jock_javaEE
摘要:Next-Key锁,称为临键锁,它是行锁 + 间隙锁的组合,用来锁定一个范围,并且锁定记录本身锁,它是一种左开右闭的范围,可以用符号表示为:(a,b]。 一、案例1 二、案例2
阅读全文
posted @ 2024-07-16 12:32
jock_javaEE
摘要:怎么解决脏读、不可重复读、幻读这些问题呢?其实有两种可选的解决方案 方案一、读操作利用MVCC(多版本并发控制),写操作进行加锁。 所谓的MVCC,就是生成一个ReadView,通过ReadView找到符合条件的记录版本(历史版本由undo log日志构成)。查询语句只能读到在生成ReadView之
阅读全文
摘要:导言: MySQL和服务器端对接的时候,我们知道一般就是服务器端会打包一些SQL命令去增删改查数据库,这个打包的数据库SQL语句数据包一般为4MB,再大一些就不会被数据库端接收了 但是我们可以自己更改默认大小,当数据包到达数据库端以后,它们会经历那些操作然后返回结果给服务器端呢? 大概有:查询缓存,
阅读全文
posted @ 2024-07-04 10:09
jock_javaEE
摘要:-- 进入数据库 use test; -- 显示所有表 show tables; -- 创建majors表 create table majors(id int, major varchar(255)); -- 定义结束符$ delimiter $$; -- 创建存储过程,定义存储方法 create
阅读全文
摘要:一、面试常见问题 1.什么是垂直/水平拆分模式 2.基于客户端与服务器端实现分表分库区别 3.单表达到多大量开始分表分库 4.数据库分表分库策略有那些 5.ShardingSphere实战分表分库 6.为什么不推荐使用mycat实现分表分库 7.分表分库后查询存在那些优缺点 8.分表分库后如何实现分
阅读全文
摘要:一、三大范式 a: 第一范式(确保每列保持原子性) b: 第二范式(确保表中的每列都和主键相关) c: 第三范式(确保每列都和主键列直接相关,而不是间接相关) 二、索引的分类 1.普通索引 :是最基本的索引,它没有任何限制 2.唯一索引 :与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许
阅读全文

浙公网安备 33010602011771号