
mysql
文章平均质量分 91
走出半生仍是少年
再努力一点就够着了
展开
-
【读书笔记】MySQL存储引擎_第八天
性能调优⭐一、选择合适的CPU二、内存的重要性三、硬盘对数据库性能的影响3.1 传统的机械硬盘3.2 固态硬盘四、合理设置RAID4.1 RAID类型4.2 RAID Write Back功能五、操作系统的选择六、不同的文件系统对数据库性能的影响七、选择合适的基准测试工具一、选择合适的CPU当前数据库类型可以分为:OLTP(Online Transaction Processing,在线事务处理)和OLAP(Online Analytical Processing,在线分析处理)。OLAP多用在数据仓库原创 2022-05-18 11:28:48 · 286 阅读 · 0 评论 -
【读书笔记】MySQL存储引擎_第七天
备份与恢复一、概述二、冷备三、逻辑备份四、二进制日志备份与恢复五、热备六、快照备份七、复制7.1 复制7.2 快照 + 复制的备份架构参考一、概述根据备份的方法不同可以将备份分为:Hot Backup(热备)Cold Backup(冷备)Warm Backup(温备)Cold Backup是指备份操作是在数据库停止的情况下,这种备份最为简单,一般只需要复制相关的数据库物理文件即可。Warm Backup备份同样是在数据库运行中运行的。按照备份后文件的内容,备份可以分为:逻辑备份裸文原创 2022-05-17 12:17:02 · 131 阅读 · 0 评论 -
【读书笔记】MySQL存储引擎_第六天
事务一、事务1.1 A(Atomicity)原子性1.2 C(Consistency)一致性1.3 I(Isolation)隔离性1.4 D(Durabolity)持久性二、事务分类2.1 扁平事务2.2 带有保存点的扁平事务2.3 链事务2.4 嵌套事务2.5 分布式事务一、事务事务会把数据库从一种抑制状态转换为另一种一致状态。在数据库提交工作时,可以确保要嘛所有修改都已经保存了,要嘛所有修改都不保存。这也是事务模型区别于文件系统的重要特征之一。InnoDB存储引擎中的事务完全符合ACID的特性。A原创 2022-05-16 12:14:30 · 320 阅读 · 0 评论 -
binlog 和 redolog 的持久化问题
目录binlogredolog问题:没提交的事务redo/binlog也会被持久到磁盘吗?对于 MySQL 来说,只要 binlog 和 redolog 都能正确持久化到磁盘上,就可以保证数据不丢失了。binlogbinlog cache—>page cache—> diskcache 到 cache 是write的过程,page cache到disk是fsyncwrite 和 fsync 的时机,是由参数 sync_binlog 控制的:sync_binlog = 0,每次提交事务转载 2022-05-13 16:36:31 · 421 阅读 · 0 评论 -
【读书笔记】MySQL存储引擎_第五天
锁一、什么是锁二、lock和latch三、InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读3.3 一致性锁定读3.4 自增长与锁四、锁4.1 行锁的3种算法4.2 锁的问题4.3 死锁4.4 锁升级参考一、什么是锁用于管理对共享资源的并发访问操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素,为保证一致性,必须有锁的介入InnoDB存储引擎锁的实现和Oracle数据库非常类似,提供一致性的非锁定读、行级锁支持二、lock和latchlatch要求锁定时间必须非常短,原创 2022-05-12 21:19:10 · 257 阅读 · 0 评论 -
【读书笔记】MySQL存储引擎_第四天
目录索引与算法一、 InnoDB存储引擎索引概述二、 B+树2.1 B+树的插入操作2.2 B+树的删除操作三、B+树索引3.1 聚集索引3.2 辅助索引3.3 B+树索引的分裂四、Cardinality值4.1 什么是Cardinality值参考索引与算法索引太多,应用程序性能会受到影响索引太少,查询性能会受到影响一、 InnoDB存储引擎索引概述InnoDB存储引擎支持以下几种常见的索引:B+树索引全文索引HASH索引注意:InnoDB的哈希索引是自适应的,InnoDB会根原创 2022-05-09 22:22:21 · 341 阅读 · 0 评论 -
【读书笔记】MySQL存储引擎_第三天
文章目录视图一、视图的作用二、视图的用法分区表一、分区概述1.1 查看数据库是否开启分区功能1.2 mysql支持的分区类型二、分区类型2.1 RANGE分区参考资料视图视图是一个命名的虚表,由一个SQL查询来定义,可以当作表使用与持久表不同的是,视图中的数据没有实际的物理存储数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,原创 2022-05-07 21:13:32 · 388 阅读 · 0 评论 -
InnoDB的几个小知识点
目录一、哈希表二、有序数组三、搜索树四、InnoDB的索引模型五、索引下推六、锁6.1 全局锁6.2 表级锁6.3 行锁一、哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。优点:做数据新增时,索引的建立会比较快。适用于等值查询的场景。缺点:在进行数据区间查找时,会比较慢。二、有序数组由数组的特点可以知道,有序数组在等值查询和范围查询的场景的性能非常优秀。在有序数组中利用二分搜索可以快速的找到对应的值。但是当原创 2022-04-30 12:47:31 · 123 阅读 · 0 评论 -
InnoDB 存储引擎中行锁的三种算法
前文提到,对于 InnoDB 来说,随时都可以加锁(关于加锁的 SQL 语句这里就不说了,忘记的小伙伴可以翻一下上篇文章),但是并非随时都可以解锁。具体来说,InnoDB 采用的是两阶段锁定协议(two-phase locking protocol):即在事务执行过程中,随时都可以执行加锁操作,但是只有在事务执行 COMMIT 或者 ROLLBACK 的时候才会释放锁,并且所有的锁是在同一时刻被释放。并且,行级锁只在存储引擎层实现,而对于 InnoDB 存储引擎来说,行级锁又分三种,或者说有三种行级锁算法转载 2022-04-28 20:22:12 · 893 阅读 · 0 评论 -
MySQL 为什么需要 redo log?
目录一、谁的 redo log二、buffer pool三、change buffer四、redo log 的诞生4.1 redo log buffer4.2 redo log 落盘参考资料:一、谁的 redo log学习 redo log,我觉得首先要搞明白一个问题,就是是谁的 redo log?我们知道,MySQL 架构整体上分为两层:Server 层和存储引擎层,如下图:binlog,是 MySQL 自己提供的 binlog,而 redo log 则不是 MySQL 提供的,而是存储引擎 I转载 2022-04-27 20:58:12 · 479 阅读 · 0 评论 -
分布式锁浅析
目录分布式锁浅析前言分布式一致性问题分布式锁需要具备哪些条件分布式锁的实现一.数据库锁1.基于Mysql锁表2.基于数据库表做悲观锁(InnoDB引擎,for update语句)3.基于数据库资源表做乐观锁,用于分布式锁二.缓存锁1.基于setnx、expire两个命令来实现2.RedLock算法三.zookeeper分布式锁总结分布式锁浅析前言随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布转载 2022-04-26 00:11:07 · 1089 阅读 · 0 评论 -
MySQL 事务日志
目录一、二进制日志(Binlog)1. Binlog概念2. Binlog作用3. Binlog 记录过程及刷盘时机4. Binlog 记录格式二、事务日志(Undo log)1. Undo log 概念2. Undo log 作用3. Undo log 记录过程及刷盘时机4. Undo log 总结三、事务日记 (Redo log)1. Redo log 概念2. Redo log 作用3. Redo log 容灾恢复过程4. Redo log 刷盘时机5. Redo log 存储方式6. Redo Lo原创 2022-04-25 16:13:03 · 1776 阅读 · 1 评论 -
【读书笔记】MySQL存储引擎_第二天
目录MySQL中各种类型文件详解一、参数文件1. 参数文件作用2. 参数的定义3. 参数的类型4. 参数的修改二、日志文件1. 日志文件的分类2. error log3. bin log3.1 开启 bin log 功能3.2 查看 bin log 变化过程3.3 binlog 的作用3.4 binlog 文件和 index 文件3.5 binlog 日志流转过程3.6 其他重要参数4. slow query log4.1 开启 slow log 功能相关参数4.2 slow log 输出格式控制参数4.3转载 2022-04-25 12:07:16 · 154 阅读 · 0 评论 -
【读书笔记】MySQL存储引擎_第一天
目录数据库与实例一、思维导图二、笔记1. 区分数据库与实例2. 查看 MySQL 实例3. 配置文件读取顺序InnoDB体系架构一、思维导图1. 后台线程2. InnoDB 内存划分3. 内存管理二、笔记1. 图解InnoDB体系架构2. 后台线程2.1 Master Thread2.2 IO Thread2.3 Purge Thread2.4 Page Cleaner Thread3. 内存3.1 缓冲池3.1.1 缓冲池简介3.1.2 缓冲池相关变量3.2 LRU / Free / Flush List转载 2022-04-24 22:22:38 · 144 阅读 · 0 评论 -
关于命令SHOW ENGINE INNODB STATUS的一些细节
其实该命令主要是在查看insertBuffer的时候用的比较多一、\G和\g的区别\g 在MySQL的sql语句后加上\g,效果等同于加上定界符,一般默认的定界符是分号;mysql> show engine innodb status\g+--------+------+-------------------------------------------------------------------------------------------------------------原创 2022-04-21 00:00:56 · 1987 阅读 · 0 评论 -
MySQL的redo log 、binlog和undolog
redo log部分1、为什么需要redo log?redo log 最主要的作用就是用于数据库异常宕机的恢复工作。假如数据库永远不会发生异常宕机,那么其实根本不需要redo log,因为innodb中有线程不断的做把脏页刷新到磁盘的工作,数据库如果一直不宕机,就不会出现问题。被划掉的线的部分的理解的产生是因为在极客时间《mysql实战45讲》的课程中,老师就是这么说的,所以就直接这么写了。但在后续的学习中,我查阅了《MySQL技术内幕-InnoDb存储引擎的实现》这本书,发现了最开始的理解并不原创 2022-04-18 17:44:18 · 4847 阅读 · 0 评论 -
MySQL-脏页的刷新机制
目录一、MySQL内存结构-缓冲区二、内存管理机制简述三、脏页的刷新机制-checkpoint机制3.1 数据修改和读取只依赖缓冲区行不行?3.2 脏页为什么一定要刷新?3.3 如何刷新呢?3.4 master thread中的定时刷新机制总结一、MySQL内存结构-缓冲区MySQL的缓冲区中有数据页,索引页,插入缓冲等等,这个角度是从页的功能来分类的。本小节从另一个视角关注这些页,如果从 是否被修改过(和磁盘不一致) 这个角度来区分这些页,那么页可以被分为干净的页和脏页。干净页:内存中的数据和磁盘转载 2022-04-18 17:37:40 · 1460 阅读 · 0 评论 -
MySQL各引擎之间的比较
特点MyISAMBDBMemoryInnoDBArchiveNDB内存限制XX√64TBX√事务支持表锁页锁表锁行锁行锁行锁MVCC√√√Geospatial 支持√B树索引√Hash索引√√√全文索引√集群索引√数据缓存√√√索引缓存√√√√压缩数据√√加密数据√√√√√...原创 2022-04-18 16:28:17 · 528 阅读 · 0 评论 -
什么是Mysql的next-key、插入缓冲、二次写、自适应哈希索引和预读
目录楔子间隙锁(Next-Key锁)插入缓冲(Insert Buffer)什么是insert buffer?insert buffer的触发条件?为什么不能是唯一索引?insert buffer的升级版change bufferInsert Buffer的实现辅助索引的插入过程Merged Insert Buffer的时机double write(二次写)什么是double writedouble write原理double write恢复流程doublewrite的负载监控double write工作负载原创 2022-04-18 11:27:28 · 1848 阅读 · 0 评论 -
FTWRL原理与重要性
本文目录概念FTWRL做了什么操作?FTWRL每个操作的影响清理表缓存清理表缓存函数调用会话操作表流程关闭表对象函数调用关闭表导致业务库堵住的典型场景主备切换场景FTWRL与备份有比FTWRL更好的方法吗lock tables for backuplock binglog for backup概念FLUSH TABLES WITH READ LOCK简称(FTWRL),该命令主要用于备份工具获取一致性备份(数据与binlog位点匹配)。由于FTWRL总共需要持有两把全局的MDL锁,并且还需要关闭所有表对转载 2022-04-15 17:29:54 · 1145 阅读 · 0 评论 -
索引下推详解
本文目录概述适用条件工作过程不使用索引条件下推优化时的查询过程使用索引条件下推优化时的查询过程EXPLAN分析示例配置思考其他概述索引条件下推优化(Index Condition Pushdown (ICP) )是MySQL5.6添加的,用于优化数据查询。不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条件。**当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQL服务器将这一部分判断条件传递给存储引擎,然后由存储引擎通转载 2022-04-15 15:36:18 · 8282 阅读 · 3 评论 -
聚簇索引和非聚簇索引的关系
本文目录概念使用聚簇索引的优势聚簇索引需要注意的地为什么主键通常建议使用自增i概念聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶转载 2022-04-15 13:54:09 · 198 阅读 · 0 评论