MySQL性能调优(九):InnoDB引擎底层解析(InnoDB的表空间、InnoDB的Buffer Pool)
社区首页 (3582)




请编写您的帖子内容
社区频道(8)
显示侧栏
卡片版式
全部
运营指南
问题求助
交流讨论
学习打卡
社区活动
博文收录
活动专区
最新发布
最新回复
标题
阅读量
内容评分
精选

11
评分
回复


MySQL性能调优(九):InnoDB引擎底层解析(InnoDB的表空间、InnoDB的Buffer Pool)
InnoDB的内存结构和磁盘存储结构图总结如下:其中的Insert/Change Buffer主要是用于对二级索引的写入优化,Undo空间则是undo日志一般放在系统表空间,但是通过参数配置后,也可以用独立表空间存放,所以用虚线表示。
复制链接 扫一扫
分享
交流讨论

11
评分
回复


MySQL性能调优(九):InnoDB引擎底层解析(InnoDB记录存储结构合索引页结构)
在Compact和Redundant行格式中,对于占用存储空间非常大的列,在记录的真实数据处只会存储该列的该列的前768个字节的数据,然后把剩余的数据分散存储在几个其他的页中,记录的真实数据处用20个字节存储指向这些页的地址。File Header针对各种类型的页都通用,也就是说不同类型的页都会以File Header作为第一个组成部分,它描述了一些针对各种页都通用的一些信息,比方说页的类型,这个页的编号是多少,它的上一个页、下一个页是谁,页的校验和等等,这个部分占用固定的38个字节。
复制链接 扫一扫
分享
交流讨论

9
评分
回复


MySQL性能调优(五):MySQL中的索引(B+树索引、哈希索引、全文索引、索引使用、高性能索引创建策略)
能表示的整数范围当然也是依次递增,如果我们想要对某个整数列建立索引的话,在表示的整数范围允许的情况下,尽量让索引列使用较小的类型,比如我们能使用INT就不要使用BIGINT,能使用NEDIUMINT就不要使用INT,这是因为数据类型越小,在查询时进行的比较操作越快(CPU层次)数据类型越小,索引占用的存储空间就越少,在一个数据页内就可以放下更多的记录,从而减少磁盘/0带来的性能损耗,也就意味着可以把更多的数据页缓存在内存中,从而加快读写效率。唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。
复制链接 扫一扫
分享
交流讨论

7
评分
回复


MySQL性能调优(四):MySQL的执行原理(MySQL的查询重写规则)
我们前边说过,内连接的驱动表和被驱动表的位置可以相互转换,而左(外)连接和右(外)连接的驱动表和被驱动表是固定的。这个查询表明我们想要将(SELECT m2FROM e2)这个子查询的结果作为外层查询的IN语句参数,整个查询语句的意思就是我们想找e1表中的某些记录,这些记录的m1列的值能在e2表的m2列找到匹配的值。这里可以把子查询的查询结果当作是一个表,子查询后边的AS t表明这个子查询的结果就相当于一个名称为t的表,这个名叫t的表的列就是子查询结果中的列,比如例子中表t就有两个列:m列和n列。
复制链接 扫一扫
分享
交流讨论

10
评分
回复


MySQL性能调优(七):事务底层和高可用原理(基本语法、redo日志、undo日志)
在聚簇索引中,记录是按照主键值的大小连成了一个单向链表的,如果我们更新了某条记录的主键值,意味着这条记录在聚簇索引中的位置将会发生改变,比如你将记录的主键值从1更新为10000,如果还有非常多的记录的主键值分布在1 ~ 10000之间的话,那么这两条记录在聚簇索引中就有可能离得非常远,甚至中间隔了好多个页面。更新记录时,对于被更新的每个列来说,如果更新后的列和更新前的列占用的存储空间都一样大,那么就可以进行就地更新,也就是直接在原记录的基础上修改对应列的值。往这张表中插入多条记录。
复制链接 扫一扫
分享
交流讨论

11
评分
回复


MySQL性能调优(六):MySQL中的锁(并发事务、锁定读、锁的粒度、意向锁、行锁和表锁、死锁)
IS、IX锁是表级锁,它们的提出仅仅为了在之后加表级别的S锁和X锁时可以快速判断表中的记录是否被上锁,以避免用遍历的方式来查看表中有没有上锁的记录。就是说其实IS锁和IX锁是兼容的,IX锁和IX锁是兼容的。我们画个表来看一下。
复制链接 扫一扫
分享
交流讨论

8
评分
回复


MySQL性能调优(四):MySQL的执行原理(MYSQL的查询成本)
MySQL执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。I/O成本我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。CPU成本读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。对于InnoDB存储引擎来说,页是磁盘和内存之间交互的基本单位。
复制链接 扫一扫
分享
交流讨论

9
评分
回复


MySQL性能调优(四):MySQL的执行原理(单表访问之索引合并、连接查询)
连接的本质就是把各个连接表中的记录都取出来依次匹配的组合加入结果集并返回给用户。所以我们把e1和e2两个表连接起来的过程如下图所示:这个过程看起来就是把e1表的记录和e2的记录连起来组成新的更大的记录,所以这个查询过程称之为连接查询。连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,像这样的结果集就可以称之为笛卡尔积。因为表e1中有3条记录,表e2中也有3条记录,所以这两个表连接之后的笛卡尔积就有3×3=9行记录。
复制链接 扫一扫
分享
交流讨论

11
评分
回复


