摘要: 转载~ 在之前的文章《InnoDB的存储结构》介绍的InnoDB的存储结构的组成中,我们知道Change Buffer也是用InnoDB内存结构的组成部分。 Change Buffer主要是为了在写入是减少磁盘IO而存在的, 一、什么是什么是Change Buffer 「在《Buffer Pool》 阅读全文
posted @ 2022-08-27 11:44 云扬四海 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 转载~ 在应用系统中,我们为加速数据访问,会把高频的数据放在**「缓存」**(Redis、MongoDB)里,减轻数据库的压力。 在操作系统中,为了减少磁盘IO,引入了**「缓冲池」**(buffer pool)机制。 MySQL作为一个存储系统,为提高性能,减少磁盘IO,同样具有**「缓冲池」** 阅读全文
posted @ 2022-08-27 11:43 云扬四海 阅读(932) 评论(0) 推荐(1) 编辑
摘要: 转载 MySQL中的锁有很多种,各种锁应用在不同的地方。「MySQL依靠锁机制可以让多个事务更新一行数据的时候串行化」。 MySQL中锁总的来说有两种概念:Lock和Latch Latch 称为闩锁(轻量级的锁),因为Latch要求锁定的时间非常短。其目的是用来保证并发线程操作临界资源的正确性,并且 阅读全文
posted @ 2022-08-27 11:42 云扬四海 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 转载~ 在互联网技术圈中有一个说法:「MySQL 单表数据量大于 2000 W行,性能会明显下降」。网传这个说法最早由百度传出,真假不得而知。但是却成为了行业内一个默认的标准。 单表超过2000W行数据一定会导致性能下降吗?我认为是不一定的,虽然说建议单表不超过2000W,但是我不接受它的建议可不可 阅读全文
posted @ 2022-08-27 11:42 云扬四海 阅读(1793) 评论(0) 推荐(0) 编辑
摘要: 转载~ 在上一篇《索引基础知识回顾》中提到索引按照存储结构划分有B-Tree索引、Hash索引、B+Tree索引类型,接下来就学习一下这几种索引结构以及在实际存储引擎中的使用情况 一、Hash索引 「Hash底层是由Hash表来实现的,存储引擎都会【对所有的索引列计算一个哈希码】(hash code 阅读全文
posted @ 2022-08-27 11:40 云扬四海 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 转载~ 数据库优化是一个很常见的面试题,下面就针对这一问题详细聊聊如何进行索引与sql的分析与优化。 一、执行计划(EXPLAIN) MySQL 提供了一个 EXPLAIN 命令,它**「可以对 sql语句进行分析,并输出sql执行的详细信息」**,可以让我们有针对性的优化。例如: explain 阅读全文
posted @ 2022-08-27 11:40 云扬四海 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 转载~ 1、索引简介 1.1 什么是索引 索引是对数据库表中一列或多列的值进行排序的一种结构,可以大大提高MySQL的检索速度。索引在MySQL中也叫做key,当表中的数据量越来越大时,索引对于查询性能的影响非常大。 那索引具体是什么呢,找几个生活中实例比较一下就清晰了: 新华字典:索引就相当于字典 阅读全文
posted @ 2022-08-27 11:39 云扬四海 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 转载~ 幻读【前后多次读取,数据总量不一致】 同一个事务里面连续执行两次同样的sql语句,可能导致不同结果的问题,第二次sql语句可能会返回之前不存在的行。 事务A执行多次读取操作过程中,由于在事务提交之前,事务B(insert/delete/update)写入了一些符合事务A的查询条件的记录,导致 阅读全文
posted @ 2022-08-27 11:35 云扬四海 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 转载~ mysql在并发的情况下,会引起脏读,幻读,不可重复读等一系列的问题,为解决这些问题,引入了mvcc的机制。本文就详细看看mvcc是怎么解决脏读,幻读等问题的。 1、 数据库事务 1.1 事务 事务是操作数据库的最小单元,将【多个任务作为单个逻辑工作单元】执行的一系列数据库操作,他们作为一个 阅读全文
posted @ 2022-08-27 11:34 云扬四海 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 转载~ 日志一般分为逻辑日志与物理日志两类 「逻辑日志」:即执行过的事务中的sql语句,执行的sql语句(增删改)**「反向」**的信息 「物理日志」:mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更 。 「mysql数据库中日志是重要组成部分,记录着数据库运行期间各种状态信息」 阅读全文
posted @ 2022-08-27 11:33 云扬四海 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 转载~ 一、数据文件的组成 innodb数据逻辑存储形式为表空间,而每一个独立表空间都会有一个.ibd数据文件,ibd文件从大到小组成: 一个ibd数据文件-->Segment(段)-->Extent(区)-->Page(页)-->Row(行) 表空间(Tablesapce) 表空间,用于存储多个i 阅读全文
posted @ 2022-08-27 11:32 云扬四海 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 转载~ 一、InnoDB线程模型的组成 在Innodb存储引擎中,后台线程的主要作用是**「负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据」**。此外它会将已经修改的数据文件刷新到磁盘文件中,保证在发生异常的情况下,Innodb能够恢复到正常的运行状态。 「InnoDB存储引擎是多线程 阅读全文
posted @ 2022-08-27 11:31 云扬四海 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 转载~ 「MySQL存储引擎最大的特点就是【插件化】,可以根据自己的需求使用不同的存储引擎,innodb存储引擎支持行级锁以及事务特性,也是多种场合使用较多的存储引擎。」 当官方的存储引擎不足以满足时,我们通过抽象的API接口实现自己的存储引擎。 抽象存储引擎API接口是通过抽象类handler来实 阅读全文
posted @ 2022-08-27 11:30 云扬四海 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 转载~ 一、MySQL存储引擎概述 「数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据」。不同的存储引擎提供不同的存储机制、索引、锁等功能。许多数据库管理系统都支持多种不同的数据引擎。 在关系数据库中数据的存储是以表的形式存储的,所以**「存储 阅读全文
posted @ 2022-08-27 11:29 云扬四海 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 转载~ MySQL用了很久,但是一直也是工作的使用,对于MySQL的知识点都比较零散碎片,一直也没有整体梳理过,趁着最近不忙,梳理一下相关的知识点。 一、 MySQL的起源 MySQL是一个开源的关系数据库管理系统。原开发者为瑞典的 MySQL AB公司,2008 年AB公司被Sun公司收购,并发布 阅读全文
posted @ 2022-08-27 11:28 云扬四海 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 转载~ 我们一般都不会去操作数据库本身,「而是通过SQL语句调用MySQL,由MySQL处理并返回执行结果」。那么SQL语句是如何执行sql语句的呢? Sql语句执行过程图解: 从图中可以看出sql的执行基本上分为五步: 「建立连接(Connectors&Connection Pool)」 「查询缓 阅读全文
posted @ 2022-08-27 11:26 云扬四海 阅读(192) 评论(0) 推荐(0) 编辑