MySQL性能调优(三):MySQL中的系统库(mysql系统库)
个人主页:道友老李欢迎加入社区:道友老李的学习社区MySQL 性能调优是一个复杂且多维度的过程,下面从数据库设计、查询优化、配置参数调整、硬件优化几个方面为你介绍相关的调优方法。因为权限管理是DBA的职责,所以对于这个部分的表,我们大概了解下即可。在mysql系统库中,MySQL访问权限系统表,放在mysql库中,主要包含如下几个表。• user:包含用户账户、全局权限和其他非权限列表(安全配置字段和资源控制字段)。• db:数据库级别的权限表。该表中记录的权限信息代表用户是否可以使用这些权限来访问被授予
复制链接 扫一扫
分享
交流讨论

8
评分
回复


MySQL性能调优(三):MySQL中的系统库(sys系统库、information_schema)
information_schema提供了对数据库元数据、统计信息以及有关MySQL Server信息的访问(例如:数据库名或表名、字段的数据类型和访问权限等)。该库中保存的信息也可以称为MySQL的数据字典或系统目录。在每个MySQL 实例中都有一个独立的information_schema,用来存储MySQL实例中所有其他数据库的基本信息。information_schema库下包含多个只读表(非持久表),所以在磁盘中的数据目录下没有对应的关联文件,且不能对这些表设置触发器。
复制链接 扫一扫
分享
交流讨论

10
评分
回复


MySQL性能调优(三):MySQL中的系统库(简介、performance_schema)
MySQL有几个系统数据库,这几个数据库包含了MySQL服务器运行过程中所需的一些信息以及一些运行状态信息,我们现在稍微了解一下。这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,算是对MySQL服务器的一个性能监控。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等等信息。这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些是一些描述性信息,称之为元数据。sys。
复制链接 扫一扫
分享
交流讨论

11
评分
回复


MySQL性能调优(二):MySQL体系架构(目录和文件)
使用独立表空间来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:表名.ibd。这个文件是所谓的自扩展文件,也就是当不够用的时候它会自己增加文件大小,当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,我们也可以把系统表空间对应的文件路径不配置到数据目录下,甚至可以配置到单独的磁盘分区上。
复制链接 扫一扫
分享
交流讨论

10
评分
回复


微服务链路追踪:Sleuth&Zipkin
现存问题是什么?Sleuth&Zipkin:SpringCloud中的一个组件,专门链路追踪SkyWalking:Apache组织下的一个开源框架,并且是个顶级项目阿里鹰眼:没玩过~~美团Cat:没玩过~~Sleuth&Zipkin对比SkyWalking相同点,都是链路追踪框架Sleuth是收集信息,Zipkin是图形化展示。SkyWalking一锅端~~SkyWalking的报表展示比Sleuth&Zipkin更丰富。
复制链接 扫一扫
分享
交流讨论

10
评分
回复


拥有故障诊断能力的分布式链路追踪系统:Skywalking
Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。数据存储支持:Elasticsearch、MySQL、H2、TiDB。默认是H2,而且是存到内存。实际我们一般将其存到ES。在默认情况下Skywalking是没有记录我们的业务方法的,如果需要添加业务方法的链路监控我们就需要添加如下的依赖</</</</
复制链接 扫一扫
分享
交流讨论

10
评分
回复


MySQL性能调优(二):MySQL体系架构(连接层、Server层、存储引擎层)
而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率,不需要进行磁盘I/O。MariaDB的目标是社区开发,Bug修复和许多的新特性实际上,可以将MariaDB视为MySQL的扩展集,它不仅提供MySQL提供的所有功能,还提供其他功能。MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必需的,如SQL分析器和优化器等,而存储引擎是底层物理结构和实际文件读写的实现,每个存储引擎开发者可以按照自己的意愿来进行开发。
复制链接 扫一扫
分享
交流讨论

13
评分
回复


MySQL性能调优(一):数据库基础知识(范式化/反范式化设计、数据类型优化、索引、B+Tree)
范式来自英文Normal Form,简称NF。实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。
复制链接 扫一扫
分享
交流讨论

11
评分
回复


【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(十二):SpringSecurity中OAuth2.0的实现(OAuth2.0介绍)
先说OAuth,OAuth是Open Authorization的简写。OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。OAuth2.0是OAuth协议的延续版本,但不向前兼容(即完全废止了OAuth1.0)。
复制链接 扫一扫
分享
交流讨论

8
评分
回复


【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(十一):SpringSecurity基于JWT实现Token的处理
在SpringSecurity中的认证是通过UsernamePasswordAuthenticationFilter来处理的,现在我们要通过JWT来处理,那么我们就需要重写其中几个处理的方法然后就是当客户端提交请求,我们需要拦截请求检查header头中是否携带了对应的Token信息,并检查是否合法。/*** 校验Token是否合法的Filter*/@Override//如果携带错误的token,则给用户提示请登录!resultMap.put("msg", "请登录!");
复制链接 扫一扫
分享
交流讨论

11
评分
回复


【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(十):单点登录原理及JWT实现
官方:JSON Web Token (JWT) is an open standard (RFC 7519HMACRSAorECDSAJSON Web 令牌(JWT)是一种开放标准(RFC 7519) ,它定义了一种紧凑和自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。可以验证和信任此信息,因为它是数字签名的。JWTs 可以使用 secret (使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。
复制链接 扫一扫
分享
交流讨论

11
评分
回复


【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(九):SpringSecurity核心过滤器-SecurityContextPersistenceFilter
首先用户的认证状态Authentication是存储在SecurityContext中的,而每个用户的SecurityContext是统一存储在HttpSession中的。首先来看看在spring-security-core中的SecurityContextHolder,这个是一个非常基础的对象,存储了当前应用的上下文SecurityContext,而在SecurityContext可以获取Authentication对象。基于上面讲解的三者的关系我们在项目中如此来获取当前登录的用户信息了。
复制链接 扫一扫
分享
交流讨论
为您搜索到以下结果: